Hadoop有提供一些脚本命令,以便于我们对HDFS进行管理,可以通过命令hadoop fs
进行查看:
通过以上使用说明可以发现,里面提供了大多数和我们在本地操作文件系统相类似的命令,例如,cat
查看文件内容,chgrp
改变用户群组权限,chmod
改变用户权限,chown
改变用户拥有者权限,还有创建目录,查看目录,移动文件,重命名等等。
hadoop fs -ls
这里,我们来看看命令hadoop fs -ls
:
这个命令大家肯定非常熟悉,在Linux下使用超级频繁,功能就是列出指定目录下的文件及文件夹。那接下来,我们来看看它是怎样查找到此目录下的文件及文件夹的。
在运行hadoop fs -ls /
命令之后,真正的命令只是hadoop
,后面只是参数,那么,这个hadoop
命令到底是哪呢?如果说集群是自己手动搭配的话,那大家肯定知道,这个命令就在${HADOOP_HOME}/bin
目录下,但如果集群是自动化部署的时候,你可能一下子找不到这个命令在哪,此时,可以使用以下命令查找:
可以看到,这个命令应该是在目录/usr/bin/
之下,使用vim /usr/bin/hadoop
查看命令详细:
#!/bin/bash
export HADOOP_HOME=${HADOOP_HOME:-/usr/hdp/2.5.0.0-1245/hadoop}
export HADOOP_MAPRED_HOME=${HADOOP_MAPRED_HOME:-/usr/hdp/2.5.0.0-1245/hadoop-mapreduce}
export HADOOP_YARN_HOME=${HADOOP_YARN_HOME:-/usr/hdp/2.5.0.0-1245/hadoop-yarn}
export HADOOP_LIBEXEC_DIR=${HADOOP_HOME}/libexec
export HDP_VERSION=${HDP_VERSION:-2.5.0.0-1245}
export HADOOP_OPTS="${HADOOP_OPTS} -Dhdp.version=${HDP_VERSION}"
exec /usr/hdp/2.5.0.0-1245//hadoop/bin/hadoop.distro "$@"
这个脚本做了两件事,一是export了一些环境变量,使得之后运行的子程序都可以共享这些变量的值;二是执行了命令hadoop.distro
命令,并传上了所有参数。
现在,我们来看下命令hadoop.distro
做了哪些事,由于代码有点小多,我就不全部贴了,只贴与执行命令hadoop fs -ls /
相关的代码。
命令hadoop.distro
做的事情是:根据之前传入的参数,然后做一些判断,确定一些变量的值,最后执行的是以下命令:
exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"
这里,我们看到了一堆变量,其中$JAVA
:java
$JAVA_HEAP_MAX
:$HADOOP_OPTS
:
# Always respect HADOOP_OPTS and HADOOP_CLIENT_OPTS
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS&