|NO.Z.00003|——————————|BigDataEnd|——|Hadoop&Hive.V03|——|Hive.v03|课程大纲|数据仓库工具Hive|产生背景|

一、Hive概述
~~~     [课程内容介绍及数据仓库工具Hive的产生背景]
~~~     [数仓工具Hive与RDBMS对比]
~~~     [数仓工具Hive的优缺点]
~~~     [数仓工具Hive的架构原理]
### --- Hive概述

~~~     HDFS => 海量数据的存储
~~~     MapReduce => 海量数据的分析和处理
~~~     YARN => 集群资源的管理和作业调度

二、Hive产生背景
### --- 直接使用MapReduce处理大数据,将面临以下问题:

~~~     - MapReduce 开发难度大,学习成本高(wordCount => Hello World)
~~~     - Hdfs文件没有字段名、没有数据类型,不方便进行数据的有效管理
~~~     - 使用MapReduce框架开发,项目周期长,成本高
### --- Hive是基于Hadoop的一个数据仓库工具,

~~~     可以将 结构化的数据文件 映射为一张表(类似于RDBMS中的表),并提供类SQL查询功能;
~~~     Hive是由Facebook开源,用于解决海量结构化日志的数据统计。
~~~     Hive本质是:将 SQL 转换为 MapReduce 的任务进行运算
~~~     底层由HDFS来提供数据存储
### --- 可以将Hive理解为一个:
~~~     将 SQL 转换为 MapReduce 任务的工具数据仓库(Data Warehouse)
~~~     是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,
~~~     主要用于管理决策。(数据仓库之父比尔·恩门,1991年提出)。

~~~     # 数据仓库的目的:构建面向分析的、集成的数据集合;为企业提供决策支持
~~~     数据仓库本身不产生数据,数据来源与外部
~~~     存储了大量数据,对这些数据的分析和处理不可避免的用到Hive
三、Hive和RDBMS对比
### --- Hive和RDBMS对比

~~~     由于 Hive 采用了类似SQL 的查询语言 HQL(Hive Query Language),
~~~     因此很容易将Hive 理解为数据库。其实从结构上来看,
~~~     Hive 和传统的关系数据库除了拥有类似的查询语言,再无类似之处。
~~~     # 查询语言相似。HQL <=> SQL 高度相似
~~~     由于SQL被广泛的应用在数据仓库中,因此,
~~~     专门针对Hive的特性设计了类SQL的查询语言HQL。
~~~     熟悉SQL开发的开发者可以很方便的使用Hive进行开发。
~~~     # 数据规模
~~~     Hive存储海量数据;RDBMS只能处理有限的数据集;由于Hive建立在集群上并可以利用
~~~     MapReduce进行并行计算,因此可以支持很大规模的数据;而RDBMS可以支持的数据规模较小。

~~~     # 执行引擎
~~~     Hive的引擎是MR/Tez/Spark/Flink;RDBMS使用自己的执行引擎Hive中大多数查询的
~~~     执行是通过 Hadoop 提供的 MapReduce 来实现的。而RDBMS通常有自己的执行引擎。
~~~     # 数据存储
~~~     Hive保存在HDFS上;RDBMS保存在本地文件系统 或 裸设备Hive 的数据都是存储在 
~~~     HDFS 中的。而RDBMS是将数据保存在本地文件系统或裸设备中。

~~~     # 执行速度
~~~     Hive相对慢(MR/数据量);RDBMS相对快;Hive存储的数据量大,在查询数据的时候,
~~~     通常没有索引,需要扫描整个表;加之Hive使用MapReduce作为执行引擎,这些因素都会导致较高的
~~~     延迟。而RDBMS对数据的访问通常是基于索引的,执行延迟较低。当然这个低是有条件的,即数据规模
~~~     较小,当数据规模大到超过数据库的处理能力的时候,Hive的并行计算显然能体现出并行的优势。
~~~     # 可扩展性
~~~     Hive支持水平扩展;通常RDBMS支持垂直扩展,对水平扩展不友好Hive建立在Hadoop之上,
~~~     其可扩展性与Hadoop的可扩展性是一致的(Hadoop集群规模可以轻松超过1000个节点)。
~~~     而RDBMS由于 ACID 语义的严格限制,扩展行非常有限。目前最先进的并行数据库 Oracle 在理论上的扩展能力也只有100台左右。

~~~     # 数据更新
~~~     Hive对数据更新不友好;RDBMS支持频繁、快速数据更新Hive是针对数据仓库应用设计的,
~~~     数据仓库的内容是读多写少的。因此,Hive中不建议对数据的改写,所有的数据都是在加载的时候确定
~~~     好的。而RDBMS中的数据需要频繁、快速的进行更新。
四、Hive的优缺点
### --- Hive的优点

~~~     学习成本低。Hive提供了类似SQL的查询语言,开发人员能快速上手;
~~~     处理海量数据。底层执行的是MapReduce 任务;
~~~     系统可以水平扩展。底层基于Hadoop;
~~~     功能可以扩展。Hive允许用户自定义函数;
~~~     良好的容错性。某个节点发生故障,HQL仍然可以正常完成;
~~~     统一的元数据管理。元数据包括:有哪些表、表有什么字段、字段是什么类型
### --- Hive的缺点

~~~     HQL表达能力有限;
~~~     迭代计算无法表达;
~~~     Hive的执行效率不高(基于MR的执行引擎);
~~~     Hive自动生成的MapReduce作业,某些情况下不够智能;
~~~     Hive的调优困难;
五、Hive架构
### --- Hive架构

~~~     # 用户接口 CLI(Common Line Interface):
~~~     Hive的命令行,用于接收HQL,并返回结果; JDBC/ODBC:是指Hive的java实现,
~~~     与传统数据库JDBC类似;WebUI:是指可通过浏览器访问Hive;
~~~     # Thrift Server
~~~     Hive可选组件,是一个软件框架服务,允许客户端使用包括Java、C++、Ruby和其他很多种语言,
~~~     通过 编程的方式远程访问Hive;

~~~     # 元数据管理(MetaStore) 
~~~     Hive将元数据存储在关系数据库中(如mysql、derby)。
~~~     Hive的元数据包括:数据库名、表名及类型、字段名称及数据类型、数据所在位置等;
~~~     # 驱动程序(Driver)
~~~     解析器 (SQLParser) :使用第三方工具(antlr)将HQL字符串转换成抽象语法树(AST);
~~~     对AST进行语法分析,比如字段是否存在、SQL语义是否有误、表是否存在;
~~~     编译器 (Compiler) :将抽象语法树编译生成逻辑执行计划;
~~~     优化器 (Optimizer) :对逻辑执行计划进行优化,减少不必要的列、使用分区等;
~~~     执行器 (Executr) :把逻辑执行计划转换成可以运行的物理计划;

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(22)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示