1.1认识Hive
1.什么是Hive
Hive是一个基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,同时可以将SQL语句转化成MApReduce作业进行运行。
2.Hive的特点与优势
特点:
HQL与SQL有着相似的语法,大大提高了开发效率。
Hive支持运行不同的计算框架,包括YARN,Tez,Spark,Flink等。
Hive支持HDFS与HBase上的ad-hoc。
Hive支持用户自定义的函数,脚本等。
Hive支持Java数据库连接与开放数据库连接驱动,建立了自身与ETL,BI工具的通道。
优势:
可扩展:Hive可以自由扩展集群的规模,一般情况下无需重启服务器。
可延展:Hive支持用户自定义函数,用户可以根据自己的服务需求来编写自定义函数。
可容错:Hive良好的容错性使得节点出现问题时SQL乃可以完成执行。
1.2 Hive架构设计
1.HIve架构图
(1)Hive 客户端(Hive Clients)
(2)Hive 服务端(Hive Services)
(3)Hive 存储与计算(Hive Storage and Computing)
1.3 Hive工作流程
1.执行查询:Hive接口(如命令行或UI)通过发送查询驱动程序执行查询。
2.获取计划:在驱动程序帮助下查询编译器,并分析查询语法,查询计划以及查询要求。
3.获取元数据:编译器发送元数据请求至Metastore。
4.发送元数据:Metastore发送元数据至编译器以响应之。
5.发送计划:编译器检查查询要求,并重新发送查询计划至驱动程序;至此,查询解析与编译完成。
6.执行计划:驱动程序发送执行计划至执行引擎。
7.执行任务:执行任务的过程是完成一个MapReduce 工作的过程。执行引擎发送作业至JobTracker,JobTracker 再把作业分配到 TaskTracker;在 TaskTracker 中查询计划将执行 MapReduce工作。同时,执行引擎可以通过Metastore 执行元数据操作。
8.获取结果:执行引擎接收来自数据节点的结果。。
9.发送结果:执行引擎发送结果至驱动程序。
10.发送结果:驱动程序发送结果至 Hive接口。
1.4 Hive 适用场景
1.适用场景:
Hive 适用于非结构化数据的离线分析统计场合。
Hive 的执行延迟比较高,因此适用于对实时性要求不高的场合。
Hive的优势在于处理大数据,因此适用于大数据(而非小数据)处理的场合。
2.场景技术特点:
为超大数据集设计了计算与扩展功能。
支持 SOLlike 查询语言。
支持多表的join 操作。
支持非结构化数据的查询与计算。
提供数据存取的编程接口,支持JDBC、ODBC。