hadoop中提供sls来进行单机模拟。为缺少大集群的用户提供了便利。如何运行?
1.配置hadoop安装前的环境:
hadoop环境准备-centos7 安装java jdk8
2.安装Hadoop:
安装好后,对环境变量进行配置:
sudo vim /etc/profile
在最后添加:
HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
这一步是将hadoop的一些二进制文件也就是命令放入环境变量,方便以后调用。
然后将java路径配置给etc/hadoop/hadoop_env.sh
export JAVA_HOME="/usr/java/jdk1.8.0_161"
3.配置并运行SLS
可以参考博文:(SLS)-调度模拟器配置
不想看那么长博文的同学也可以看如下的精简说明:
a. 通过rumen2sls.sh脚本将rumen文件转化为sls文件:
$HADOOP_HOME/share/hadoop/tools/sls/bin/rumen2sls.sh \
--rumen-file=$HADOOP_HOME/share/hadoop/tools/sls/sample-data/2jobs2min-rumen-jh.json \
--output-dir=/home/c/sls/output2/
在sls/sample-data文件夹下,官方给我们提供了一个rumen的例子文件,转换成的sls文件存在在output-dir中,这里最好用绝对路径,不然容易找不到。
成功后会在output2文件夹下找到两个文件:sls-jobs.json sls-nodes.json
这两个文件就是runsls.sh脚本需要的。
b.运行runsls.sh脚本:注意,在sls目录下运行
sh $HADOOP_HOME/share/hadoop/tools/sls/bin/slsrun.sh --input-sls=/home/c/sls/output2/sls-jobs.json --nodes=/home/c/sls/output2/sls-nodes.json --output-dir=/home/c/sls/output1 --print-simulation
参数,input-sls就是生成的sls-jobs.json,--nodes参数就是生成的sls-nodes.json,--output-dir就是生成的数据和日志所在位置。
在运行过程中可能会碰到很多问题。
1.报错
Exception in thread "main" java.lang.RuntimeException:
java.lang.NullPointerException
at
org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:131)
2.报错
Java.lang.NullPointerException
at org.apache.hadoop.yarn.sls.web.SLSWebApp.(SLSWebApp.java:86
3.报错
18/07/11 16:58:48 WARN capacity.CapacityScheduler: Couldn't find application application_1531299523163_0001
解决方案见另一片博文:
hadoop-yarn SLS运行中的问题