一、SQL语句转换成MapReduce作业的基本原理
join的实现原理:sql获取的数据先通过map函数处理,转换成key-value形式,接着shuffle为归并的过程,将key相同的归并到一起,最后通过Reduce函数处理。(关于MapReduce与shuffle的详解请看MapReduce篇)
二、
Hive中SQL查询转换成MapReduce作业的过程
•当用户向Hive输入一段命令或查询时,Hive需要与Hadoop交互工作来完成该操作:
•驱动模块接收该命令或查询编译器
•对该命令或查询进行解析编译
•由优化器对该命令或查询进行优化计算
•该命令或查询通过执行器进行执行
作业图:
第2步:抽象语法树的结构仍很复杂,不方便直接翻译为MapReduce算法程序,因此,把抽象语法书转化为查询块
第3步:把查询块转换成逻辑查询计划,里面包含了许多逻辑操作符
第4步:重写逻辑查询计划,进行优化,合并多余操作,减少MapReduce任务数量
第5步:将逻辑操作符转换成需要执行的具体MapReduce任务
第6步:对生成的MapReduce任务进行优化,生成最终的MapReduce任务执行计划
第7步:由Hive驱动模块中的执行器,对最终的MapReduce任务进行执行输出
Impala数据仓库:
•
Impala
是由
Cloudera
公司开发的新型查询系统,它提供
SQL
语义,能查询存储在
Hadoop
的
HDFS
和
HBase
上的
PB
级大数据
,
在性能上比
Hive
高出
3~30
倍
•
Impala
的运行需要依赖于
Hive
的元数据
•
Impala
是参照
Dremel
系统进行设计的
•
Impala
采用了与商用并行关系数据库类似的分布式查询引擎
,可以
直接与
HDFS
和
HBase
进行交互
查询
•
Impala
和
Hive
采用相同的
SQL
语法、
ODBC
驱动程序和用户接口
总结得出:与Hive属于同一类型的数据仓库,现配合与Hive使用,性能较高,弥补Hive本身存在的缺陷,在这里就不细讲了