[英]Hadoop HDFS questions [closed]
例如,我有2个数据节点和复制2。当我执行“ hadoop dfs -put test.log输入”将文件存储到HDFS时,该文件如何存储在Hadoop集群中? 它是否分布在整个群集上并存储在两个数据节点服务器上?
另外,当我执行某些操作(例如单词计数“ hadoop -jar word count.jar输入输出”)时,整个过程是什么样的? Jobtracker将要求2个任务跟踪器并行执行,然后将输出存储到HDFS中?
我是否可以认为第一种情况与namenode / datanode有关,第二种情况与作业跟踪器/任务跟踪器有关?
例如,我有2个数据节点和复制2。当我执行“ hadoop dfs -put test.log输入”将文件存储到HDFS时,该文件如何存储在Hadoop集群中? 它是否分布在整个群集上并存储在两个数据节点服务器上?
当您执行hadoop dfs -put test.log输入时 ,文件test.log将存储在名为input的目录中。 流程在这里,
根据文件的大小和您的块大小 ,文件将首先被分成n个小块,称为block 。 默认块大小为64MB ,但它是可配置的。 现在,在NameNode的帮助下,客户端将知道哪些所有DataNode具有可用空间来容纳数据。 完成此操作后,客户端将开始逐块将数据推送到最近的DataNode,然后根据您的复制因子将其转发到其他DataNode。
是的,文件将在两台计算机上传播。 请记住,Hadoop是一个分布式系统,其中n个独立的机器作为一个系统共同工作。 为了更好的理解,请参见下面显示的图:
另外,当我执行某些操作(例如单词计数“ hadoop -jar word count.jar输入输出”)时,整个过程是什么样的? Jobtracker将要求2个任务跟踪器并行执行,然后将输出存储到HDFS中?
MapReduce执行的流程是这样的,
您将作业提交给JobTracker。 JobTracker指示在要处理数据的计算机上运行的TaskTrackers(连续运行),从而无需在任何地方移动数据就可以在此处开始处理。 如果要处理的文件分散在n个节点上,则在所有这n个节点上运行的TaskTracker将并行开始处理。 在您的情况下,n为2。 请参阅此内容以了解完整的过程。
我是否可以认为第一种情况与namenode / datanode有关,第二种情况与作业跟踪器/任务跟踪器有关?
没有什么可考虑的。 这就是真正发生的事情:)
高温超导
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.