启动spark-shell遇到的一些问题

执行: spark-shell

1、报When running with master 'yarn' either HADOOP_CONF_DIR or YARN_CONF_DIR must be set in th environmwnt

原因是没有配置之前在/etc/profile下配置了hadoop的环境变量,但是没有配置HADOOP_CONF_DIR

启动spark-shell遇到的一些问题_第1张图片

解决办法:

vim /Users/zheng/spark/spark-3.0.0/conf/spark-env.sh

#加上以下环境变量
export HADOOP_CONF_DIR=/Users/zheng/hadoop/hadoop-3.2.1/etc/hadoop

 

2、重启 spark-shell,出现警告, Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.

启动spark-shell遇到的一些问题_第2张图片

解决方式:

在/Users/zheng/spark/spark-3.0.0/conf/spark-defaults.conf加上spark.yarn.jars                  hdfs://localhost:9000/spark/jars

注意:/spark/jars为hdfs上的目录,需要提前创建好,否则启动spark-shell会报错

 

3、再重启spark-shell ,报找不到或无法加载主类 org.apache.spark.deploy.yarn.ExecutorLauncher:

启动spark-shell遇到的一些问题_第3张图片

在http://localhost:8088/cluster可看见该应用,点进去也可以看见错误信息

启动spark-shell遇到的一些问题_第4张图片

启动spark-shell遇到的一些问题_第5张图片

原因是没有把/spark-3.0.0/jars下的jar包上传到hdfs上

解决方式:

#上传jar包
hdfs dfs  -put $SPARK_HOME/jars/*  /spark/jars/

上传完后:

启动spark-shell遇到的一些问题_第6张图片

 

重启,还是报了同样的错误,最后尝试把/spark-3.0.0/conf/spark-defaults.conf文件下的spark.yarn.jars参数修改为spark.yarn.archive再启动,启动成功

启动spark-shell遇到的一些问题_第7张图片

总结,最后尝试这两种其实是一样的:

spark.yarn.archive               hdfs://localhost:9000/spark/jars
spark.yarn.jars                     hdfs://localhost:9000/spark/jars/*.jar

spark.yarn.jars和spark.yarn.archive异同:

相同:spark默认会使用spark本地的jars(即$SPARK_HOME/jars下的jar),且每次使用都需要上传,但是可以通过设置这两个参数把jar包放在hdfs目录下,可以缓存在节点上,而不需要application每次跑的时候去获取

不同:spark.yarn.archive是把所有jar文件打成一个zip文件上传到节点,上传速度会快点,但是用到的时候需要解压缩。而spark.yarn.jars是把所有jar文件上传,上传会慢点,但是不需要解压可以直接使用

ps:关于spark.yarn.jars或spark.yarn.archive官方文档解释启动spark-shell遇到的一些问题_第8张图片

 

你可能感兴趣的:(spark)