HiBench7部署过程遇到的问题汇总

1. Get workers from yarn-site.xml page failed

HiBench7部署过程遇到的问题汇总_第1张图片
解决方法:
在HiBench安装目录conf目录下修改hibench.conf文件,要配置hibench.masters.hostnames 和hibench.slaves.hostnames两项。
配置为集群的master节点和slaves节点对应的主机名。

hibench.masters.hostnames       node1.novalocal
hibench.slaves.hostnames        node1.novalocal node2.novalocal node3.novalocal

2. 运行wordcount例子的run.sh报错

运行spark例子在yarn-client模式下报错。报错信息如下:
ERROR YarnClientSchedulerBackend: YARN application has exited unexpectedly with state UNDEFINED!
HiBench7部署过程遇到的问题汇总_第2张图片
解法1:修改conf/spark.conf文件。改为standalone模式。

hibench.spark.master    spark://node1.novalocal:7077

解法2:只需要将hadoop集群的yarn-site.xml配置中加入如下两行即可解决。


    yarn.nodemanager.pmem-check-enabled
    false


    yarn.nodemanager.vmem-check-enabled
    false

用java8多会出现这个错误。

3. 没有生成monitor.html文件

github上的hibench上也有人提问这个问题,有回答说是SSH免密钥的问题。因为需要SSh连接其他节点并收集其他节点的信息。所以首先检查免秘钥要是否配置完好。
还有一种可能是没有配置hibench.slaves.hostnames。注意多个slaves之间用空格隔开。

hibench.masters.hostnames       node1.novalocal
hibench.slaves.hostnames        node1.novalocal node2.novalocal node3.novalocal

因为monitor.py存在以下代码,如果没有配置hibench.slaves.hostnames,则不存在监视器。

nodes = sorted(list(set(nodes)))
for node in nodes:
na.append(P(node, PROBE_INTERVAL))

我的没有生成monitor.html文件的原因就是因为hibench.slaves.hostnames设置错误。

4. 利用hibench运行的job其job history没有写入记录历史job的hdfs上。

也就是说在配置的存放历史job记录的hdfs上并未发现有hibench运行的job的记录。假设历史job信息存放在hdfs的/history目录下。以下记录的两个job都是用spark-shell运行的。
HiBench7部署过程遇到的问题汇总_第3张图片
解决方法:
找到spark安装目录下conf目录下spark-defaults.conf文件的以下三个参数:

spark.eventLog.enabled	true
spark.yarn.historyServer.address	node1.novalocal:18080
spark.eventLog.dir	hdfs://node1.novalocal:9000/history/

将上述三个参数拼接成用于spark-submit的conf信息:

--conf "spark.eventLog.enabled=true" --conf "spark.yarn.historyServer.address=node1.novalocal:18080" --conf "spark.eventLog.dir=hdfs://node1.novalocal:9000/history/" 

然后修改HiBench目录下bin/functions/workload_functions.sh文件。
修改前:
在这里插入图片描述

if [[ "$CLS" == *.py ]]; then
        LIB_JARS="$LIB_JARS --jars ${SPARKBENCH_JAR}"
        SUBMIT_CMD="${SPARK_HOME}/bin/spark-submit ${LIB_JARS} --properties-file ${SPARK_PROP_CONF} --master ${SPARK_MASTER} ${YARN_OPTS} ${CLS} $@"
    else
        SUBMIT_CMD="${SPARK_HOME}/bin/spark-submit ${LIB_JARS} --properties-file ${SPARK_PROP_CONF} --class ${CLS} --master ${SPARK_MASTER} ${YARN_OPTS} ${SPARKBENCH_JAR} $@"

HiBench7部署过程遇到的问题汇总_第4张图片

if [[ "$CLS" == *.py ]]; then
        LIB_JARS="$LIB_JARS --jars ${SPARKBENCH_JAR}"
        SUBMIT_CMD="${SPARK_HOME}/bin/spark-submit ${LIB_JARS} --conf "spark.eventLog.enabled=true" --conf "spark.yarn.historyServer.address=node1.novalocal:18080" --conf "spark.eventLog.dir=hdfs://node1.novalocal:9000/history/"  --properties-file ${SPARK_PROP_CONF} --master ${SPARK_MASTER} ${YARN_OPTS} ${CLS} $@"
    else
        SUBMIT_CMD="${SPARK_HOME}/bin/spark-submit ${LIB_JARS} --conf "spark.eventLog.enabled=true" --conf "spark.yarn.historyServer.address=node1.novalocal:18080" --conf "spark.eventLog.dir=hdfs://node1.novalocal:9000/history/"  --properties-file ${SPARK_PROP_CONF} --class ${CLS} --master ${SPARK_MASTER} ${YARN_OPTS} ${SPARKBENCH_JAR} $@"

再重新运行HiBench中的job发现hdfs上出现对应文件。
HiBench7部署过程遇到的问题汇总_第5张图片

附:如何显示spark的history job网页

也就是说spark的18080端口打不开,显示网页打不开。

  • 修改spark安装目录下的spark-defaults.conf文件,加入以下内容:
spark.eventLog.enabled           true
spark.eventLog.dir      hdfs://node1.novalocal:9000/history
spark.eventLog.compress          true

第二个参数代表hdfs上存放历史job信息的目录。

  • 在hdfs上新建存放History的目录
hadoop fs -mkdir /history
  • 修改spark安装目录下的spark-env.sh文件,加入以下内容:
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://node1.novalocal:9000/history"

注意将上述语句中的主机名修改成自己的。

  • 打开spark的history-server服务
    运行spark安装目录下sbin目录下的脚本。spark默认是不启动该服务的。
 ./start-history-server.sh

然后浏览器打开master_ip:18080发现界面可以显示了。
但是我还发现History Server页面可以显示,但是hdfs上有记录job的历史信息而Spark的History Server页面却没有已完成的job的记录。
结果发现跟配置无关,是浏览器的问题,换个浏览器就好了。换成chrome浏览器就显示出来了。太生气了!!!!!

你可能感兴趣的:(HiBench7部署过程遇到的问题汇总)