运行yarn上的第一个实例——distributedshell
一、关于DistributedShell
DistributedShell是一个可以分布式运行shell命令的应用程序,可以并行执行用户提供的shell脚本和shell命令。
Dshell是yarn(我用的是hadoop-2.3.0版本和hadoop-2.4.0版本)自带的运行实例。它在share/hadoop/yarn/目录下,是一个叫做hadoop-yarn-applications-distributedshell-2.3.0.jar的jar包。
/share目录存放了hadoop各个模块,如yarn,HDFS,MapReduce编译后生成的jar包,dshell实例的jar包就位于这个目录之下。
我部署的hadoop是在使用centOS的服务器上的,截图如下,黄色框部分是所说的dshell的jar包
二、运行DistributedShell
运行dshell之前,需要确保部署的cluster已经启动。
如果没有启动可以在作为master的server上,使用脚本/sbin/start-all.sh或者/sbin/start-dfs.sh以及/sbin/start-yarn.sh分别启动。通过jps命令查看几个重要的进程是否已经启动,其中RM和NM是必须要有的,否则运行时候会出错,或者没法成功执行dshell
使用hadoop jar脚本运行“一、关于DistributedShell ”中提到的Dshell包。
hadoop jar 是/bin/目录下的一个hadoop shell,用于向Client提交作业。它的用法是 hadoop jar <jar> [mainClass] args...其中<jar>表示需要提交的jar包名字。 [mainClass]表示main class的名字,可以不用输入。args是main class输入参量。
/bin/存放了hadoop最基本的使用脚本和管理脚本。这些脚本是?sbin/目录下其他脚本的实现基础,用户可以通过这些scripts直接使用和管理hadoop cluster。
输入如下黄色框中的命令,就可以运行dshell了。其中输入\和enter可以实现换行输入。
然后根据下面提示的脚本使用说明就可以使用dshell脚本了。
举个例子,使用-jar包含AM实现的dshell jar包,使用-num_containers分配7个container,使用-container_memory 270指定shell command的container内存大小为270MB,运行的结果如截图显示,使用-shell_command ls通过shell命令进行查看。
注意如果一个NM都没有启动,图上的numNodeManagers=0,那么dshell将不能运行成功。所以在运行dshell之前务必要保证cluster中至少有一个启动的nodemanager。
如果出现上面图中黄色框中的日志记录,则表示作业已经提交运行了。
出现上面截图中黄色框中的日志记录表明dshell已经成功执行!