1spark執(zhí)行流程

spark安裝教程http://dblab.xmu.edu.cn/blog/install-hadoop/,問題解決https://www.cnblogs.com/woofwoof/p/10024104.html
Hadoop 2.7分布式集群環(huán)境搭建:http://dblab.xmu.edu.cn/blog/1177-2/
spark集群環(huán)境搭建:https://www.cnblogs.com/ZJdiem/p/11664634.html

1spark執(zhí)行流程

執(zhí)行應(yīng)用,主節(jié)點(diǎn)中的driver節(jié)點(diǎn)向集群資源管理器申請資源,申請到資源后啟動executeor進(jìn)程,并且向executor進(jìn)程發(fā)送代碼和文件,然后應(yīng)用程序在executor進(jìn)程上派發(fā)出線程執(zhí)行任務(wù),最后執(zhí)行結(jié)束后把執(zhí)行結(jié)果返回給driver主控節(jié)點(diǎn)提交給用戶,或者把他寫入hdfs或者寫入數(shù)據(jù)庫。

1.1RDD特點(diǎn)

RDD是一個只讀的高度受限的共享內(nèi)存模型,只能在轉(zhuǎn)換的過程當(dāng)中才能修改,
RDD有兩種操作類型,Action動作類型操作,Transformation轉(zhuǎn)換類型操作,都是粗粒度的操作(一次針對rdd全集進(jìn)行進(jìn)行轉(zhuǎn)換),不適合對數(shù)據(jù)庫單條記錄進(jìn)行修改。

1.2RDD典型的執(zhí)行過程

1.RDD讀入外部數(shù)據(jù)源進(jìn)行創(chuàng)建;
2.RDD經(jīng)過一系列的轉(zhuǎn)換(Transformation)操作,每一次都會產(chǎn)生不同的RDD供給下一個轉(zhuǎn)換操作使用;
3.最后一個RDD經(jīng)過動作操作進(jìn)行轉(zhuǎn)換并輸出到外部數(shù)據(jù)源;
RDD是惰性調(diào)用機(jī)制,轉(zhuǎn)換類型操作,只記錄轉(zhuǎn)換的軌跡,不進(jìn)行計算;遇到動作操作類型才會進(jìn)行計算
階段劃分依據(jù):窄依賴(不包含shuffle操作),不劃分階段,一個父RDD分區(qū)對應(yīng)一個子RDD分區(qū)或者多個父RDD分區(qū)對應(yīng)一個子RDD分區(qū);可以進(jìn)行流水線優(yōu)化
寬依賴(包含shuffle操作),劃分成多個階段,一個父RDD分區(qū)對應(yīng)多個子RDD分區(qū),不能進(jìn)行流水線優(yōu)化,寬依賴涉及shuffle操作,有數(shù)據(jù)的交換操作

1.3RDD運(yùn)行過程

RDD-SparkContext-DAG圖-由DAGScheduler劃分生成階段-任務(wù)集合-由TaskScheduler調(diào)用任務(wù)到WorkNode-Excutor進(jìn)程-線程-執(zhí)行任務(wù)
若需要使用HDFS中的文件,則在使用spark前需要啟動hadoop

1.4pyspark常用參數(shù)及其命令

spark的運(yùn)行模式取決于傳遞給SparkContext的Master url的值,Master url可以是以下任意一種形式
pyspark --master <master-url>
1.local使用一個Worker線程本地化運(yùn)行spark(完全不并行)
2.local[]使用邏輯cpu個數(shù)數(shù)量的線程來本地化運(yùn)行spark
3.local[K]使用k個Worker線程本地化運(yùn)行spark(理想情況下,k應(yīng)該根據(jù)運(yùn)行機(jī)器的cpu核數(shù)設(shè)定)
4.spark://HOST:PORT連接到指定的spark standalone master,默認(rèn)端口是7077
5.yarn-client 以客戶端模式連接YARN集群,集群的位置可以在HADOOP_CONF_DIR環(huán)境變量中找到(用于開發(fā)環(huán)境及調(diào)試環(huán)境,如果只寫yarn默認(rèn)就是yarn-client)
6.yarn-cluster以集群模式連接YARN集群,集群的位置可以在HADOOP_CONF_DIR環(huán)境變量中找到(用于生產(chǎn)環(huán)境)
7.mesos://HOST:PORT連接到指定的Mesos集群,默認(rèn)端口是5050
運(yùn)行方式:pyspark --master local[
],pyspark --master spark://localhost:7077

1.5啟動spark集群

# 啟動hadoop集群
cd /usr/local/hadoop/
sbin/start-all.sh
# 啟動spark集群
cd /usr/local/spark/
sbin/start-master.sh
sbin/start-slaves.sh

# 在集群中運(yùn)行jar包
#--master spark://master:7077,master是主機(jī)名,如root或者其他,使用sudo vim /etc/hostname查看
cd /usr/local/spark/
bin/spark-submit \
--master spark://master:7077 \
/usr/local/spark/examples/src/main/python/pi.py 2>&1 | grep "Pi is roughly"

# 向hadoop yarn集群管理器提交應(yīng)用
/home/glzt/software/spark/bin/spark-submit --master yarn-client /home/glzt/software/spark/examples/src/main/python/pi.py
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容