【问题标题】:How to find Hadoop hdfs directory on my system?如何在我的系统上找到 Hadoop hdfs 目录?
【发布时间】:2016-07-22 13:45:05
【问题描述】:

如何在我的系统上找到 Hadoop HDFS 目录? 我需要这个来运行以下命令 -

hadoop dfs -copyFromLocal <local-dir> <hdfs-dir>

在这个命令中,我不知道我的 hdfs-dir。

不确定它是否有用,但我运行了以下命令并得到了这个输出 -

 hdfs dfs -ls
-rw-r--r--   3 popeye hdfs  127162942 2016-04-01 19:47 .

在 hdfs-site.xml 中,我找到了以下条目 -

<property>
      <name>dfs.datanode.data.dir</name>
      <value>/hadoop/hdfs/data</value>
      <final>true</final>
</property>

我尝试运行以下命令,但它给出了错误 -

[root@sandbox try]# hdfs dfs -copyFromLocal 1987.csv /hadoop/hdfs/data
copyFromLocal: `/hadoop/hdfs/data': No such file or directory

仅供参考 - 我在 azure 服务器上的 hortonworks 沙盒上执行所有这些操作。

【问题讨论】:

    标签: linux azure hadoop hdfs hortonworks-data-platform


    【解决方案1】:

    你的方法是错误的,或者理解是错误的

    dfs.datanode.data.dir,是您要存储数据块的位置

    如果您输入hdfs dfs -ls /,您将获得 hdfs 中的目录列表。然后您可以使用-copyFromLocal-put 将文件从本地传输到hdfs 到特定目录或使用-mkdir 您可以创建新目录

    更多信息请参考以下链接

    http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html

    【讨论】:

    • 你的意思是我应该尝试复制popeye目录下的文件?
    • 我使用了“hdfs dfs -ls /”命令,我能够将文件复制到该命令列出的目录中。
    【解决方案2】:

    如果你运行:

    hdfs dfs -copyFromLocal foo.txt bar.txt
    

    然后将本地文件 foo.txt 复制到您自己的 hdfs 目录/user/popeye/bar.txt(其中popeye 是您的用户名。)结果,以下实现相同:

    hdfs dfs -copyFromLocal foo.txt /user/popeye/bar.txt
    

    在将任何文件复制到 hdfs 之前,请务必先创建父目录。您不必将文件放在此“主”目录中,但 (1) 最好不要将“/”与各种文件混在一起,以及 (2) 遵循此约定将有助于防止与其他用户发生冲突。

    【讨论】:

      【解决方案3】:

      根据第一个答案,我正在为Hadoop 1.x详细阐述它 -

      假设,你在伪分布模型上运行这个脚本,你可能会得到一两个用户列表(NameNodes) -

      在我们的完全分发模型中,首先您拥有执行这些操作的管理员权限,并且会有 N 个 NameNode(用户)列表。

      所以现在我们进入正题-

      首先访问您的 Hadoop 主目录并从那里运行此脚本 -

      bin/hadoop fs -ls /
      

      结果会这样 -

      drwxr-xr-x   - xuiob78126arif supergroup          0 2017-11-30 11:20 /user
      

      所以这里xuiob78126arif 是我的名称节点(主/用户),而名称节点(用户)目录是 -

      /user/xuiob78126arif/
      

      现在您可以转到浏览器并搜索地址 -

      http://xuiob78126arif:50070
      

      从那里你可以得到Cluster Summary, NameNode Storage等。

      注意:脚本只会在一种情况下提供结果,如果 DataNode 中至少存在任何文件或目录,否则您将得到 -

      ls: Cannot access .: No such file or directory.
      

      所以,在这种情况下,您首先将任何文件放在bin/hadoop fs -put &lt;source file full path&gt;

      然后运行bin/hadoop fs -ls / 脚本。

      现在我希望您对您的问题有所了解,谢谢。

      【讨论】:

        【解决方案4】:

        找到 HDFS 目录并确保您深入到安装 hadoop 的目录。如果bin/hadoop fs -ls / 显示没有 o/p 表示“/”是 hdfs 目录。使用mkdir 为map-reduce 作业创建一个新目录[例如:hdfs fs -mkdir /user/&lt;local_username&gt;]。在此之后 put 或 copyfromLocal 命令将起作用。

        我学到了这一点。我希望像我这样被卡住的人会觉得这很有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-05
          • 2015-01-31
          相关资源
          最近更新 更多