Hive简介及架构

  • Hive简介

    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将类sql语句转换为MapReduce任务进行运行。

  • Hive的本质

    将HQL转化为MapReduce程序。

  • SQL——>MapReduce原理

  • Hive的优点

  1. 简单容易上手:提供了类SQL查询语言HQL ;
  2. 可扩展性:为超大数据集设计了计算/扩展能力(MR作为计算引擎,HDFS作为存储系统)一般情况下不需要重启服务Hive可以自由的扩展集群的规模;
  3. 提供统一的元数据管理;
  4. 延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数;
  5. 容错性:良好的容错性,节点出现问题SQL仍可完成执行;
  6. Hive的优势在于处理大数据,对于处理小数据没有优势;
  7. Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
  • Hive的缺点

  1. hive的HQL表达能力有限:

     (1)迭代式算法无法表达,比如pagerank;

     (2)数据挖掘方面不擅长,比如kmeans;

    2. hive的效率比较低:

     (1)hive自动生成的mapreduce作业,通常情况下不够智能化

     (2)hive调优比较困难,粒度较粗

     (3)hive可控性差

  • Hive架构

用户接口:Client CLI(hive shell 命令行),JDBC/ODBC(java访问hive),WEBUI(浏览器访问hive);

元数据(Meta store):元数据包括:表名,表所属数据库(默认是default) ,表的拥有者,列/分区字段,表的类型(是否是外部表),表的数据所在目录等,默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore

Hadoop 使用HDFS进行存储,使用MapReduce进行计算;

驱动器(Driver)

(1) 解析器(SQL Parser):将SQL字符转换成抽象语法树AST,这一步一般使用都是第三方工具库完成,比如antlr,对AST进行语法分析,比如表是否存在,字段是否存在,SQL语句是否有误;

(2) 编译器(Physical Plan):将AST编译生成逻辑执行计划;

(3) 优化器(Query Optimizer):对逻辑执行计划进行优化;

(4) 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划,对于Hive来说,就是MR/Spark。

  • Hive和SQL数据库比较

查询语言

HQL

SQL

数据存储位置

HDFS

Local FS

数据格式

用户自定

系统决定

数据更新

hive(0.14) 后支持

支持

索引

执行

MapReduce

Executor

执行延迟

可扩展性

数据规模

发布了118 篇原创文章 · 获赞 42 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_41490561/article/details/104557228