关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。
7年前关门了。
改进这个问题
例如,我有2个数据节点和2个复制节点。当我执行“hadoop dfs-put test.log input”将文件存储到hdfs中时,这个文件是如何存储在hadoop集群中的?它是否分布在整个集群中并存储在两个datanode服务器上?
另外,当我执行诸如word count“hadoop-jar word count.jar input output”之类的操作时,整个过程是什么样子的?jobtracker将要求2个任务跟踪器并行执行,然后将输出存储到hdfs?
我是否可以认为第一种情况与namenode/datanode有关,第二种情况与job tracker/task tracker有关?
1条答案
按热度按时间ncgqoxb01#
例如,我有2个数据节点和2个复制节点。当我执行“hadoop dfs-put test.log input”将文件存储到hdfs中时,这个文件是如何存储在hadoop集群中的?它是否分布在整个集群中并存储在两个datanode服务器上?
当您执行hadoop dfs-put test.log输入时,test.log文件将存储在名为input的目录中。这就是流程,
根据文件的大小和块的大小,文件将首先被分成n个小块,称为块。默认块大小是64mb,但它是可配置的。现在,在namenode的帮助下,客户机将知道哪些datanode有空闲空间来容纳数据。完成后,客户机将开始逐块将数据推送到最近的datanode,然后根据您的复制因子将数据向前推送到其他datanode。
是的,文件将分布在两台机器上。记住hadoop是一个分布式系统,其中n个独立的机器作为一个系统一起工作。请参见下图以更好地了解:
另外,当我执行诸如word count“hadoop-jar word count.jar input output”之类的操作时,整个过程是什么样子的?jobtracker将要求2个任务跟踪器并行执行,然后将输出存储到hdfs?
mapreduce执行的流程如下所示,
将作业提交给jobtracker。jobtracker指示在存在要处理的数据的机器上运行的tasktracker(连续运行)自己在那里开始处理,而不必将数据移动到任何地方。如果要处理的文件分布在n个节点上,则在所有这n个节点上运行的TaskTracker将并行启动处理。在你的例子中n是2。看看这个就知道整个过程了。
我是否可以认为第一种情况与namenode/datanode有关,第二种情况与job tracker/task tracker有关?
没什么好考虑的。事实就是这样:)
hth公司