认识Hive

来源:互联网 发布:好家长软件 编辑:程序博客网 时间:2024/05/21 05:18

什么是Hive:

  • Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL类查询功能。
Hive的认识:
*  Hive基于:        1):处理的数据储存在HDFS        2):分析数据底层的实现MapReduce        3):执行程序运行的YARN*  构建在Hadoop之上的数据仓库:        1):使用HQL作为查询借口        2):使用HDFS存储        3):使用MapReduce计算*  本质是:将HQL转换成MapReduce程序
个人理解:
就是吧结构化的数据映射成一张表,然后进行类型SQL语言的数据查询。        HQL底层的MapReduce:

把数据转换成MapReduce用的是Engine机制。

Hive架构理解认识:

用户接口:Client
CLI(hive shell) JDBC/ODBC(java访问hive)WEBUI(浏览器访问hive)
元数据:Metastore
元数据包括:表名,表所属的数据库(默认是default),表的拥有者,列/分去字段,表的类型(是否是外部表),表的    数据所在目录等。    默认存储在自带的derby数据库中,推介使用采用MySQL储存Metastore       * derby是嵌入式数据库,只支持单用户
Hadoop:
使用HDFS进行存纯,使用MapReudce进行计算
驱动器:Driver:
包含:           解析器,编译器,优化器,执行器     解析器:          将Sql字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr。对AST进行语法分析,比如表         是否存在,字段是否存在,Sql语义是否有误(比如select中被判定为集合的字段在group by中是否出现)。     编译器:         将AST编译生成逻辑执行计划            优化器:         对逻辑执行计划进行优化     执行器:          吧逻辑执行计划转换成运行的物理计划,对于HIVE来说,就是MR/TEZ/Spark
个人理解架构:
CLI就是我们写的命令行,通过JDBC这种方式访问HIVE,导入元数据,元数据储存有表名,所数据库(默认default),表的     拥有者,列明区字段,是否存在外部表,最重要的是java,驱动器。。         1):解析器;               解析sql语法,看表是否存在,字段是否存在,sql语句有没有错误,               解析hql语句         2) :编译器;               就是逻辑执行计划                 把hql翻译成MapReduce         3):优化器;               然后进行优化               优化sql语句         4):执行器              运行在yarn平台之上      然后驱动器做完以后,就会用hadoop底层的的MapReduce来计算,下一步储存到HDFS,所以,HIVE就是基于hadoop之上。
Hive优点与使用场景:
操作借口与采用Sql语法,提供快速的开发的能力(简单,容易上手)   避免了去写MapReudce,减少开发人员的学习成本。   统一的元数据管理,可与impala/spark等共享元数据   易扩展(HDFS+MapReduce):可以扩展集群规模,支持自定义函数)   离线的数据处理:比如,日志分析,海量结构化数据离线分析   Hive执行延迟比较高,因此hive常用与数据分析的,对实用性要求不高的场合   Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive执行延迟比较高。


原创粉丝点击