Tasktracker如何获取必要的数据

时间:2015-12-15 14:56:13

标签: hadoop

我有数据科学背景,因此我使用Hadoop的目标是在HDFS中存储大量数据并使用群集执行某些(并行化)分析(例如某些机器学习算法)这些数据集的一部分。为了更具体一点,请考虑以下情况:对于存储在HDFS中的一些大型数据集,我想在该数据集的100个随机样本上运行一个简单的算法,并将这些结果组合起来。

正如我理解这个概念,要实现这一点,我可以编写一个Map函数,告诉我的集群节点上的Tasktrackers对部分数据执行分析。此外,我应该写一个Reduce函数来“结合”结果。

现在是技术方面;据我所知,我的群集中的每台计算机都包含DataNodeTaskTracker。我想某个机器上的TaskTracker可能需要数据进行计算,而这个特定机器上的DataNode上没有。所以出现的主要问题是:TaskTracker如何获得所需的数据?它是否将其相邻DataNode上的数据与来自其他DataNodes的数据相结合,还是将其邻居DataNode与群集中的所有其他DataNodes一样对待?是否所有必需的数据都首先转移到TaskTracker

请详细说明这些问题,因为它可以帮助我理解Hadoop的基本原理。我是否应该首先完全误解Hadoop工作流程,请让我知道,因为它也会对我有所帮助。

1 个答案:

答案 0 :(得分:1)

如果DataNode上没有数据, 然后根据hadoop,它可以询问NameNode,它将获得保存数据块的节点列表,DataNode将从相应的DataNode复制该数据。

请查看可能有助于您了解HDFS和Hadoop系统流量的链接和图像。

hadoop-flow

以下链接对流程有很好的解释。 我希望它会有所帮助。

https://drive.google.com/file/d/0B-zw6KHOtbT4MmRkZWJjYzEtYjI3Ni00NTFjLWE0OGItYTU5OGMxYjc0N2M1/view?pli=1