首页  

hive数据仓库     所属分类 bigdata 浏览量 1338
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、
集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。


Hive是构建在Hadoop之上的数据仓库
依赖分布式文件系统HDFS存储数据,Hive表是HDFS的一个文件目录,一个表对应一个目录
依赖分布式并行计算模型MapReduce处理数据
定义了类似SQL的查询语言 HiveQL,将HiveQL翻译成MapReduce作业在Hadoop上执行


Hive Facebook开发 2008年Facebook将Hive项目贡献给Apache 

Hive系统架构

用户接口模块 包括CLI、HWI、客户端方式(JDBC、ODBC、Thrift Server)
驱动模块(Driver)包括编译器、优化器、执行器等,负责把HiveSQL语句转换成一系列MapReduce作业
元数据存储模块(Metastore)独立的关系型数据库( derby 或MySQL)

访问Hive的最常用的方式就是通过CLI进行访问。
CLI的设计使其不便于通过编程的方式进行访问。
CLI是胖客户端,其需要本地具有所有的Hive组件,包括配置,同时需要一个Hadoop客户端及其配置。
可做为HDFS客户端,MapReduce客服端以及JDBC客服端进行使用。

工作原理 执行步骤

第1步:由Hive驱动模块中的编译器对用户输入的SQL语言进行词法和语法解析,将SQL语句转化为抽象语法树的形式
第2步:抽象语法树的结构仍很复杂,不方便直接翻译为MapReduce算法程序,因此,把抽象语法书转化为查询块
第3步:把查询块转换成逻辑查询计划,里面包含了许多逻辑操作符
第4步:重写逻辑查询计划,进行优化,合并多余操作,减少MapReduce任务数量
第5步:将逻辑操作符转换成需要执行的具体MapReduce任务
第6步:对生成的MapReduce任务进行优化,生成最终的MapReduce任务执行计划
第7步:由Hive驱动模块中的执行器,对最终的MapReduce任务进行执行输出

input
parser   将SQL转换成抽象语法树
semantic analyzer  抽象语法树转换成查询块
logical plan build  逻辑查询计划生成
logical optimizer  逻辑查询计划优化
physical plan build
physical optimizer
output


hive vs Impala

相同点
使用相同的数据存储,支持HDFS和HBase
使用相同的元数据
采用相同的SQL语法、ODBC驱动程序和用户接口

不同点
Hive适合于长时间的批处理查询分析,Impala适合于实时交互式SQL查询
Hive依赖MapReduce计算框架  Impala 使用 mpp  Massively Parallel Processing  ,参考 Google Dremel

Impala 由 Cloudera 开发 ,提供SQL语义,查询存储在Hadoop的HDFS和HBase上的PB级大数据。
Impala采用与商用并行关系数据库类似的分布式查询引擎 


Impala的目的不在于替换现有的MapReduce工具
把Hive与Impala配合使用效果最佳
可以先使用Hive进行数据转换处理,之后再使用Impala在Hive处理后的结果数据集上进行快速的数据分析



Hive适用场景
海量数据的存储处理
数据挖掘
海量数据的离线分析

不适用场景
复杂的机器学习算法
联机交互式实时查询



hive总结
Hive是一个构建于Hadoop顶层的数据仓库工具,主要用于对存储在 Hadoop 文件中的数据集进行数据整理、特殊查询和分析处理。
Hive在某种程度上可以看作是用户编程接口,本身不存储和处理数据,依赖HDFS存储数据,依赖MapReduce处理数据。

优点

解决了传统关系数据库在大数据处理上的瓶颈。适合大数据的批量处理。
充分利用集群的CPU计算资源、存储资源,实现并行计算。
Hive支持标准SQL语法,免去了编写MR程序的过程,减少了开发成本。

缺点

Hive的HQL表达能力有限:有些复杂运算用HQL不易表达。
Hive效率低:Hive自动生成MR作业,通常不够智能,HQL调优困难。

针对Hive运行效率低下的问题,促使人们去寻找一种更快,更具交互性的分析框架。 
SparkSQL 的出现则有效的提高了Sql在Hadoop 上的分析运行效率。

上一篇     下一篇
redis slow log

git恢复删除的文件

git branch 和 git checkout常见用法

Zookeeper在HBase中的应用

elasticsearch中的DocValues

zab协议