对于以下命令,
hadoop fs -put foo.txt bar.txt
操作成功后,bar.txt将在我的本地硬盘中找到,给定
bar.txt是否仍会被复制3次进行备份?
答案 0 :(得分:2)
bar.txt
将被放置在当前的hadoop用户主目录中
/user/<hadoop-user>
根据以下代码
@Override
public Path getHomeDirectory() {
return makeQualified(new Path("/user/" + dfs.ugi.getShortUserName()));
}
来源here
dfs.replication
设置为3,它也只复制一次,因为Hadoop不会多次在同一节点上保存相同的块。 dfs.replication
设置为3,Hadoop只会给你警告。 希望它有所帮助!
答案 1 :(得分:1)
上面的fs命令尝试将文件foo.txt作为bar.txt放在当前的hdfs中。 hdfs的路径由操作正在执行的当前用户确定。这是因为您没有提供到目的地的绝对路径。
如果你有/ user作为hdfs中配置的主目录,它将采用/ user /的路径并将文件放在那里。
此外,如果hdfs中没有与当前用户对应的文件夹,则说明文件不存在将失败。
e.g。当前运行的用户是&#34; testusr1&#34;。并且上面的命令将文件放在&#34; / users / testusr1&#34;
您可以通过执行命令#hadoop fs -ls / user /
来验证这一点AFAIK对于伪节点或单节点设置应该是相同的。
[root@sandbox ~]# hadoop fs -ls /user
Found 11 items
drwx------ - root hdfs 0 2015-04-13 03:59 /user/root
.
.
.
.
.
drwxr-xr-x - root hdfs 0 2015-04-13 04:18 /user/testusr1
[root@sandbox ~]#
[root@sandbox ~]# su - testusr1
[testusr1@sandbox ~]$ whoami
testusr1
[testusr1@sandbox ~]$ pwd
/home/testusr1
[testusr1@sandbox ~]$ ll
total 7
-rw-rw-r-- 1 testusr1 testusr1 49 2015-04-13 04:17 foo-testusr2.txt
[testusr1@sandbox ~]$ hadoop fs -put foo-testusr2.txt bar-testusr2.txt
对于复制因子,您可以查看基本hadoop fs -ls命令的帮助。
[testusr1@sandbox ~]$exit
logout
[root@sandbox ~]# hdfs dfs -ls /user/testusr1
Found 1 items
-rw-r--r-- 1 testusr1 hdfs 49 2015-04-13 04:18 /user/testusr1/bar-testusr2.txt
[root@sandbox ~]#
在上面的示例输出中,您可以在文件权限之后立即看到数字1。它反映为1,它符合我的hdfs配置。