hadoop命令

p8ekf7hl  于 2021-06-03  发布在  Hadoop
关注(0)|答案(26)|浏览(500)

我在这个位置安装了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
vsaztqbk

vsaztqbk16#

linux操作系统中有一个简单的概念。可以说bashrc文件链接到终端。因此,当您打开终端时,它将加载bashrc文件中的所有变量。任何附加在bashrc文件中定义的path变量中的可执行文件都可以从当前所在的任何目录加载。
现在回答你的问题。自 hadoop fs -ls / 对您来说工作正常,这意味着可执行文件在您的路径变量中。对于后一种情况 bin/hadoop fs -ls / 您将手动转到可执行文件所在的文件夹。这类似于在linux中运行任何可执行文件。

mf98qq94

mf98qq9417#

因为您在hadoop用户的.bashrc文件中设置了hadoop路径。所以您不需要将路径导航到bin文件夹。从bin文件夹工作的命令也从当前用户的根文件夹工作。

uajslkp6

uajslkp618#

命令 hadoop dfs ls 等于 ls hdfs文件系统中的命令。我们可以把它当作 ls linux/unix中的命令。

ryoqjall

ryoqjall19#

首先,您正在执行相同的命令。hadoop installation dir中的bin/hadoop与hadoop相同,为此,请检查.bashrc文件,其中必须指定hadoop的可执行路径。如果您调用hadoop,则表示您正在调用/usr/local/hadoop/bin/hadoop命令。如果ls的输出有问题-您是在hadoop文件系统上执行ls,而不是在本地文件系统上执行ls。它将向您显示hadoop文件系统中可用的内容。有关详细信息,请访问localhost:50070 and 检查内容

juud5qan

juud5qan20#

您设置了一个hadoop全局路径 HADOOP_HOME 在你的 ~/.bashrc 这样hadoop命令就可以在终端的任何地方工作。

d5vmydt9

d5vmydt921#

对你来说 hadoop 存在于 bin/ (在 /usr/local/hadoop ),所以您可以按 bin/hadoop/usr/local/hadoop (上面示例中的当前位置)。
您还可以直接执行它,而无需将相对/绝对路径指定为 hadoop 已添加到路径。
你可以通过运行 which hadoop 和打印路径( echo $PATH ).

busg9geu

busg9geu22#

在这两种情况下,您得到了相同的结果,因为您已经在bashrc文件中设置了hadoop\u home/bin。因为在unix中,可执行文件可以通过两种方式执行,一种是给出绝对/相对路径,另一种是在系统的可执行路径中给出命令。
执行时-“bin/hadoop dfs-ls”应该在/usr/local/hadoop目录中。

i7uq4tfw

i7uq4tfw23#

命令 hadoop fs -ls 是列出hadoop文件系统(hdfs)中根文件夹中的所有文件和目录,而不是当前的文件系统。在不修改hdfs根目录中的文件的情况下,使用此命令的结果应该是相同的。
在计算机中安装hadoop时,已经在路径中添加了hadoop/bin。命令将指向在当前系统中运行它的任何位置的同一路径。
因此,您不会对hdfs进行任何更改,而是使用相同的命令。这就是为什么你会得到完全相同的结果。

s5a0g9ez

s5a0g9ez24#

在unix中,可执行文件可以通过两种方式执行,一种是给出绝对/相对路径,另一种是在系统可执行文件路径中指定命令(路径应在path变量中指定)
当你执行 bin/hadoop dfs -ls 应该在/usr/local/hadoop目录中。或者 /usr/local/hadoop/bin/hadoop dfs -ls 也可以
unix中有一个环境变量path,它保留在可执行文件位置列表中。默认情况下,它保留以下路径 /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin: . 每当我们执行任何命令,如ls、mkdir等,它都是从path变量中的一个位置获取的。当您发出hadoop命令时(它将从路径/usr/local/hadoop/bin/获取)。因为您已经指定了path/usr/local/hadoop/bin/in path变量。使用以下命令检查path变量的值

echo $PATH
9q78igpj

9q78igpj25#

两个命令 bin/hadoop dfs -ls 以及 hadoop dfs -ls 正在为您工作,因为您在中设置了hadoop可执行文件(/usr/local/hadoop/bin/hadoop) $PATH 用户“hduser”的变量。
为了进一步理解它,您可以打开一个终端,并从中删除值($hadoop\u home/bin或/usr/local/hadoop/bin) $PATH 在linux中使用export命令。如果你这样做,第二个命令( hadoop dfs -ls )在最后一次治疗中不起作用。

qnyhuwrf

qnyhuwrf26#

变量hadoop\u home可能是用hadoop二进制文件的bin路径设置的。在这种情况下,无论从何处执行hadoop命令,上述两个命令都将起作用。

相关问题