我在这个位置安装了hadoop
/usr/local/hadoop$
现在我要列出dfs中的文件。我使用的命令是:
hduser@ubuntu:/usr/local/hadoop$bin/hadoop dfs-ls
这给了我dfs里的文件
Found 3 items
drwxr-xr-x - hduser supergroup 0 2014-03-20 03:53 /user/hduser/gutenberg
drwxr-xr-x - hduser supergroup 0 2014-03-24 22:34 /user/hduser/mytext-output
-rw-r--r-- 1 hduser supergroup 126 2014-03-24 22:30 /user/hduser/text.txt
下一次,我以不同的方式尝试了相同的命令
hduser@ubuntu:/usr/local/hadoop$hadoop dfs-ls
它也给了我同样的结果。
有没有人能解释一下,尽管从不同的文件夹执行ls命令,为什么两者都能工作。我希望你们能理解我的问题。给我解释一下这两个问题的区别:
hduser@ubuntu:/usr/local/hadoop$ bin/hadoop dfs -ls
hduser@ubuntu:/usr/local/hadoop$ hadoop dfs -ls
26条答案
按热度按时间whhtz7ly1#
两个命令都在做同样的事情。
检查/etc/bashrc或/root/.bashrc
在那里,您将找到hadoop\ home set,bin path与path变量一起添加。设置此选项时,我们将能够在命令行的任何位置执行hadoop命令。没有其他用途。。!!!
e7arh2l62#
很可能你已经出口了
路径变量中的$hadoop\u home/bin。
如果它是emr,那么它就是export hadoop\u prefix=/usr/lib/hadoop export path=$path:$hadoop\u prefix/bin
你可以查看路径并找出答案
jmo0nnb33#
在hadoop安装过程中的某个时刻,您可以配置hdfs文件系统。最后,您可以使用hdfs namenode-format格式化它。从这一点上说,dfs不是指您自己的文件系统,而是指hdfs文件系统。当您执行hadoopdfs-ls时,它会在hdfs文件系统上显示用户的主目录。当您执行命令时,从主机文件系统的哪个位置开始并不重要,因为它没有被使用。
但是,不配置hdfs是可能的,它将使用本地文件系统。无论哪种方式,hadoop dfs-ls都会显示用户主目录的内容。
注意,如果删除用户目录/user/hduser并执行hadoop dfs-ls,则会出现错误,因为用户目录不存在。
资料来源:https://amodernstory.com/2014/09/23/installing-hadoop-on-mac-osx-yosemite/
另一个:
aelbi1ox4#
在这两种情况下,您得到了相同的结果,因为您已经在bashrc文件中设置了hadoop\u home/bin,您可以通过sudo nano~/.bashrc检查条目,我们这样做是因为无论当前文件目录如何,都可以方便地从终端执行命令
如果从bashrc文件中删除hadoop\u home/bin条目,将不会得到相同的结果
66bbxpm55#
因为你有艾尔
z9smfwbn6#
它之所以能工作,是因为您没有执行shell“ls”命令,而是将“ls”作为参数传递给命令“hadoop”,所以在这两种情况下,都会执行具有相同参数的同一确切命令,即“hadoop dfs-ls”,唯一的变化是,在一种情况下,您正在使用path对其进行限定,而在另一种情况下,您没有这样做,因为“hadoop”必须在$path环境变量中设置。
bwleehnv7#
查找与
hadoop
命令,运行:这将打印出
hadoop
使用的命令。lo8azlld8#
这是因为bashrc linux env安装程序
export HADOOP_PREFIX=/usr/local/hadoop/
2)export PATH=$PATH:$HADOOP_PREFIX/bin
完成此操作后,我们需要运行命令gzszwxb49#
安装hadoop时,它的二进制文件会添加到/usr/bin文件夹中。
文件夹/bin、/sbin、/usr/bin中的任何二进制文件都可以从unix中的任何路径和用户获得。证明:1:https://askubuntu.com/questions/571617/what-is-the-purpose-of-the-bin-directory
要补充的是,folders/bin和/sbin等之间存在差异,这里解释了这些差异(https://askubuntu.com/questions/308045/differences-between-bin-sbin-usr-bin-usr-sbin-usr-local-bin-usr-local)
elcex8rz10#
这与操作系统有关,与hadoop无关。
当您在没有显式路径的情况下运行命令时,操作系统将搜索路径变量中的位置。在安装hadoop的过程中,必须在用户配置文件(.bashrc或.profiles)中设置以下变量
因此,每当你键入以下内容时,它都会签入
$HADOOP_INSTALL/bin
因为您已经在os path变量中设置了此路径。当您键入以下内容时,它将使用代码段中的当前文件夹路径
/usr/local/hadoop
就在你现在的文件夹下面bin/hadoop
文件因此,在这两种情况下,它都使用同一个文件执行,但在一种情况下通过path变量对其进行标识,在另一种情况下通过当前目录内容路径(绝对路径)对其进行标识。
w7t8yxp511#
这是因为在配置hadoop时设置了path变量。path包含到hadoop主页的路径,所以即使您没有指定/bin路径,它也会从path变量中获取它。
cotxawn712#
hadoop可执行文件位于/bin/文件夹中,因此只要将/bin/hadoop/设置为$path中的'hadoop'变量,它就是完全相同的命令。您可以在
~/.bashrc
文件。从根目录中尝试cat.bashrc,以便查看。ehxuflar13#
当您以hadoop用户身份登录时,只需在终端中键入hado,然后按tab键,您将得到hadoop,这意味着您的hadoop安装程序工作正常。。所以你的~./bashrc文件也被正确设置了。。这意味着,当您从任何目录结构hadoopdfs-ls/使用此命令时,它将为您提供hdfs中存在的所有文件的列表
smtd7mpg14#
必须给出绝对路径,后跟bin/hadoop dfs-ls
lskq00tm15#
只需在.bashrc文件中设置所有hadoop、yarn和其他路径。它会从任何地方跑出来。
标准hadoop>bin/hadoopfs-ls有关hadoop的更多详细信息,请参阅下面的hadoop论坛。
http://tekzak.com/forum/viewforum.php?f=2&sid=5d01e2e3c27aebc6e7ee95447ef328a4