本节目标
- 了解Hive的作用和优势
- 了解Hive的基本架构
- 了解Hive的数据类型
- 了解Hive的数据库和表操作
- 理解Hive的数据分区
- 理解Hive的数据分桶
数据的作用有两个:操作型记录的保存和分析型决策的制定
- 操作型记录的保存意味着企业通常不必维护历史数据,只需要修改数据以反映最新的状态;
- 分析型决策意味着企业需要保存历史的数据,从而可以更精准的来评估现有状况进行决策;
4.1.2 数据仓库概念 数据仓库是一个面向主题、集成的、非易失的、随时间变化的、用来支持管理人员决策的数据集合,数据仓库中包含了粒度化的企业数据 。
数据仓库的主要特征是: 主题性 、 集成性 、 非易失性 、 时变性。
数据仓库处理数据的流程:
分析需求,确认数据源,ETL处理,汇总/整合,数据建模,分析展现4.1.3 数据仓库的体系结构 数据仓库的体系结构通常包含4个层次:数据源、数据存储和管理、数据服务以及数据应用 。
- 数据源: 数据仓库的数据来源,包括外部数据、现有业务系统和文档资料等 。
- 数据存储和管理: 为数据提供的存储和管理,包括数据仓库、数据集市、数据仓库监视、运行与维护工具和元数据管理等 。
- 数据服务: 为前端工具和应用提供数据服务,包括直接从数据仓库中获取数据提供给前端使用,或者通过
OLAP服务器为前端应用提供更为复杂的数据服务 。 - 数据应用: 直接面向最终用户,包括数据工具、自由报表工具、数据分析工具、数据挖掘工具和各类应用系统 。
- 为业务部门提供准确及时的报表
- 为管理人员提供更强的分析能力
- 为数据挖掘和知识发现奠定基础
- 无法满足快速增长的海量数据存储需求
- 无法有效处理不同类型的数据
- 计算和处理能力不足
4.2.1 概述 Hive是建立在Hadoop之上的一种数仓工具 。该工具的功能是将结构化、半结构化的数据文件映射为一张数据库表,基于数据库表,提供了一种类似
SQL 的查询模型(HQL),它具有最小的学习曲线,用于访问和分析存储在Hadoop文件中的大型数据集 。Hive本身并不具备存储功能,其核心是将HQL转换为MapReduce程序,然后将程序提交到Hadoop集群中执行 。特点:
- 提供简单和优化的模型,编码少于MR(提供了类似
SQL的查询语言HiveQL,两者都是基于SQL92标准,底层会自动转化为MapReduce),使得精通SQL却不了解Java编程的人也能很好地进行大数据分析; - 灵活性高,可以自定义用户函数(UDF)和存储格式;
Hive支持在不同的计算框架上运行:mapreduce,tez(比MapReduce的性能快了50倍),有超大的数据设计的计算和存储能力,集群扩展容易;Hive支持在HDFS和HBase上进行临时查询数据 。- 用于ETL和BI工具的成熟JDBC和ODBC驱动程序;
- 统一的元数据管理,可以
presto/impala/sparksql等共享数据; - 执行延迟高,不适合做数据的实时处理,但适合做海量数据的离线处理;
Hive的产生背景主要有两个:- 使用成本高: 使用
MapReduce直接处理数据时,需要掌握Java等编程语言,学习成本较高,而且使用MapReduce不容易实现复杂查询;- 建立分析型数仓的需求:
Hive支持类SQL的查询以及支持自定义函数,可以作为数据仓库的工具 。Hive利用 HDFS存储数据,使用MapReduce查询分析数据 。将SQL转换为MapReduce程序,从而完成对数据的分析决策 。4.2.3 当前Hive的主流版本 选择任何技术的版本要考虑哪些方面:功能,稳定性,可维护性,兼容性
- 策略:靠考虑不新不九的稳定版本
- 当前Hive的主流版本有两个
- hive-1.x 其中使用比较多的是hive-1.2.x的版本,最后一个稳定版本是hive-1.2.2,如果使用这个版本,你的hive将来没法集成spark.
- hive-2.x 现行主流的hive使用版本,现行稳定的hive-2.x版本中,我们选择使用hive-2.3.6
- HDP(商业版大数据环境)2.6.3内置的hive为1.2.1
- 为了支持schema和数据分区等功能,Hive将元数据保存在关系型数据库中 。
- 默认情况下,hive将元数据保存在关系型数据库中 。
- 基于缺省Derby的非常适合测试
- 用户之间不共享架构,因为每个用户都有自己的嵌入式Derby实例
- 存储在
metastore_db目录中,该目录位于启动配置单元的目录中
- 可以轻松切换另一个sql安装,如MySQL,Oracle 。
- 作为Hive的一部分的HCatalog将Hive元数据暴露给其他生态系统 。
- Hive3.0以上的版本,元数据是默认保存在Hbase里面,解决了HA的问题 。
Note:解释一下经常遇到的
hiveServer1、hiveServer2?早期版本的hiveServer(即hiveServer1)因使用Thrift接口的限制,不能处理多于一个客户端的并发请求,在hive-0.11.0版本中重写了hiveServer代码(hiveServer2),支持了多客户端的并发和认证,并且为开放API客户端如JDBC、ODBC提供了更好的支持 。- 用户结构主要有三个:
CLI(command line interface)命令行,JDBC和Web UI,CLI是开发过程中常用的接口,在hive server2 提供新的命令beeline,使用sqlline语法 - metaStore:hive的元数据结构描述信息库,可选用不同的关系型数据库来存储,通过配置文件修改、查看数据库配置信息 。
- Driver:解释器、编译器、优化器完成
HQL查询语句从语法分析、词法分析、编译、优化以及查询计划的生成 。生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行 。 - Hive的数据存储在HDFS中,大部分的查询,计算由MapReduce完成
- select * from emp;->操作不会执行mapreduce
- select count(*) from emp; -> 执行mapreduce操作
- 有两种工具:Beeline和命令行(CLI)
- 有两种模式:命令行模式和交互模式
熟悉HDP-Hive环境
Hive Interface – 其他使用环境Hive Web Interface (As part of Apache Hive)--进入Hive clihive -e :执行指定的SQL语句hive -f :执行指定的SQL脚本hive -e "show databases”echo "show databases" > demo.sql && hive -f demo.sql && rm -f demo.sql--进入hive beelinehive --service hiveserver2 开启服务beeline -u jdbc:hive2://hadoop5:10000/db10 -n root -- 使用beeline连接hiveCopy to clipboardErrorCopied Hive Interface - 其他使用环境- Hive Web Interface(As part of Apache Hive)
- Hue(Cloudera)
- Ambari Hive View(hortonworks)
- Zeppelin - Hive
- JDBC/ODBC (ETL工具,商业智能工具,集成开发环境)
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
