MapReduce的假人
给定几个句子,编写一个计算单词数的程序。
现在,解决此问题的传统思路是读取一个单词,检查该单词是否是停用词之一,如果不是,请在HashMap中将该单词添加为key作为单词并将其值设置为出现次数。 如果在HashMap中找不到该单词,则添加该单词并将其值设置为1。如果找到该单词,则在HashMap中将值和单词递增。
现在,在这种情况下,程序正在以串行方式处理句子。 现在,假设是否需要计算句子中的单词数而不是句子。 如此数量的数据进行串行处理非常耗时。 因此,问题是我们还有其他算法可以用来加快处理速度。
让我们处理相同的问题并将其分为两个步骤。 第一步,我们每个句子都取一个句子,并映射出该句子中的单词数。
单词映射完成后,让我们继续下一步。 在此步骤中,我们将两个句子中的地图组合(减少)为一个地图。
就是这样,我们已经看到了如何将单个句子分别进行映射,然后将其映射为单个生成的映射.MapReduce方法的优点是
- 整个过程分散在小任务中,这将有助于更快地完成工作
- 这两个步骤都可以分解为任务。 首先,运行多个映射任务,完成映射后,运行多个reduce任务以合并结果并最终汇总结果
现在,想象一下在HDFS上运行的MapReduce范例。 HDFS具有数据节点,该数据节点将文件拆分并存储在块中。 现在,如果将任务映射到每个数据节点上,那么我们可以轻松利用这些数据节点机器的计算能力。
因此,每个数据节点都可以运行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