MapReduce

1)按照Hadoop公司的品质定义,鉴定水源的等级,分为1等、2等、3等和4等。1等水最优,4等水最次。2)按照鉴定的等级,将4种水源用于不同类型的饮料生产。1等水用于生产纯净水、2等水用于生产矿泉水,3等水用于生产果汁,而4等水则用于生产碳酸饮料。为了做到这两点,Hadoop公司从某自动化公司引进了最先进的自动检测仪Mapper和最先进的组装生产线Reducer。Mapper仪器可以自动对每小桶水样本进行快速检测,然后将其分为1、2、3和4等级,并贴上相应的标签。被贴上标签的小水桶们,通过传送带分别传输到相应的Reducer,Reducer会将同一等级的小水桶中的水源合并,汇成超级大桶用于最终的生产。图4-1体现了水源分级的整个流程。其中,Reducer生产线1既可以生产纯净水,也可以生产矿泉水,因此被鉴定为1和2等级的水都会传送到这条组装生产线。这个过程体现的就是MapReduce框架的基本思想。


image.png

这种将任务切分、并行操作、最后合并结果的方法,适用于很多分布式处理的场合。例如,我们要统计大量文档集合中的每个单词的词频,可以先将文章内容切分,让多个分词器同时进行统计,然后合并单词出现的次数。图4-2体现了统计词频的大致流程,其中Mapper负责将每行的文本进行切词,Reducer负责将切出来的词进行汇总统计。还有一个常见的案例就是对于大量的数据进行去重,将不同的数据对象切分,让多个处理器根据去重时所比对的字段散列值,归拢数据并存入散列表,然后合并后除去重复的部分。图4-3体现了银行账务交易处理的大致流程,在该流程中,会根据账号进行去重,Mapper负责将交易记录中的顾客账号部分提取出来,而Reducer负责将同样的账号归并在一起以除去冗余。


image.png
image.png

1)数据分割(Data Splitting):将数据源进行切分,并将分片发送到Mapper上。例如对文档的每一行作为最小的处理单元。
2)映射(Mapping):Mapper根据应用的需求,将内容按照键-值的匹配,存储到散列结构<k1,v1>中。例如,将每行进行单词分词,然后生成<北京,1>这样的配对,表示“北京”这个词出现了一次。
3)洗牌(Shuffling):将键-值的配对不断地发给Reducer进行归约。如果存在多个Reducer,还会使用分配(Partitioning)对Reducer进行选择。例如,“北京”、“上海”、“武汉”这种属于地名的单词,专门交给负责统计地点的Reducer来完成。
4)归约(Reducing):分析接收到的一组键值配对,如果是键内容相同的配对,就将它们的值合并。例如,一共收到12个<北京,1>,{<北京,1>,<北京,1>,…,<北京,1>},那么就将其合并为<北京,12>。最终“北京”这个单词的词频就统计为12。5)为了提升洗牌阶段的效率,可以选择减少发送到归约阶段的键-值配对。具体做法是在第2步和第3步之间,加入合并(Combining)的过程,在每个Mapper节点上先进行一次本地的归约。然后只将合并的结果发送到洗牌和归约阶段。

image.png

介绍了HDFS中的3个概念:命名节点(Name Node)、次要命名节点(SecondaryName Node)和数据节点(Data Node)。命名节点维护着系统的大量元数据,负责管理文件系统的命名空间和控制外部的访问。次要命名节点和命名节点通信,根据配置定期地获取其上的元数据快照,达到备份和灾备的目的。而那些存储数据的节点则称为数据节点。理解了MapReduce的原理之后,就可以将Hadoop的系统架构补充完整了,这里增加了另外两个主要概念:工作跟踪节点(Job Tracker)和任务跟踪节点(Task Tracker)。工作跟踪节点是应用程序和Hadoop之间的纽带。一旦将代码提交到Hadoop集群上,工作跟踪节点就会执行计划,包括决定处理哪些文件、为不同的任务分配节点,以及监控所有任务的运行。如果任务失败,工作跟踪节点将根据配置打开重试机制,自动重启任务。不过所分配的节点也可能是不同的。每个Hadoop集群通常只有1个工作跟踪的守护进程,它和命名节点的守护进程一起运行在主节点上,监测MapReduce作业的整个执行过程。而任务跟踪节点(Task Tracker)管理各个任务在每个从节点上的运行情况,负责运行有工作跟踪节点分配的单项任务。因此,任务跟踪节点会和工作跟踪节点不断通信,实现“心跳”机制[插图],用于监控。如果工作跟踪节点没有在指定的时间内收到某个任务踪节点的“心跳”消息,它会假定该任务跟踪节点已经死机,然后将任务重新分配到集群中的其他节点上。这也是第3章中提到的容错性和可靠性。由于工作跟踪节点和命名节点都是主节点,因此它们通常都部署在同样的服务器上。而任务跟踪节点和数据节点都是从节点,因此它们也可以部署在同样的服务器上。综合所有这些概念,可以得到如图4-5所示的Hadoop基本架构。

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容