Bootstrap

分布式系统详解(Apache Hive 入门-简介)

                分布式系统详解(Apache Hive 入门-简介)

 

一、Hadoop中MapReduce所面临的问题:    

1、人员学习成本太高

2、项目周期要求太短

3、MapReduce实现复杂查询逻辑开发难度太大

二、Hive是什么?

Apache hive 数据仓库软件有助于使用SQL读取,编写和管理驻留在分布式系统中的大型数据集,结构可以投影到已经存在于仓库中的数据,命令行工具和JDBC驱动被提供来进行链接用户到Hive。

三、Hive的优缺点

优点:

1,可扩展性,横向扩展,Hive可以自由的扩展集群规模,一般情况下不需要重启服务

2,延展性。Hive支持自定义函数,用户可以根据自己的需求来实现自己的函数

3,良好的容错性。可以保障即使节点出现问题,sql仍可完整执行。

缺点:

1,Hive不支持记录级别的增删改操作。但是可以通过查询生成新表或者将查询结果导入文件中。

2,Hive查询延迟很严重,因为MapReduce Job的启动过程消耗很长时间,所以不能用在交互查询中。

3,Hive不支持事物。主要用作OLAP(联机分析处理)

四、Hive的架构原理

从图中我们可以看到,Hive是基于Hadoop的。

将Sql语句发送到Driver,进行解析,生成语义表达式树。对解析后的进行编译。

Metastore元数据,(表明、库名、字段、字段类型、分区、创建时间等)

五、Hive的组件

5.1,Driver

实现了session hander,在JDBC/ODBC接口上实现了执行和获取信息的API。

5.2 Compiler

该组件用于对不同查询表达式做解析查询,语义分析,最终根据metastare查询到的表和分区元数据生成一个execution Plan。

5.3 execution Egine

该组件会执行由Compiler创建的Execution。其中plan从数据结构上看是一个DAG,该组件会管理Plan的不同stage与组件中执行这些plan之间的依赖。

5.4 MetaStore

Hive的MetaStore组件是Hive的元数据集中存放地,该组件存储了包括变量表中的列和列类型等结构化的信息以及数据仓库中的分区信息(列和列类型信息、读取数据时必要的序列化和反序列化信息,数据在存储在HDFS信息)

MetaStore包括两部分:MetaStore service 和Metastore database

  • MetaStore service 是建立在后台数据存储介质(HDFS),并且可以和hive service 进行交互的服务组件。
  • Metastore database 介质就是关系数据库,例如hive默认的嵌入式磁盘数据库derby,还有mysql数据库。

六、Hive的工作流程图

Step No.操作
1Execute Query
Hive接口,如命令行或Web UI发送查询驱动程序(任何数据库驱动程序,如JDBC,ODBC等)来执行。
2Get Plan
在驱动程序帮助下查询编译器,分析查询检查语法和查询计划或查询的要求。
3Get Metadata
编译器发送元数据请求到Metastore(任何数据库)。
4Send Metadata
Metastore发送元数据,以编译器的响应。
5Send Plan
编译器检查要求,并重新发送计划给驱动程序。到此为止,查询解析和编译完成。
6Execute Plan
驱动程序发送的执行计划到执行引擎。
7Execute Job
在内部,执行作业的过程是一个MapReduce工作。执行引擎发送作业给JobTracker,在名称节点并把它分配作业到TaskTracker,这是在数据节点。在这里,查询执行MapReduce工作。
7.1Metadata Ops
与此同时,在执行时,执行引擎可以通过Metastore执行元数据操作。
8Fetch Result
执行引擎接收来自数据节点的结果。
9Send Results
执行引擎发送这些结果值给驱动程序。
10Send Results
驱动程序将结果发送给Hive接口。

 

七、Hive的安装方式:

Hive有三种元数据存储。

Hive将元数据存储在RDBMS中,有三种模式可以连接到数据库:

Single User Mode :此模式连接到一个In-memory的数据库Derby,一般用于Unit Test。

Multi User Mode:通过网络连接到一个数据库中,是最经常使用的模式。

Remote Server Mode:用于非Java客户端访问元数据库,在服务端启动一个MetaStoreServer。客户端利用Thrift协议通过MateStoreServer访问元数据库。

欢迎订阅关注公众号(JAVA和人工智能)

                                                           获取更多免费书籍、资源、视频资料 

       

文章超级链接:

 1,分布式系统详解--基础知识(概论)

 2,分布式系统详解--基础知识(线程)

 3,IDEA和Eclipse的比较

 4,IntelliJ IDEA(最新)安装-破解详解--亲测可用

 5,scala-构造器-辅助构造器-伴生对象-单例对象

 6,【由浅入深】爬虫技术,值得收藏,来了解一下~

 7,Akka 简介及简单原理

 8,Spark-集群安装、部署、启动、测试(1.6.3)稳定版

 9,Spark-RDD简介以及算子实例

;