我正试图在Hadoop集群上运行spark-submit
命令以下是我的Hadoop集群摘要:
- 集群是使用连接在内部网络上的5个VirtualBox虚拟机构建的
- 创建了1个名称节点和4个数据节点
- 所有虚拟机都是从Bitnami Hadoop Stack VirtualBox映像构建的
当我运行以下命令时:
spark-submit --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples_2.12-3.0.3.jar 10
我收到以下错误:
java.io.FileNotFoundException: File file:/home/bitnami/sparkStaging/bitnami/.sparkStaging/application_1658417340986_0002/__spark_conf__.zip does not exist
我在尝试使用PySpark:创建sparkSession时也遇到了类似的错误
spark = SparkSession.builder.appName('appName').getOrCreate()
我已经尝试/验证了以下
- 环境变量:
HADOOP_HOME
、SPARK_HOME
和HADOOP_CONF_DIR
已在我的.bashrc
文件中设置 - CCD_ 11中定义了CCD_ 9和CCD_
- 在
spark-defaults.conf
中增加了spark.master yarn
、spark.yarn.stagingDir file:///home/bitnami/sparkStaging
和spark.yarn.jars file:///opt/bitnami/hadoop/spark/jars/
我认为spark.yarn.stagingDir
需要是HDFS路径。
更具体地说;YARN暂存目录";需要在所有Spark执行器上可用,而不仅仅是运行spark-submit
的本地文件路径
找不到的路径是从YARN集群报告的,其中/home/bitnami
可能不存在,或者运行Spark执行器容器的Unix用户没有访问该路径的权限。
类似地,spark.yarn.jars
(或spark.yarn.archive
(应该是HDFS路径,因为这些路径将在所有执行器中并行下载。
由于spark作业应该提交给YARN管理的Hadoop集群,因此必须设置master
和deploy-mode
。来自火花3.3.0文档:
# Run on a YARN cluster in cluster deploy mode
export HADOOP_CONF_DIR=XXX
./bin/spark-submit
--class org.apache.spark.examples.SparkPi
--master yarn
--deploy-mode cluster
--executor-memory 20G
--num-executors 50
/path/to/examples.jar
1000
或者通过程序:
spark = SparkSession.builder().appName('appName').master("yarn").config("spark.submit.deployMode","cluster").getOrCreate()