mapreduce 人话_MapReduce的假人

mapreduce 人话

继续介绍Hadoop组件,我们将介绍MapReduce组件。 MapReduce是一个一直是LISP编程模型的概念。 但是在进入MapReduce之前,让我们先从一个示例开始,了解MapReduce的工作原理。

给定几个句子,编写一个计算单词数的程序。

mapreduce 人话_MapReduce的假人

现在,解决此问题的传统思路是读取一个单词,检查该单词是否是停用词之一,如果不是,请在HashMap中将该单词添加为关键字,并将其值设置为出现次数。 如果在HashMap中找不到该单词,则添加该单词并将其值设置为1。如果找到该单词,则在HashMap中将值和该单词递增相同。

现在,在这种情况下,程序正在以串行方式处理句子。 现在,假设是否需要计算句子中的单词数,而不是句子。 如此数量的数据进行串行处理非常耗时。 因此,问题是我们还有其他算法可以用来加快处理速度。

让我们处理相同的问题并将其分为两个步骤。 第一步,我们每个句子都取一个句子,并映射出该句子中的单词数。

mapreduce 人话_MapReduce的假人

单词映射完成后,让我们继续下一步。 在此步骤中,我们将两个句子中的地图组合(减少)为一个地图。

mapreduce 人话_MapReduce的假人

就是这样,我们已经看到了如何将单个句子分别进行映射,然后将其映射为单个生成的地图.MapReduce方法的优点是

  • 整个过程分散在小任务中,这将有助于更快地完成工作
  • 这两个步骤都可以分解为任务。 首先,运行多个映射任务,完成映射后,运行多个reduce任务以合并结果并最终汇总结果
mapreduce 人话_MapReduce的假人

现在,想象一下在HDFS上运行的MapReduce范例。 HDFS具有将节点拆分并存储在块中的数据节点。 现在,如果将任务映射到每个数据节点上,那么我们可以轻松利用这些数据节点机器的计算能力。

mapreduce 人话_MapReduce的假人

因此,每个数据节点都可以运行MapReduce的本质任务(映射或归约)。 由于每个数据节点都存储多个文件的数据,因此对于不同的数据块,可能同时运行多个任务。

要控制MapReduce任务,需要了解2个过程

  • JobTracker – JobTracker是Hadoop中的一项服务,用于将MapReduce任务分发到群集中的特定节点,理想情况下是具有数据的节点,或者至少在同一机架中。
  • TaskTracker – TaskTracker是一个启动和跟踪集群中MapReduce任务的过程。 它与JobTracker联系以分配任务和报告结果。

这些跟踪器是Hadoop本身的一部分,可以通过以下方式轻松跟踪

  • http:// <主机名>:50030 / – MapReduce作业跟踪器的Web UI
  • http:// <主机名>:50060 /-任务跟踪程序的Web UI

参考:Tech Spot博客上,我们的JCG合作伙伴 Munish K Gupta提供的关于虚拟实体的MapReduce


翻译自: https://www.javacodegeeks.com/2012/05/mapreduce-for-dummies.html

mapreduce 人话