Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop put命令写入文件需要多长时间_Hadoop_Hdfs - Fatal编程技术网

Hadoop put命令写入文件需要多长时间

Hadoop put命令写入文件需要多长时间,hadoop,hdfs,Hadoop,Hdfs,在默认Hadoop设置下,假设写入一个块需要4分钟,那么将64Mb文件写入HDFS需要多长时间 根据我的说法,默认块大小为64Mb,客户机必须编写一个块,这需要4*3[复制因子]=12分钟 原因 HDFS使用流水线实现其复制写入。当客户机从NameNode接收到DataNodes列表时,客户机将块数据流传输到第一个节点 DataNode(4分钟),它依次将数据镜像到下一个DataNode(4分钟),依此类推,直到数据到达所有DataNode(又是4分钟)。来自数据节点的确认也以相反的顺序管道化。

在默认Hadoop设置下,假设写入一个块需要4分钟,那么将64Mb文件写入HDFS需要多长时间

根据我的说法,默认块大小为64Mb,客户机必须编写一个块,这需要4*3[复制因子]=12分钟

原因
HDFS使用流水线实现其复制写入。当客户机从NameNode接收到DataNodes列表时,客户机将块数据流传输到第一个节点 DataNode(4分钟),它依次将数据镜像到下一个DataNode(4分钟),依此类推,直到数据到达所有DataNode(又是4分钟)。来自数据节点的确认也以相反的顺序管道化。
4+4+4=12分钟


有人能证实我的理解是否正确吗?

你的理解是正确的,但不是完全正确的。下面是权威指南书的摘录

写入一个块时,多个数据节点发生故障是可能的,但可能性不大。 只要写入dfs.replication.min复制副本(默认为一个),写入 将成功,并且该块将在集群中异步复制,直到 已达到其目标复制因子(dfs.replication,默认为三)

这表明-put命令所花费的时间取决于在中找到的dfs.replication.min配置

默认情况下,这是1。因此,根据您的示例,应该需要大约4分钟才能完成


As-put将只等待来自一个数据节点的ack。

我同意Sudarshan的评论,只是为了增加时间方面-我尝试将6G文件放入HDFS使用
hadoop fs-put文件名destDir
。完成后,我使用
df
查看硬盘使用情况,使用的
不再增长。我认为-put将等待3个复制竞争对手的确认

来验证我的想法。 我尝试将一个文件放入HDFS使用3次复制,需要43s\35s\40s。 然后,我将dfs.replication编辑为1,需要7秒\5秒\6秒。 我使用相同的文件