hadoop dfs -copyFromLocal src dest

标签 hadoop hdfs

我的问题是为什么我们需要指定目标。我放到hdfs中的文件不一定完全在本地机器上,所以在命令中指定dest有什么用。

当我通过命令 lie 运行命令然后执行 hadoop dfs -ls 时,我可以看到我的文件在 hdfs 中列出,但是当我使用

以编程方式创建文件时
FileSystem fs      = FileSystem.get(conf);
Path filenamePath  = new Path("hello.txt");
fs.create(filenamePath);

然后执行 hadoop dfs -ls 我找不到这个文件。

在我的 core-site.xml 中,我有以下...

<!-- In: conf/core-site.xml -->
<property>
  <name>hadoop.tmp.dir</name>
  <value>/home/apurv/hadoop/hdfs</value>
  <description>A base for other temporary directories.</description>
</property>

<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:54310</value>
  <description>The name of the default file system.  A URI whose
  scheme and authority determine the FileSystem implementation.  The
  uri's scheme determines the config property (fs.SCHEME.impl) naming
  the FileSystem implementation class.  The uri's authority is used to
  determine the host, port, etc. for a filesystem.</description>
</property>

从直觉上讲,复制的文件驻留在何处对我来说也没有意义,因为它可能大到足以驻留在一台机器上。

最佳答案

我们在 Talk about it 上聊天,我还有更多时间向您解释。

如果您在代码中使用此代码段:

FileSystem fs      = FileSystem.get(conf);
// stuff to create

那么 conf 对象中的内容就很重要了。如果您不向其中输入任何内容,则返回的 FileSystem 始终是本地的。

如果你把它放在你的 conf 中:

conf.set("fs.default.name", "hdfs://localhost:54310");

然后您应该通过该“服务器”上的名称节点连接到您的 HDFS,并且您可以写入 HDFS。

如果要让配置读取 XML,则必须使用 #addResource() 方法。

查看此处的文档: http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/conf/Configuration.html

示例用法可以是:

Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/hdfs-site.xml"));

然后你所有的 hdfs-site.xml 映射都将在你的 conf 中。

试玩了一下,感觉真的很直观。至少对我来说 ;)

关于hadoop dfs -copyFromLocal src dest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8734756/

相关文章:

hadoop - 咕噜模式下的 pig

hadoop - 将数据写入hadoop的最有效方式

hadoop - 如何杀死Hadoop fs -copyToLocal任务

hdfs - 如何在 Accumulo 1.7.0 中恢复实例?

sql - Hive 加入理解问题

java - 如何在hadoop中的mapreduce java代码中限制reduce作业的数量

hadoop - 如何从Sqoop选项生成Sqoop命令?

apache-spark - 在HIVE中执行查询,但看不到结果

hadoop - Oozie 输出事件