需要解释Hadoop文件系统

时间:2015-04-13 01:00:03

标签: hadoop

对于以下命令,

hadoop fs -put foo.txt bar.txt

操作成功后,bar.txt将在我的本地硬盘中找到,给定

  1. 一个单节点设置?
  2. 伪分布式设置?
  3. bar.txt是否仍会被复制3次进行备份?

2 个答案:

答案 0 :(得分:2)

bar.txt将被放置在当前的hadoop用户主目录中 /user/<hadoop-user>根据以下代码

@Override
public Path getHomeDirectory() {
  return makeQualified(new Path("/user/" + dfs.ugi.getShortUserName()));
}  

来源here

  1. 如果群集是单个节点,即使您将dfs.replication设置为3,它也只复制一次,因为Hadoop不会多次在同一节点上保存相同的块。
  2. 伪分布式模式将使所有hadoop守护进程在同一台机器上运行。它只不过是单节点集群 你将dfs.replication设置为3,Hadoop只会给你警告。
  3. 希望它有所帮助!

答案 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配置。