Hive简述
Hive:
facebook最初研发出来处理海量社交数据以及机器学习
海量数据的处理。关系型数据库不能满足数据的存储以及分析的功能。
MapReduce编程的不便性
HDFS上的文件缺少Schema
所以Hive是非关系型的,但hive不能称之为数据库,它相当于一个仓库,是一个基于Hadoop的数据仓库,可以通过类似sql语句来对数据进行读写处理MapReduce的问题,管理(通过管理元数据实现)
hive数据仓库软件为分布式存储的大数据集上的读、写、管理提供很大方便,同时还可以用SQL语法在大数据集上查询。
1、是一种易于对数据实现提取、转换、加载的工具(ETL)的工具。可以理解为数据清洗分析展现。
2、它有一种将大量格式化数据强加上结构的机制。
3、它可以分析处理直接存储在hdfs中的数据或者是别的数据存储系统中的数据,如hbase。
4、查询的执行经由mapreduce完成。
5、hive可以使用存储过程
6、通过Apache YARN和Apache Slider实现亚秒级的查询检索。
总的来说:
可扩展
Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。
延展性
Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
容错
良好的容错性,节点出现问题SQL仍可完成执行。
Hive的架构:
基于hadoop的数据仓库工具
存储依赖HDFS
计算依赖MR、tez、spark
元数据管理依赖MySQL
hive将HQL转换为MR(或spark)的作业
适合做离线计算
说明:Jobtracker是hadoop1.x中的组件,它的功能相当于: Resourcemanager+AppMaster
TaskTracker 相当于: Nodemanager + yarnchild
用于连接客户端:cli,jdbc/odbc,web,GUI
thriftServer:第三方服务器(jdbc/odbc)
metastore:hive的元数据(库名,表名,字段名,字段类型,分区,分桶,创建时间,创建人等)
driver:解析器,将hql语句生成抽象表达式树
编译器:对hql语句进行词法,语法,语义的编译(此时需要联系元数据),编译完成后会生成一个有向无环的执行计划
优化器:将执行计划进行优化,减少不必要的列,使用分区等
执行器:将优化后的执行计划交给hadoop的mapreduce来执行
Hive和hadoop的关系
hive是基于hadoop的
hive本身没有存储和分析的能力,它就相当于在hadoop上套了一层壳
hive的存储是基于hdfs(hbase),hive的分析依赖于mapreduce