(1)Hive的作用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hive的作用与特征
1.Hadoop家族产品
Apache Hadoop:是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架构。
截止到2013年,根据统计,Hadoop家族产品已经达到20个。
2.Hive的定义
Apache Hive:是基于Hadoop的一个数据仓库工具,它提供了一系列的工具,可以将结构化的数据文件映射为一张数据库表,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop 中的大规模数据的机制。
Hive 定义了简单的类SQL 查询语言,称为HQL,它允许熟悉SQL 的用户查询数据。通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。同时,这个语言也允许熟悉MapReduce 开发者的开发自定义的mapper 和reducer 来处理内建的mapper 和reducer 无法完成的复杂的分析工作。
Hive最大的特点就是提供了类SQL的语法,封装了底层的MapReduce过程,让有SQL基础的业务人员,也可以直接利用Hadoop进行大数据的操作,就是这一特点,解决了原数据分析人员对于大数据分析的瓶颈。
3.设计特征
Hive 是一种底层封装了Hadoop 的数据仓库处理工具,使用类SQL 的HiveQL 语言实现数据查询,所有Hive 的数据都存储在Hadoop 兼容的文件系统(例如,Amazon S3、HDFS)中。Hive 在加载数据过程中不会对数据进行
任何的修改,只是将数据移动到HDFS 中Hive 设定的目录下,因此,Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。Hive 的设计特点如下。
● 支持索引,加快数据查询。
● 不同的存储类型,例如,纯文本文件、HBase 中的文件。
● 将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间。
● 可以直接使用存储在Hadoop 文件系统中的数据。
● 内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作。
● 类SQL 的查询方式,将SQL 查询转换为MapReduce 的job 在Hadoop 集群上执行。
4.Hive的体系结构
主要分为以下几个部分:
用户接口
用户接口主要有三个:CLI,Client 和WUI。其中最常用的是CLI,Cli 启动的时候,会同时启动一个Hive 副本。Client 是Hive 的客户端,用户连接至Hive Server。在启动Client 模式的时候,需要指出Hive Server 所在节点,并且在该节点启动Hive Server。WUI 是通过浏览器访问Hive。
元数据存储
Hive 将元数据存储在数据库中,如mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
解释器、编译器、优化器、执行器
解释器、编译器、优化器完成HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS 中,并在随后由MapReduce 调用执行。
下图列出了Hive的知识点。
Hive 的运行:Hive 是基于Hadoop 构建的,简单地说就是一套Hadoop 的访问接口,Hive 本身并没有太多的东西,运行上面注意下面几个问题就行了。
∙1. 使用单独的数据库存储元数据
∙2. 定义合理的表分区和键
∙3. 设置合理的bucket数据量
∙4. 进行表压缩
∙5. 定义外部表使用规范
∙6. 合理的控制Mapper, Reducer数量