Hadoop Shell介绍
bin目录下的Hadoop脚本是最基础的集群管理脚本,用户可以通过该脚本完成各种功能,如HDFS文件管理、MapReduce作业管理等。该脚本的使用方法为:
hadoop[–config confdir]COMMAND
其中,–config用于设置Hadoop配置文件目录,默认目录为
${HADOOP_HOME}/conf
而COMMAND是具体的某个命令。常用的有HDFS管理命令fs、作业管理命令job和作业提交命令jar等。
测试环境
1)HDFS测试
对HDFS文件系统进行查看文件,对文件或者文件的基本操作。(通过命令行的方式交互)
[hadoop1@H01 bin]$ pwd
/home/hadoop1/Hadoop/modules/hadoop-1.2.1/bin
[hadoop1@H01 bin]$ ./hadoop
Usage: hadoop [--config confdir] COMMAND
where COMMAND is one of:
namenode -format format the DFS filesystem
secondarynamenode run the DFS secondary namenode
namenode run the DFS namenode
datanode run a DFS datanode
dfsadmin run a DFS admin client
mradmin run a Map-Reduce admin client
fsck run a DFS filesystem checking utility
fs run a generic filesystem user client
balancer run a cluster balancing utility
oiv apply the offline fsimage viewer to an fsimage
fetchdt fetch a delegation token from the NameNode
jobtracker run the MapReduce job Tracker node
pipes run a Pipes job
tasktracker run a MapReduce task Tracker node
historyserver run job history servers as a standalone daemon
job manipulate MapReduce jobs
queue get information regarding JobQueues
version print the version
jar <jar> run a jar file
distcp <srcurl> <desturl> copy file or directories recursively
distcp2 <srcurl> <desturl> DistCp version 2
archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
classpath prints the class path needed to get the
Hadoop jar and the required libraries
daemonlog get/set the log level for each daemon
or
CLASSNAME run the class named CLASSNAME
Most commands print help when invoked w/o parameters.
[hadoop1@H01 conf]$ pwd
/home/hadoop1/Hadoop/modules/hadoop-1.2.1/conf
[hadoop1@H01 conf]$ hadoop --config /home/hadoop1/Hadoop/modules/hadoop-1.2.1/conf/ fs
Usage: java FsShell
[-ls <path>]
[-lsr <path>]
[-du <path>]
[-dus <path>]
[-count[-q] <path>]
[-mv <src> <dst>]
[-cp <src> <dst>]
[-rm [-skipTrash] <path>]
[-rmr [-skipTrash] <path>]
[-expunge]
[-put <localsrc> ... <dst>]
[-copyFromLocal <localsrc> ... <dst>]
[-moveFromLocal <localsrc> ... <dst>]
[-get [-ignoreCrc] [-crc] <src> <localdst>]
[-getmerge <src> <localdst> [addnl]]
[-cat <src>]
[-text <src>]
[-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>]
[-moveToLocal [-crc] <src> <localdst>]
[-mkdir <path>]
[-setrep [-R] [-w] <rep> <path/file>]
[-touchz <path>]
[-test -[ezd] <path>]
[-stat [format] <path>]
[-tail [-f] <file>]
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]
[-chgrp [-R] GROUP PATH...]
[-help [cmd]]
Generic options supported are
-conf <configuration file> specify an application configuration file
-D <property=value> use value for given property
-fs <local|namenode:port> specify a namenode
-jt <local|jobtracker:port> specify a job tracker
-files <comma separated list of files> specify comma separated files to be copied to the map reduce cluster
-libjars <comma separated list of jars> specify comma separated jar files to include in the classpath.
-archives <comma separated list of archives> specify comma separated archives to be unarchived on the compute machines.
The general command line syntax is
bin/hadoop command [genericOptions] [commandOptions]
2)MapReduce程序的测试,单次频率统计 WordCount程序。
这里好麻烦没记笔记……
分析启动Shell脚本
1)查看start-all.sh 脚本
第一点:此Shell 脚本,仅仅在主节点上执行。
第二点:首先启动DFS文件系统的守护进程,在启动 MapReduce 框架的守护进程。
第三点:启动HDFS文件系统守护进程时,调用 start-dfs.sh Shell脚本。启动MapReduce守护进程时,调用start-mapred.sh Shell脚本。
2)查看start-dfs.sh 脚本
第一点:此脚本运行在DFS文件系统的主节点上。
第二点:如果先启动DataNode守护进程,在没有启动namenode守护进程之前Datanode日志文件中一直出现连接NameNode错误信息。
第三点:启动HDFS守护进程的顺序
第四点:namenode启动,调用的是 hadoop-daemon.sh 脚本
datanode和secondarynamenode启动调用的是hadoop-daemons.sh脚本
第五点:在启动secondarynamenode守护进程服务时,通过参数【–hosts masters】指定哪些机器上运行secondarynamenode服务。由此也验证了配置文件【masters】配置的IP地址为Secondnamenode
服务地址。
Eclipse导入Hadoop源码项目
在Ecilpse新建一个Java项目【hadoop1.2.1】
将Hadoop压缩包解压目录下src下core,hdfs,mapred,tools,examples 五个目录copy到上述新建项目的src目录。
修改Java Build Path——>Configure Build Path…中的【Source】,删除src,添加src/core,src/hdfs,src/mapred,src/tools,src/examples几个源码目录
为Java Build Path添加项目依赖jar,可以导入Hadoop压缩包解压目录下的lib下所有的jar包(别漏掉其子目录jsp-2.1中的jar包)。导入ant程序lib下所有jar包。