数据仓库学习笔记二

1.认识Hive

1.1.Hive产生背景

①.现有数据基础框架大多数基于关系型数据库和SQL查询

②.让用户将数据文件从一个现有的数据架构转移到Hadoop上来

1.2.Hive是什么

①.Apache Hive (以下简称Hive) 是一个由Apache软件基金会维护的开源项目,由Facebook贡献。其前身是Apache Hadoop中的一个子项目,现已成为Apache顶级项目。Hive是一个基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,同时可以将SQL语句转化为MapReduce作业进行运行。Hive具有一系列功能,可以进行数据提取、转化和加载,是一种可以查询和分析存储在Hadoop中的大规模数据的工具。总之,Hive 被设计成能够非常方便地进行大数据的汇总、即席查询(ad-hoc)与分析的工具。

②.数据仓库与数据库,它们的主要区别是数据仓库适合联机分析处理(On-Line AnalyticalPocessing, OLAP), 通常是对某些主题的历史数据进行分析:而数据库适合联机事务处理(on-Lme Tamsestoen Proccsnggn OLIP),通常是在数据库联机时对业务数据进行添、加、删除、修改、查询等操作

1.3.Hive在Hadoop生态系统的位置

Hive可以将存储在HDFS中的结构化数据文件映射成类似关系型数据库表,并接收类SQL语句,将其转化为MapReduce程序去执行。所以Hive必须依赖Hadoop而存在

1.4.Hive的特点及优势

Hive提供了一种比MapReduce更简单、更优的数据开发方式,使得越来越多的人开始使用Hadoop,甚至有很多Hadoop用户首选使用的大数据I具便是Hive. Hive具有以下特点:
①.HQL 与SQL有着相似的语法,大大提高了开发效率。
②.Hive 支持运行在不同的计算框架上,包括YARN、Tez、 Spark、 Flink 等。Hive支持HDFS与HBase上的ad-hoc.
③.Hive支持用户自定义的函数、脚本等。
④.Hive支持Java数据库连接(Java Database Connectivity, JDBC)与开放数据库连接(Open Database Connectivity, ODBC)驱动,建立了自身与ETL、BI 工具的通道。
在生产环境中,Hive 具有以下优势:
可扩展: Hive可以自由扩展集群的规模,一般情况下无须重启服务。
可延展: Hive 支持用户自定义函数,用户可根据自己的需求来编写自定义函数。
可容错:Hive良好的容错性使得节点出现问题时SQL仍可完成执行。
总之,当我们使用Hive时,操作接口采用类SQL语法,提高了快速开发的能力,避免了编写复杂的MapReduce任务,减少了开发人员的学习成本,而且扩展很方便。

2.Hive架构设计

2.1.Hive架构

Hive架构包含3个部分。
①. Hive客户端(Hive Clients)。Hive为不同类型应用程序提供不同的驱动,使应用程序可通过Java、Python 等语言连接Hive并进行与RDBMS类似的SQL查询操作。对于Java应用程序,Hive 提供了JDBC驱动;对于其他应用程序,Hive 提供了ODBC驱动。
②. Hive 服务端(Hive Services)。 客户端必须通过服务端与Hive交互,服务端主要包括CLI、Hive Server、Hive Web Interface、Driver、 Metastore 等组件。
③. Hive 存储与计算(Hive Storage and Computing)。Hive 主要通过元数据存储数据库和Hadoop集群进行数据的存储与计算。Hive 的元数据使用RDBMS存储,Hive 的数据存储在HDFS中,大部分数据查询由MapReduce完成。

2.2.Hive服务端组件详解

Hive服务端主要由以下3部分构成。

(1)用户接口

①CLI:控制台命令行方式。CLI是最基础的连接方式,使用"hive"命令连接。CLI启动时会同时启动一个Hive 副本,相当于“hive --service cli"。
②Hive Server:包括HiveServerl和HiveServer2两种,其中HiveServerl在新版中被删除,所以推荐使用HiverSrver2。 HiveServer2 支持一个新的命令行Shell, 其称为Beeline。Beeline 是一个命令行形式的JDBC客户端,用于连接HiveServer2。 Hive 0.11版中加入了Beeline, 在生产环境中推荐使用Beline连接Hive.
③HWI (Hive Web Interface):通过浏览器访问Hive.默认端口: 999

(2)驱动(Driver) 组件

该组件包括编译器(Compiler)、 优化器(Optimizer) 和执行引擎(Executor), 它的作用是将HQL语句进行解析、编译优化,并生成执行计划,最后调用底层的MapReduce计算框架。

(3)元数据服务(Metastore) 组件

Hive中的数据分为两部分,一部分是真实数据,一般存放在HDFS中:另一部分是真实数据的元数据,单独存储在关系型数据库中,如Derby、MySQL等。元数据用于存储Hive中的数据库、表、表模式、目录、分区、索引以及命名空间等信息,是对真实数据的描述。元数据会不断更新变化,所以不适合存储在HDFS中。实现任何对Hive真实数据的访问均须首先访问元数据。元数据对于Hive十分重要,因此Hive把Metastore服务独立出来,从而解耦Hive服务和Metastore服务,以保证Hive运行的健壮性。
 

3.Hive工作流程

3.1.Hive工作流程中各步骤的详细描述(重点)

执行查询: Hive 接口(如俞令行或UI)通过发送查询驱动程序执行查询

获取计划:在驱动程序帮助下查询编译器,并分析查询检查语法、查询计划及查询要求

获取元数据:编译器发送元数据请求至Metasore

发送元数据: Metastore 发送元数据至编译器以响应之

发送计划:编译器检查查询要求,并重新发送查询计划至驱动程序:至此,查询解析与编译完成

执行计划:驱动程序发送执行计划至执行引擎

执行任务:执行任务的过程是完成一个MapReduce工作的过程。执行引擎发送作业至JobTackerJobTracker再把作业分配到TaskTracker:在TaskTracker中查询计划将执行MapReduce工作。同时,执行引擎可以通过Metastore执行元数据操作

获取结果:执行引擎接收来自数据节点的结果

发送结果:执行引擎发送结果至驱动程序

发送结果:驱动程序发送结果至Hive接口



4. Hive适用场景


4.1.适用场景


Hive适用于非结构化数据的离线分析统计场合。

Hive的执行延迟比较高,因此适用于对实时性要求不高的场合。

Hive的优势在于处理大数据,因此适用于大数据( 而非小数据)处理的场合

4.2. 场景技术特点


为超大数据集设计了计算与扩展功能。

支持SQL like查询语言。

支持多表的join操作。

支持非结构化数据的查询与计算。

提供数据存取的编程接口,支持JDBC、ODBC.
 

  • 28
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值