需要解释Hadoop教程中使用的命令

时间:2015-01-24 08:22:04

标签: hadoop mapreduce hdfs

最近我刚刚开始研究Hadoop,我只是做了一个真正理解它的实验。 以下是教程:http://www.codeproject.com/Articles/757934/Apache-Hadoop-for-Windows-Platform 我想问的是,在我根据教程遇到几个命令后,计算机系统中出现的后台进程是什么,例如

  • hadoop namenode -format
  • javac -classpath C:\ hadoop-2.3.0 \ share \ hadoop \ common \ hadoop-common-2.3.0.jar; C:\ hadoop-2.3.0 \ share \ hadoop \ mapreduce \ hadoop-mapreduce-客户端 - 芯 - 2.3.0.jar; C:\ Hadoop的2.3.0 \共享\ hadoop的\共同\ lib中\ GSON-2.2.4.jar; C:\ Hadoop的2.3.0 \共享\ hadoop的\共同\ lib \ commons-cli-1.2.jar Recipe.java
  • jar -cvf Recipe.jar * .class
  • hadoop fs -mkdir / in
  • hadoop fs -copyFromLocal c:\ Hwork \ recipeitems-latest.json / in
  • hadoop jar c:\ Hwork \ Recipe.jar Recipe / in / out
  • hadoop fs -ls / out
  • hadoop fs -cat / out / part-r-00000

2 个答案:

答案 0 :(得分:0)

hadoop fs在HDFS文件系统上运行类似于unix(ls,copy,cat等)的命令,你可以看到完整列表是filesystem shell documentation

hadoop namenode -format是线虫的初始化,即删除存储在Hadoop中的所有内容 - 请注意,在较新的Hadoop版本上,您可以通过hdfs see here

执行此操作

另外两个命令(javac和jar)与编译和打包java程序有关

答案 1 :(得分:0)

您可以浏览二进制文件' hadoop'可以在hadoop主目录下的/ bin文件夹中找到。

提交Hadoop命令后,它在UNIX(cat,ls,awk)中充当普通的shell命令。它将转到Hadoop二进制文件(/ bin)目录并开始执行命令,其他选项(fs,jar,distcp,job,namenode,jt ..)作为参数。根据提供给hadoop命令的选项,将调用下一个shell,其余选项作为参数。最后,将使用请求的选项执行java类。我已经简要介绍了它如何适用于#hadoop fs -cat'

仓/ hadoop的

COMMAND=$1
case $COMMAND in
# usage flags
--help|-help|-h)
print_usage
exit
;;
.
.
namenode|secondarynamenode|datanode|dfs|dfsadmin|fsck|balancer|fetchdt|oiv|dfsgroups|portmap|nfs3)
.
.
if [ -f "${HADOOP_HDFS_HOME}"/bin/hdfs ]; then
exec "${HADOOP_HDFS_HOME}"/bin/hdfs ${COMMAND/dfsgroups/groups}  "$@"
elif [ -f "${HADOOP_PREFIX}"/bin/hdfs ]; then
exec "${HADOOP_PREFIX}"/bin/hdfs ${COMMAND/dfsgroups/groups} "$@"

仓/ HDFS

    elif [ "$COMMAND" = "dfs" ] ; then
    CLASS=org.apache.hadoop.fs.FsShell
    HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"
elif [ "$COMMAND" = "dfsadmin" ] ; then
    CLASS=org.apache.hadoop.hdfs.tools.DFSAdmin
    HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"
.
.
exec "$JAVA" -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"

示例java类实现, http://grepcode.com/file/repository.cloudera.com/content/repositories/releases/com.cloudera.hadoop/hadoop-core/0.20.2-320/org/apache/hadoop/fs/FsShell.java

您可以看到如何在java中实现命令(cat)。我相信这应该为您提供有关hadoop命令如何在后台运行的简要概述。