Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PySpark应用程序在纱线簇模式和独立模式下提交错误_Python_Apache Spark_Hadoop_Pyspark - Fatal编程技术网

Python PySpark应用程序在纱线簇模式和独立模式下提交错误

Python PySpark应用程序在纱线簇模式和独立模式下提交错误,python,apache-spark,hadoop,pyspark,Python,Apache Spark,Hadoop,Pyspark,环境: Python : 3.6.8 OS: CentOS 7 Spark: 2.4.5 Hadoop:2.7.7 Hardware: 3 computers (8 VCores available for each computer on hadoop cluster) 我构建了一个简单的python应用程序。我的代码是: 将numpy导入为np 从pyspark.sql导入SparkSession spark=SparkSession.builder\ .appName('

环境:

Python : 3.6.8  
OS: CentOS 7  
Spark: 2.4.5  
Hadoop:2.7.7  
Hardware: 3 computers (8 VCores available for each computer on hadoop cluster)
我构建了一个简单的python应用程序。我的代码是:

将numpy导入为np
从pyspark.sql导入SparkSession
spark=SparkSession.builder\
.appName('test\u use\u numpy')\
.getOrCreate()
sc=spark.sparkContext
rdd=sc.parallelize(np.arange(100))
saveAsTextFile('/result/numpy_test')
spark.stop()
我将虚拟环境打包为venv.zip,并将其放在hdfs上。我使用以下命令提交了应用程序:

/allBigData/spark/bin/spark-submit \
--master yarn --deploy-mode cluster --num-executors 10 \
--conf spark.yarn.dist.archives=hdfs:///spark/python/venv.zip#pyenv \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=pyenv/venv/bin/python \
/home/spark/workspace_python/test.py
我得到了一个错误:
pyenv/venv/bin/python:加载共享库时出错:libpython3.6m.so.1.0:无法打开共享对象文件:没有这样的文件或目录

20/06/23 15:09:08 ERROR yarn.ApplicationMaster: User application exited with status 127
20/06/23 15:09:08 INFO yarn.ApplicationMaster: Final app status: FAILED, exitCode: 13, (reason: User application exited with status 127)
pyenv/venv/bin/python: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
我在venv.zip中没有找到libpython3.6m.so.1.0,但我在centos上找到了libpython3.6m.so.1.0。我试着把它放在venv/bin/,venv/lib/目录中,但它们都不起作用。我还是犯了同样的错误。
然后,我尝试使用以下命令提交应用程序:

/allBigData/spark/bin/spark-submit \
--master spark://master:7077 --num-executors 10 \
--conf spark.yarn.dist.archives=/home/spark/workspace_python/venv.zip#pyenv \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=pyenv/venv/bin/python \
/home/spark/workspace_python/test.py
我得到了一个不同的错误:
ModuleNotFoundError:没有名为'numpy'的模块


有人能帮我解决这个问题吗?

您需要使用spark submit
--archive
标记传递python.zip。
当客户端使用spark submit的
--archives
命令行选项分配指定的其他资源时,将使用该选项

并添加
PYSPARK\u驱动程序\u PYTHON

/allBigData/spark/bin/spark提交\
--主纱线--部署模式群集--num executors 10\
--档案hdfs:///spark/python/venv.zip#pyenv \
--conf spark.spirn.appMasterEnv.PYSPARK_PYTHON=pyenv/venv/bin/PYTHON\
--conf spark.spirn.appMasterEnv.PYSPARK\u DRIVER\u PYTHON=pyenv/venv/bin/PYTHON\
/home/spark/workspace\u python/test.py

您需要使用spark submit
--archive
标记传递python.zip。
当客户端使用spark submit的
--archives
命令行选项分配指定的其他资源时,将使用该选项

并添加
PYSPARK\u驱动程序\u PYTHON

/allBigData/spark/bin/spark提交\
--主纱线--部署模式群集--num executors 10\
--档案hdfs:///spark/python/venv.zip#pyenv \
--conf spark.spirn.appMasterEnv.PYSPARK_PYTHON=pyenv/venv/bin/PYTHON\
--conf spark.spirn.appMasterEnv.PYSPARK\u DRIVER\u PYTHON=pyenv/venv/bin/PYTHON\
/home/spark/workspace\u python/test.py

有关群集的其他说明:
群集中有三个工人/节点/计算机。我在工人A上构建应用程序/代码。工人A也作为主机器工作。其他人已经在worker A上安装了Python。我在worker B和C上手动安装了Python

我找到了一个笨拙的解决办法。
我在venv.zip和辅助程序B和C的python安装目录中找不到libpython3.6m.so.1.0。但是我可以在辅助程序A上找到它。在我使用命令在B和C上手动安装python之前:
/configure--with-ssl--prefix=/usr/local/python3

我使用命令在两台计算机上重新安装了python:
/configure--prefix=/usr/local/python3--enable shared CFLAGS=-fPIC

安装后,我将libpython3.6m.so.1.0复制到目录/usr/lib64/。这样就可以在两个工人身上找到libpython3.6m.so.1.0。然后我提交了python应用程序,得到了一个不同的错误:
pyenv/venv/bin/python:符号查找错误:pyenv/venv/bin/python:未定义的符号:_Py_LegacyLocaleDetected

我使用ldd命令查找pyenv/venv/bin/python的依赖项,怀疑工作程序A和其他两个工作程序的依赖项的不同安装目录可能是原因。因此,我按照worker B和C的相同步骤在worker A上重新安装了python。然后我提交了应用程序,并使用以下命令成功完成:

/allBigData/spark/bin/spark-submit \
--master yarn --deploy-mode cluster --num-executors 10 \
--conf spark.yarn.dist.archives=hdfs:///spark/python/venv.zip#pyenv \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=pyenv/venv/bin/python \
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=pyenv/venv/bin/python \
/home/spark/workspace_python/test.py
/allBigData/spark/bin/spark-submit \
--master spark://master:7077 --num-executors 10 \
--archives hdfs:///spark/python/venv.zip#pyenv \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=pyenv/venv/bin/python \
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=pyenv/venv/bin/python \
/home/spark/workspace_python/test.py
但是,我仍然无法在独立模式下成功提交应用程序。我使用命令时出错:

/allBigData/spark/bin/spark-submit \
--master yarn --deploy-mode cluster --num-executors 10 \
--conf spark.yarn.dist.archives=hdfs:///spark/python/venv.zip#pyenv \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=pyenv/venv/bin/python \
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=pyenv/venv/bin/python \
/home/spark/workspace_python/test.py
/allBigData/spark/bin/spark-submit \
--master spark://master:7077 --num-executors 10 \
--archives hdfs:///spark/python/venv.zip#pyenv \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=pyenv/venv/bin/python \
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=pyenv/venv/bin/python \
/home/spark/workspace_python/test.py

我假设我针对PYTHON的路径设置了错误的属性参数(spark.spirn.appMasterEnv.PYSPARK\u PYTHON/spark.spirn.appMasterEnv.PYSPARK\u DRIVER\u PYTHON)。但我不知道如何修改这些。如有任何建议,将不胜感激。

有关群集的其他说明:
群集中有三个工人/节点/计算机。我在工人A上构建应用程序/代码。工人A也作为主机器工作。其他人已经在worker A上安装了Python。我在worker B和C上手动安装了Python

我找到了一个笨拙的解决办法。
我在venv.zip和辅助程序B和C的python安装目录中找不到libpython3.6m.so.1.0。但是我可以在辅助程序A上找到它。在我使用命令在B和C上手动安装python之前:
/configure--with-ssl--prefix=/usr/local/python3

我使用命令在两台计算机上重新安装了python:
/configure--prefix=/usr/local/python3--enable shared CFLAGS=-fPIC

安装后,我将libpython3.6m.so.1.0复制到目录/usr/lib64/。这样就可以在两个工人身上找到libpython3.6m.so.1.0。然后我提交了python应用程序,得到了一个不同的错误:
pyenv/venv/bin/python:符号查找错误:pyenv/venv/bin/python:未定义的符号:_Py_LegacyLocaleDetected

我使用ldd命令查找pyenv/venv/bin/python的依赖项,怀疑工作程序A和其他两个工作程序的依赖项的不同安装目录可能是原因。因此,我按照worker B和C的相同步骤在worker A上重新安装了python。然后我提交了应用程序,并使用以下命令成功完成:

/allBigData/spark/bin/spark-submit \
--master yarn --deploy-mode cluster --num-executors 10 \
--conf spark.yarn.dist.archives=hdfs:///spark/python/venv.zip#pyenv \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=pyenv/venv/bin/python \
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=pyenv/venv/bin/python \
/home/spark/workspace_python/test.py
/allBigData/spark/bin/spark-submit \
--master spark://master:7077 --num-executors 10 \
--archives hdfs:///spark/python/venv.zip#pyenv \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=pyenv/venv/bin/python \
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=pyenv/venv/bin/python \
/home/spark/workspace_python/test.py
但是,我仍然无法在独立模式下成功提交应用程序。我使用命令时出错:

/allBigData/spark/bin/spark-submit \
--master yarn --deploy-mode cluster --num-executors 10 \
--conf spark.yarn.dist.archives=hdfs:///spark/python/venv.zip#pyenv \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=pyenv/venv/bin/python \
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=pyenv/venv/bin/python \
/home/spark/workspace_python/test.py
/allBigData/spark/bin/spark-submit \
--master spark://master:7077 --num-executors 10 \
--archives hdfs:///spark/python/venv.zip#pyenv \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=pyenv/venv/bin/python \
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=pyenv/venv/bin/python \
/home/spark/workspace_python/test.py