這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)MaxCompute Spark 使用和常見問題有哪些,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
為澄海等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及澄海網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、澄海網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
MaxCompute Spark是MaxCompute提供的兼容開源的Spark計算服務(wù)。它在統(tǒng)一的計算資源和數(shù)據(jù)集權(quán)限體系之上,提供Spark計算框架,支持用戶以熟悉的開發(fā)使用方式提交運行Spark作業(yè),以滿足更豐富的數(shù)據(jù)處理分析場景。
支持原生多版本Spark作業(yè)
社區(qū)原生Spark運行在MaxCompute里,完全兼容Spark的API,支持多個Spark版本同時運行
統(tǒng)一的計算資源
像MaxCompute SQL/MR等任務(wù)類型一樣,運行在MaxCompute項目開通的統(tǒng)一計算資源中
統(tǒng)一的數(shù)據(jù)和權(quán)限管理
遵循MaxCompute項目的權(quán)限體系,在訪問用戶權(quán)限范圍內(nèi)安全地查詢數(shù)據(jù)
與開源系統(tǒng)相同的使用體驗
提供原生的開源實時Spark UI和查詢歷史日志的功能
原生Spark通過MaxCompute Cupid平臺能夠在MaxCompute中運行
目前MaxCompute Spark支持以下適用場景:
離線計算場景:GraphX、Mllib、RDD、Spark-SQL、PySpark等
Streaming場景
讀寫MaxCompute Table
引用MaxCompute中的文件資源
讀寫VPC環(huán)境下的服務(wù),如RDS、redis、HBase、ECS上部署的服務(wù)等
讀寫OSS非結(jié)構(gòu)化存儲
使用限制
不支持交互式類需求Spark-Shell、Spark-SQL-Shell、PySpark-Shell等
不支持訪問MaxCompute外部表,函數(shù)和UDF
只支持Local模式和Yarn-cluster模式運行
通過Spark客戶端提交
Yarn-Cluster模式,提交任務(wù)到MaxCompute集群中
Local模式
通過Dataworks提交
本質(zhì)上也是Yarn-Cluster模式,提交任務(wù)到MaxCompute集群中
下載MC Spark客戶端
Spark 1.6.3
Spark 2.3.0
環(huán)境變量配置
## JAVA_HOME配置 # 推薦使用JDK 1.8 export JAVA_HOME=/path/to/jdk export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH ## SPARK_HOME設(shè)置 # 下載上文提到的MaxCompute Spark客戶端并解壓到本地任意路徑 # 請不要直接設(shè)置SPARK_HOME等于以下路徑下述路徑僅做展示用途 # 請指向正確的路徑 export SPARK_HOME=/path/to/spark_extracted_package export PATH=$SPARK_HOME/bin:$PATH ## PySpark配置Python版本 export PATH=/path/to/python/bin/:$PATH
參數(shù)配置
將$SPARK_HOME/conf/spark-defaults.conf.template 重命名為 spark-defaults.conf
參數(shù)配置參考下文
準備項目工程
git clone https://github.com/aliyun/MaxCompute-Spark.git cd spark-2.x mvn clean package
任務(wù)提交
// bash環(huán)境 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環(huán)境提交的命令 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
IDEA調(diào)試注意
IDEA運行Local模式是不能直接引用spark-defaults.conf里的配置,需要手動在代碼里指定相關(guān)配置
一定要注意需要在IDEA里手動添加MaxCompute Spark客戶端的相關(guān)依賴(jars目錄),否則會出現(xiàn)以下報錯:
the value of spark.sql.catalogimplementation should be one of hive in-memory but was odps
參考文檔
本質(zhì)上MC Spark節(jié)點的配置對應(yīng)于spark-submit命令的參數(shù)和選項
ODPS SPARK節(jié)點spark-submit主Java、Python資源app jar or python file配置項--conf PROP=VALUEMain Class--class CLASS_NAME參數(shù)[app arguments]選擇JAR資源--jars JARS選擇Python資源--py-files PY_FILES選擇File資源--files FILES選擇Archives資源
--archives
上傳資源:
0~50MB:可以直接在DataWorks界面創(chuàng)建資源并上傳
50MB~500MB:可以先利用MaxCompute客戶端(CMD)上傳,然后在DataWorks界面添加到數(shù)據(jù)開發(fā),參考文檔
資源引用:
資源提交后,可以在DataWorks Spark節(jié)點界面選擇需要的資源(jar/python/file/archive)
任務(wù)運行時:資源文件默認會上傳到Driver和Executor的當(dāng)前工作目錄
Spark 配置項:對應(yīng)于spark-submit命令的--conf選項
accessid,accesskey,projectname,endpoint,runtime.end.point,task.major.version無需配置
除此之外,需要將spark-default.conf中的配置逐條加到dataworks的配置項中
給主類傳參數(shù)(如bizdate)
首先在調(diào)度->參數(shù)中添加參數(shù),然后在Spark節(jié)點“參數(shù)”欄引用該參數(shù)。多個參數(shù)用空格分隔
該參數(shù)會傳給用戶主類,用戶在代碼中解析該參數(shù)即可
參考文檔
用戶使用Maxcompute Spark通常會有幾個位置可以添加Spark配置,主要包括:
位置1:spark-defaults.conf,用戶通過客戶端提交時在spark-defaults.conf文件中添加的Spark配置
位置2:dataworks的配置項,用戶通過dataworks提交時在配置項添加的Spark配置,這部分配置最終會在位置3中被添加
位置3:配置在啟動腳本spark-submit --conf選項中
位置4:配置在用戶代碼中,用戶在初始化SparkContext時設(shè)置的Spark配置
Spark配置的優(yōu)先級
用戶代碼 > spark-submit --選項 > spark-defaults.conf配置 > spark-env.sh配置 > 默認值
一種是必須要配置在spark-defaults.conf或者dataworks的配置項中才能生效(在任務(wù)提交之前需要),而不能配置在用戶代碼中,這類配置主要的特征是:
與Maxcompute/Cupid平臺相關(guān):一般參數(shù)名中都會帶odps或者cupid,通常這些參數(shù)與任務(wù)提交/資源申請都關(guān)系:
顯而易見,一些資源獲取(如driver的內(nèi)存,core,diskdriver,maxcompute資源),在任務(wù)執(zhí)行之前就會用到,如果這些參數(shù)設(shè)置在代碼中,很明顯平臺沒有辦法讀到,所以這些參數(shù)一定不要配置在代碼中
其中一些參數(shù)即使配置在代碼中,也不會造成任務(wù)失敗,但是不會生效
其中一些參數(shù)配置在代碼中,可能會造成副作用:如在yarn-cluster模式下設(shè)置spark.master為local
訪問VPC的參數(shù):
這類參數(shù)也與平臺相關(guān),打通網(wǎng)絡(luò)是在提交任務(wù)時就進行的
一種是在以上三種位置配置都可以生效,但是在代碼配置的優(yōu)先級最高
推薦把任務(wù)運行與優(yōu)化相關(guān)的參數(shù)配置在代碼中,而與資源平臺相關(guān)的配置都配置在spark-defaults.conf或者dataworks的配置項中。
在任務(wù)提交時會打印日志: 日志中含有logview鏈接 (關(guān)鍵字 logview url)
Master以及Worker的StdErr打印的是spark引擎輸出的日志,StdOut中打印用戶作業(yè)輸出到控制臺的內(nèi)容
拿到Logview,一般首先看Driver的報錯,Driver會包含一些關(guān)鍵性的錯誤
如果Driver中出現(xiàn)類或者方法找不到的問題,一般是jar包打包的問題
如果Driver中出現(xiàn)連接外部VPC或者OSS出現(xiàn)Time out,這種情況一般要去排查一下參數(shù)配置
如果Driver中出現(xiàn)連接不到Executor,或者找不到Chunk等錯誤,通常是Executor已經(jīng)提前退出,需要進一步查看Executor的報錯,可能存在OOM
根據(jù)End Time做排序,結(jié)束時間越早,越容易是發(fā)生問題的Executor節(jié)點
根據(jù)Latency做排序,Latency代表了Executor的存活的時間,存活時間越短的,越有可能是根因所在
Spark UI的使用與社區(qū)原生版是一致的,可以參考文檔
注意
Spark UI需要鑒權(quán),只有提交任務(wù)的Owner才能打開
Spark UI僅在作業(yè)運行時才能打開,如果任務(wù)已經(jīng)結(jié)束,那么Spark UI是無法打開的,這時候需要查看Spark History Server UI
問題一:the value of spark.sql.catalogimplementation should be one of hive in-memory but was odps
原因在于用戶沒有正確地按照文檔將Maxcompute Spark的jars目錄添加到類路徑,導(dǎo)致加載了社區(qū)版的spark包,需要按照文檔將jars目錄添加到類路徑
問題二:IDEA Local模式是不能直接引用spark-defaults.conf里的配置,必須要把Spark配置項寫在代碼中
問題三:訪問OSS和VPC:
Local模式是處于用戶本機環(huán)境,網(wǎng)絡(luò)沒有隔離。而Yarn-Cluster模式是處于Maxcompute的網(wǎng)絡(luò)隔離環(huán)境中,必須要要配置vpc訪問的相關(guān)參數(shù)
Local模式下訪問oss的endpoint通常是外網(wǎng)endpoint,而Yarn-cluster模式下訪問vpc的endpoint是經(jīng)典網(wǎng)絡(luò)endpoint
java/scala程序經(jīng)常會遇到Java類找不到/類沖突問題:
類沖突:用戶Jar包與Spark或平臺依賴的Jar包沖突
類沒有找到:用戶Jar包沒有打成Fat Jar或者由于類沖突引起
打包需要注意:
依賴為provided和compile的區(qū)別:
provided:代碼依賴該jar包,但是只在編譯的時候需要用,而運行時不需要,運行時會去集群中去尋找的相應(yīng)的jar包
compile:代碼依賴該jar包,在編譯、運行時候都需要,在集群中不存在這些jar包,需要用戶打到自己的jar包中。這種類型的jar包一般是一些三方庫,且與spark運行無關(guān),與用戶代碼邏輯有關(guān)
用戶提交的jar包必須是Fat jar:
必須要把compile類型的依賴都打到用戶jar包中,保證代碼運行時能加載到這些依賴的類
需要設(shè)置為provided的jar包
groupId為org.apache.spark的Jar包
平臺相關(guān)的Jar包
cupid-sdk
hadoop-yarn-client
odps-sdk
需要設(shè)置為compile的jar包
oss相關(guān)的jar包
hadoop-fs-oss
用戶訪問其他服務(wù)用到的jar包:
如MySQL,hbase
用戶代碼需要引用的第三方庫
很多時候用戶需要用到外部Python依賴
首先推薦用戶使用我們打包的公共資源,包含了常用的一些數(shù)據(jù)處理,計算,以及連接外部服務(wù)(mysql,redis,hbase)的三方庫
## 公共資源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
上述就是小編為大家分享的MaxCompute Spark 使用和常見問題有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文標題:MaxComputeSpark使用和常見問題有哪些
URL地址:http://muchs.cn/article20/gecsco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、手機網(wǎng)站建設(shè)、域名注冊、營銷型網(wǎng)站建設(shè)、微信小程序、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)