一、uploading file太慢,上传程序依赖的jar包,大约耗时30s左右,造成提交缓慢
官网解决办法:如果想要在yarn端(yarn的节点)访问spark的runtime jars,需要指定spark.yarn.archive 或者 spark.yarn.jars。如果都这两个参数都没有指定,spark就会把$SPARK_HOME/jars/所有的jar上传到分布式缓存中。这也是之前任务提交特别慢的原因。
1、将$SPARK_HOME/相关依赖jar包上传到hdfs上
hadoop fs -mkdir /wis/tmp
hadoop fs -put /opt/cloudera/parcels/spark-1.6.3-bin-hadoop2.6/lib/spark-*.jar /wis/tmp/
2、修改spark-default.conf参数,添加:
spark.yarn.jars hdfs://sparkjars/*.jar
3、修改作业提交脚本中jar路径为hdfs路径,不然还是会以本地提交jar到hdfs,影响效率
二、spark认不到HADOOP_HOME
spark-env.sh中添加如下配置
export HADOOP_HOME=/home/hadoop/app/new-hadoop-2.6.0-cdh5.7.0
export SPARK_HOME=/home/hadoop/app/spark-2.2.0-bin-2.6.0-cdh5.7.0
export HADOOP_CONF_DIR=/home/hadoop/app/new-hadoop-2.6.0-cdh5.7.0/etc/hadoop
if [ -n "$HADOOP_HOME" ]; then
export LD_LIBRARY_PATH=:/lib/native
fi