Hive是什么?就从这儿开始学习。。。。
Hive是建立在Hadoop hdfs上的数据仓库基础架构。
Hive可以用来数据抽取转换加载(ETL)。
Hive定义了简单的类SQL查询语句,称为HQL。
Hive是SQL解析引擎,它将SQL语句转移成M/R Job,然后在Hadoop上执行。
Hive的表其实就是HDFS的目录,Hive的数据对应相应目录下的文件。
Hive使用场景:非实时的海量数据分析/挖掘/建模
Hive本质是将SQL转换为MapReduce程序
那我就说哈本质过程,掌握本质就能掌握其核心思想。
当我们在控制台输入一个HQL(类似sql),接下来hive处理转换成mapreduce,然后提交到hadoop运行计算,最后将结果返回到控制台。
上面这个过程你就感觉自己在操作关系数据库一样,根本不需要底层是怎么实现的。就是这么简单自信。
真正想理解hive必须要理解mapreduce。
因为他的本质是跑的mapreduce程序,所以他将不适合实时任务处理。这就是和impala本质区别。
虽然impala和hive都是建立在hadoop(hdfs)之上的。但是:impala没有使用 MapReduce进行并行计算,而hive依赖MapRduce.
虽然MapReduce是非常好的并行计算框架,但它更多的面向批处理模式,而不是面向交互式的SQL执行。与 MapReduce相比:Impala把整个查询分成一执行计划树,而不是一连串的MapReduce任务,在分发执行计划后,Impala使用拉式获取 数据的方式获取结果,把结果数据组成按执行树流式传递汇集,减少的了把中间结果写入磁盘的步骤,再从磁盘读取数据的开销。Impala使用服务的方式避免每次执行查询都需要启动的开销,即相比Hive没了MapReduce启动时间.
说的有点多了。。。想起一点就记录一些。这样也不错。