如果hadoop在50台机器的网格上运行,并且我运行一个任务来确定哪些是最常见的单词,我可以指定我只想在1.txt和2.txt文档中搜索吗?hadoop如何知道在哪台机器上查找这些文件,或者它将尝试在50台机器中的每台机器上查找这些文件?
ipakzgxi1#
是的,您应该指定hdfs中文件的路径作为mapreduce作业的输入。但好的是,你不需要知道这些文件实际上存储在哪里。当你上传 1.txt 以及 2.txt 对于hdfs分布式文件系统,hadoop将这些文件中的数据块存储在称为节点(默认情况下为3)的集群中的多台计算机上。如果文件的大小大于一台机器可以存储的大小,hadoop会将文件分成几个块,并将每个块存储在几个节点上。所以作业不需要知道文件实际存储在哪里。你的作业程序只需要通过uri来识别文件,就像 hdfs://1.txt 以及 hdfs://2.txt .hadoop尽量在存储数据的同一节点上运行job(或job的一部分)。当hadoop计划作业时,它会考虑哪些节点拥有作业的数据,以及此时哪个节点可用。然后它会安排作业在节点上运行。如果每个文件适合一个节点,则作业将被安排在每个文件的一个节点上运行。所以它不会在集群的所有50个节点上运行。
1.txt
2.txt
hdfs://1.txt
hdfs://2.txt
6qfn3psc2#
在hadoop中,您将文件放在hdfs上,它将文件复制到多个位置,例如每个文件的3个副本,这些副本均匀分布。例如,您有50个文件,每个文件在hdfs中有3个副本(这个数字是在设置hadoop时确定的)。说吧 Machine1 有 1.txt, 24.txt and 47.txt m2有 11.txt, 24.txt and 27.txt 其他人也一样。当您输入_i.txt(i是1到50)时 24.txt hadoop将把这个任务交给m1或m2或者其他拥有这个文件的机器,以便不进行任何网络数据传输。所有其他文件都将由拥有该文件的机器进行处理(在某些例外情况下,这些规则可能会失败)。为了更好地理解这个wiki页面。
Machine1
1.txt, 24.txt and 47.txt
11.txt, 24.txt and 27.txt
24.txt
2条答案
按热度按时间ipakzgxi1#
是的,您应该指定hdfs中文件的路径作为mapreduce作业的输入。但好的是,你不需要知道这些文件实际上存储在哪里。
当你上传
1.txt
以及2.txt
对于hdfs分布式文件系统,hadoop将这些文件中的数据块存储在称为节点(默认情况下为3)的集群中的多台计算机上。如果文件的大小大于一台机器可以存储的大小,hadoop会将文件分成几个块,并将每个块存储在几个节点上。所以作业不需要知道文件实际存储在哪里。你的作业程序只需要通过uri来识别文件,就像
hdfs://1.txt
以及hdfs://2.txt
.hadoop尽量在存储数据的同一节点上运行job(或job的一部分)。
当hadoop计划作业时,它会考虑哪些节点拥有作业的数据,以及此时哪个节点可用。然后它会安排作业在节点上运行。
如果每个文件适合一个节点,则作业将被安排在每个文件的一个节点上运行。所以它不会在集群的所有50个节点上运行。
6qfn3psc2#
在hadoop中,您将文件放在hdfs上,它将文件复制到多个位置,例如每个文件的3个副本,这些副本均匀分布。
例如,您有50个文件,每个文件在hdfs中有3个副本(这个数字是在设置hadoop时确定的)。说吧
Machine1
有1.txt, 24.txt and 47.txt
m2有11.txt, 24.txt and 27.txt
其他人也一样。当您输入_i.txt(i是1到50)时
24.txt
hadoop将把这个任务交给m1或m2或者其他拥有这个文件的机器,以便不进行任何网络数据传输。所有其他文件都将由拥有该文件的机器进行处理(在某些例外情况下,这些规则可能会失败)。为了更好地理解这个wiki页面。