Hadoop HDFS问题

时间:2013-07-15 18:13:01

标签: java hadoop mapreduce hdfs

例如,我有2个数据节点和复制2.当我执行将文件存储到HDFS的“hadoop dfs -put test.log输入”时,该文件如何存储在Hadoop集群中?它是否遍布整个集群并存储在两个数据节点服务器上?

另外,当我进行字数“hadoop -jar word count.jar输入输出”等操作时,整个过程是什么样的? jobtracker将要求2个任务跟踪器并行执行,然后将输出存储到HDFS中?

我能否认为第一种情况与namenode / datanode有关,第二种情况与作业跟踪器/任务跟踪器有关?

1 个答案:

答案 0 :(得分:4)

  

例如,我有2个数据节点和复制2.当我做“hadoop   dfs -put test.log输入“将文件存储到HDFS中,这是怎么回事   存储在Hadoop集群中的文件?它是否遍布整个集群   并存储在两个datanode服务器上?

当您执行hadoop dfs -put test.log输入时,文件 test.log 将存储在名为 input 的目录中。这就是流程,

根据文件大小块大小,该文件将首先分为 n 小块,称为即可。默认块大小 64MB ,但它是可配置的。现在,在NameNode的帮助下,客户端将知道哪些DataNode具有可用空间来容纳数据。完成此操作后,客户端将开始逐块将数据推送到最近的DataNode,然后根据您的复制因子将其推送到其他DataNode。

是的,该文件将分布在两台机器上。请记住,Hadoop是分布式系统,其中 n 单独的计算机作为单个系统共同工作。请参阅下面的图表以便更好地理解:

enter image description here


enter image description here

  

另外,当我做一些操作,如字数“hadoop -jar word   count.jar输入输出“,整个过程是什么样的?   jobtracker将要求2个任务跟踪器执行并行然后存储   输出到HDFS?

MapReduce执行的流程是这样的,

您将作业提交给JobTracker。 JobTracker指示在要处理的数据的机器上运行的TaskTrackers(连续运行)在其中开始处理,而不必将数据移动到任何地方。如果要处理的文件分布在n个节点上,那么在所有这n个节点上运行的TaskTrackers将并行开始处理。在你的情况下,n是2。请参阅this以了解完整流程。

  

我能否认为第一种情况与namenode / datanode有关   第二种情况与工作追踪/任务追踪有关?

没有什么可以考虑的。这才是真正发生的事情:)

HTH