漫画揭秘Hadoop MapReduce | 轻松理解大数据
大数据
AdamBloom
Product Marketer & Entrepreneur
7人收藏 4945次学习

漫画揭秘Hadoop MapReduce | 轻松理解大数据

翻译:1KE主编 沙丁鱼

如需转载请联系1KE市场部 shuang@1ke.co

你可知道Hadoop的名字最初来源于国外的一种儿童玩具——小象玩偶?

Hadoop初印象

(画外音:尼玛这发音怎么是这样的,听不懂没关系,先往下看文字版吧,然后配合着就当看动画片了)

近年来被谷歌、亚马逊、雅虎和Facebook这些大公司力捧的大数据分析工具Hadoop,频频登上《商业周刊》、《福布斯》、《哈佛商业评论》等重量级杂志。与传统的企业数据分析工具相比,Hadoop究竟为何赚足了人气?

我们得从Hadoop的工作原理说起。

传统的数据分析工具其高层架构都大同小异,硬件服务器的三大主要功能就是:提供用户界面、运行业务逻辑层、存储数据。Hadoop与过去这些工具的不同之处在于,它更像是一个批量处理器,用于将数据从数据库(database)转换到数据仓库(data warehouse)。

Hadoop提取某个数据块,做适当处理之后存放在某处以便其他数据工具继续使用,只不过Hadoop做的这件事面对的是大数据。 Hadoop背后的“算法工程师”需要24小时实时计算上千万个网页的内容,将其分类、组合、按优先度排序、编入索引。

大规模数据处理依赖于分布式计算(技术)——由大量的机器同时处理数据,这是在时间压力下作出的必然选择。 Hadoop将数据处理分布到几十、几百甚至上千台商用服务器。这些服务器节点组成机架(rack),再由机架组成集群(cluster),在高速网络结构中互相连接。

Hadoop工作原理

简单来说,Hadoop由两个主要部分构成。第一部分用于管理数据,我们用Hadoop分布式文件系统(Hadoop Distributed File System, HDFS)拆分数据,存放到不同的节点,复制和管理。第二部分,也就是Mapreduce,作用是在各个节点上并行处理数据,计算任务结果。

1. HDFS如何工作

和你的笔记本电脑一样,Hadoop也有一套文件系统,只不过它的特殊之处在于能够把文件分配给不同台机器。HDFS将信息组织到统一的一套文件分区和存储分区中用以节点计算。在Apache分布中,文件分区是64MB,而存储分区则是512KB。绝大部分节点都是数据节点,其中也有一些数据的副本。命名节点用于追踪各个文件分区的地址,就如同图中的大楼是几幢几单元第几间一样。

2. MapReduce如何工作

从名字可以看出,MapReduce分为两个步骤:Map(映射)和Reduce(归约)。我们假设你手中有一份数据文件,是在过去24小时中某个大数据博客上出现的所有条目,我们需要统计Hadoop, Big Data和Greenplum这三个单词分别出现了几次。首先, 这份文件会在HDFS中被拆分。接下来,所有参与到的节点对应的本地数据集都要进行一遍映射计算,分析关键词出现了几次。Map阶段结束之后,每个节点输出一个键值对列表。在下图中,这些键值对列表中都包含三个条目。例如,左边标号为1的盒子(节点)输出的键值对是:

<Big Data, 7>

<GreenPlum, 5>

<Hadoop, 4>

映射完成之后,输出值会被传输到其他节点作为Reduce的输入。在开始Reduce之前,键值对会被重新整理并打乱次序。在归约阶段,上述子条目相加得到每个单词的单一条目。在下图中,我们可以看到Reduce的输出:big data加起来是19次,GreenPlum加起来是17,Hadoop加起来是19。现在,我们可以利用这些信息做点别的事儿了——创建报告、推送提醒、可视化数据等等。需要注意的是,在上述例子中我们的任务是加和计算,但在现实情况中任务可以是多种多样的,它可以运行任何函数。

3. 管理Hadoop任务

在介绍Reduce部分时我们提到了任务,事实上它也是MapReduce框架的核心组件,负责管理上面提到的所有事情。如果我们手动拆分1TB的数据,复制到1000台不同的机器上,开启每一项任务,要完成这些事你花一辈子的时间还远远不够,更何况还容易出错。因此,我们需要用一套机制来让上述步骤变得自动化。在Hadoop中,这一整套过程就叫做一个“任务”(job),任务追踪器(Job tracker)负责将任务分解为不同的作业,并将这些作业调度到各个节点上执行。Job tracker追踪所有参与节点,监控进程、汇总数据流、处理报错。作业追踪器(Task trackers)执行作业并将结果报告给任务追踪器。正是采用了上述自动化机制,Hadoop才能更高效地将任务并行调配到大规模的数据节点上,并在有更多节点参与时及时扩大规模。

好了,动手开始第一个Hadoop Project!

通过以上五张漫画,我们解释了Hadoop与传统数据分析工具的不同,以及Hadoop工作的三个核心组件:HDFS,MapReduce和Job tracker。

作为商业团队的领导人,你需要始终明确两件事:来源和需求。来源:什么样的数据需要被分析?需求:你想让MapReduce为你做出什么样的分析?接下来就把一切交给开发人员吧!

更多资源:

加入1KE学习俱乐部

1KE学习俱乐部是只针对1KE学员开放的私人俱乐部