---
title: 问题分析
description: "- 以PySpark任务提交的独立Python包中为Arm架构的Python为二进制文件例进行说明。由于集群为x86与Arm混合部署，因此在x86节点上运行Arm二进制文件的Python时会失败。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/ecosystemEnable/Spark/kunpengspark_20_0006.html
sourcePath: /source/zh/kunpengbds/ecosystemEnable/Spark/kunpengspark_20_0006.html
indexId: ecf6f48af984a7b123e0ab91a339324098d789243e49b16783804ac8c4a9b20569
---
# 问题分析

- 以PySpark任务提交的独立Python包中为Arm架构的Python为二进制文件例进行说明。由于集群为x86与Arm混合部署，因此在x86节点上运行Arm二进制文件的Python时会失败。
- 任务脚本“/opt/test_spark.py”为举例脚本，可用其他PySpark任务替代。test_spark.py脚本内容如下。
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # test_spark.py import os import sys from pyspark import SparkContext from pyspark import SparkConf conf = SparkConf() conf.setAppName("get-hosts") sc = SparkContext(conf=conf) def noop(x): import socket import sys return socket.gethostname() + ' '.join(sys.path) + ' '.join(os.environ) rdd = sc.parallelize(range(1000), 100) hosts = rdd.map(noop).distinct().collect() print(hosts)


1. 提交PySpark任务。
  1 PYSPARK_PYTHON=./ANACONDA/mlpy_env/bin/python spark-submit --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./ANACONDA/mlpy_env/bin/python --conf spark.executorEnv.PYSPARK_PYTHON=./ANACONDA/mlpy_env/bin/python --master yarn-cluster --archives /opt/mlpy_env.zip#ANACONDA /opt/test_spark.py

2. 分析Spark2 History服务中的任务运行情况。
  executors运行情况如下图：

  其中，agent1为x86服务器，agent2为Arm服务器。agent1上运行失败是由于独立Python包中打包的是Arm版本的Python，导致在x86服务器上运行失败。

  运行失败的executor的错误日志为：

3. 分析archives文件“/opt/mlpy_env.zip”流转过程。

  - 任务提交后会将独立Python压缩包上传至HDFS中。
    1 20/07/22 19:00:51 INFO Client: Uploading resource file:/home/mlpy_env.zip#ANACONDA -> hdfs://server1:8020/user/hdfs/.sparkStaging/application_1595415474950_0002/mlpy_env.zip

  - Container加载时会下载独立Python压缩包并解压。
    压缩包的下载路径在yarn.nodemanager.local-dirs配置的目录下。
