Hive原理分析原理分析
Front
在开始了解hive之前,需要了解一些知识或者概念,可以更好的理解hive实现原理
MapReduce
Google MapReduce是Google基于函数式编程map(映射),reduce(化简)提出的一种分布式编程模型,在模型中隐藏了
分布式集群的实现细节,交由框架底层进行实现,能够使程序员在不了解分布式并行编程的情况下,将自己书写的程序在分布
式系统上运行
编程模型
Map: 将输入的一对键值对转换为一组中间键值对 (k1,v1) -> list(k2,v2)
Reduce: 将所有键相同的中间键值对合并,得到关于那个键的结果 (k2,list(v2)) -> (k2,v3)
举个栗子
以一个很简单的WordCount为例子,假设给定大量数据的文档,计算其中每个单词出现的次数,下面是伪代码
更多的栗子
计算 URL 访问频率:Map 函数处理日志中 web 页面请求的记录,然后输出(URL,1)。Reduce 函数把相同URL 的 value 值都
累加起来,产生(URL,记录总数)结果。
倒转网络链接图:Map 函数在源页面(source)中搜索所有的链接目标(target)并输出为(target,source)。 Reduce 函数把
给定链接目标(target)的链接组合成一个列表,输出(target,list(source))。
倒排索引:Map 函数分析每个文档输出一个(词,文档号)的列表,Reduce 函数的输入是一个给定词的所有 (词,文档号),
排序所有的文档号,输出(词,list(文档号))。所有的输出集合形成一个简单的倒排索引,它 以一种简单的算法跟踪词在文档
中的位置。
每个主机的检索词向量:检索词向量用一个(词,频率)列表来概述出现在文档或文档集中的最重要的一些 词。Map 函数为每一
个输入文档输出(主机名,检索词向量),其中主机名来自文档的 URL。Reduce 函数接收给 定主机的所有文档的检索词向量,
并把这些检索词向量加在一起,丢弃掉低频的检索词,输出一个最终的(主机名,检索词向量)。
系统实现