技术_工具

MaxCompute Spark 使用和常见问题

2021-01-12  本文已影响0人  阿里云技术

一. MaxCompute Spark 介绍

MaxCompute Spark是MaxCompute提供的兼容开源的Spark计算服务。它在统一的计算资源和数据集权限体系之上,提供Spark计算框架,支持用户以熟悉的开发使用方式提交运行Spark作业,以满足更丰富的数据处理分析场景。

1.1 关键特性

1.2 系统结构

1.3 约束与限制

二. 开发环境搭建

2.1 运行模式

2.2 通过客户端提交

2.2.1 Yarn-Cluster模式

git clone https://github.com/aliyun/MaxCompute-Spark.git
cd spark-2.x
mvn clean package
// bash环境
cd $SPARK_HOME
bin/spark-submit --master yarn-cluster --class com.aliyun.odps.spark.examples.SparkPi \
/path/to/MaxCompute-Spark/spark-2.x/target/spark-examples_2.11-1.0.0-SNAPSHOT-shaded.jar

// 在windows环境提交的命令
cd $SPARK_HOME/bin
spark-submit.cmd --master yarn-cluster --class com.aliyun.odps.spark.examples.SparkPi
\path\to\MaxCompute-Spark\spark-2.x\target\spark-examples_2.11-1.0.0-SNAPSHOT-shaded.jar

2.2.2 Local模式

## Java/Scala
cd $SPARK_HOME
./bin/spark-submit --master local[4] --class com.aliyun.odps.spark.examples.SparkPi \
/path/to/odps-spark-examples/spark-examples/target/spark-examples-2.0.0-SNAPSHOT-shaded.jar

## PySpark
cd $SPARK_HOME
./bin/spark-submit --master local[4] \
/path/to/odps-spark-examples/spark-examples/src/main/python/odps_table_rw.py

2.3 通过DataWorks提交

2.3.1 资源上传

2.3.2 参数和配置

三. 配置介绍

3.1 配置的位置

3.1.1 Spark配置的位置

3.1.2 需要区分的两种配置

3.2 资源相关的参数

spark.executor.instances

spark.executor.cores

spark.executor.memory

spark.yarn.executor.memoryOverhead

spark.driver.cores

spark.driver.memory

spark.yarn.driver.memoryOverhead

spark.driver.maxResultSize

spark.hadoop.odps.cupid.disk.driver.device_size

3.3 平台相关的参数

spark.hadoop.odps.project.name

spark.hadoop.odps.access.id

spark.hadoop.odps.access.key

spark.hadoop.odps.end.point

spark.hadoop.odps.runtime.end.point

spark.hadoop.odps.task.major.version

spark.sql.catalogImplementation

spark.hadoop.odps.cupid.resources

spark.hadoop.odps.cupid.vectorization.enable

spark.hadoop.odps.input.split.size

spark.hadoop.odps.cupid.vpc.domain.list

spark.hadoop.odps.cupid.smartnat.enable

spark.hadoop.odps.cupid.eni.enable

spark.hadoop.odps.cupid.eni.info

spark.hadoop.odps.cupid.engine.running.type

spark.hadoop.odps.cupid.job.capability.duration.hours

spark.hadoop.odps.moye.trackurl.dutation

四. 作业诊断

4.1 Logview

4.1.1 Logview 介绍

4.1.2 利用Logview 排查问题

4.2 Spark UI和HistoryServer

五. 常见问题

1. local模式运行的问题

2. jar包打包的问题

3. 需要引入Python包

## 公共资源python2.7.13
spark.hadoop.odps.cupid.resources = public.python-2.7.13-ucs4.tar.gz
spark.pyspark.python = ./public.python-2.7.13-ucs4.tar.gz/python-2.7.13-ucs4/bin/python

## 公共资源python3.7.9
spark.hadoop.odps.cupid.resources = public.python-3.7.9-ucs4.tar.gz
spark.pyspark.python = ./public.python-3.7.9-ucs4.tar.gz/python-3.7.9-ucs4/bin/python3

4. 需要引入外部文件

(1)通过MaxCompute客户端将文件上传(单个文件最大支持500MB)

(2)在Spark作业配置中添加spark.hadoop.odps.cupid.resources参数:格式为<projectname>.<resourcename>,如果需要引用多个文件,需要用逗号隔开

(3)如果需要重命名,格式为<projectname>.<resourcename>:<new resource name>

val dir = new File(".")
val targetFile = "file://" + dir.getCanonicalPath + "/" +文件名

5. VPC访问的问题

6. OOM的问题

7. No space left on device

8. 申请资源的问题

(1)在driver端一般会打以下日志

(2)在logview中只能看到driver,而worker数量为0

(3)在spark ui中只能看到driver,而worker数量为0

9. 其他问题

spark.hadoop.odps.cupid.resources = public.__spark_libs__2.3.0odps0.32.5.zip spark.driver.extraClassPath = ./public.__spark_libs__2.3.0odps0.32.5.zip/* spark.executor.extraClassPath = ./public.__spark_libs__2.3.0odps0.32.5.zip/*

(1)通过odps cmd 执行 kill + instanceId;

(2)通过dataworks界面执行stop

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

原文链接

本文为阿里云原创内容,未经允许不得转载。

上一篇 下一篇

猜你喜欢

热点阅读