背景:
pyspark 運(yùn)行時需要很多額外數(shù)據(jù)科學(xué)包,比如pandas,numpy, pyspark 等等 颗管。如果不使用virtualenv 獨(dú)立打包,你需要在每個nodemanager 節(jié)點(diǎn)上的python都要安裝這些包,而且還設(shè)計各種版本問題卵渴。
如果使用virtualenv獨(dú)立打包,每個用戶都將有一個獨(dú)立的python環(huán)境包鲤竹,每個用戶可以根據(jù)自己的需求安裝自己的版本浪读。
而且不需要在nodemanager 每個節(jié)點(diǎn)上安裝,也不影響系統(tǒng)的python環(huán)境辛藻。
1碘橘、找一個機(jī)器pip install virtualenv
2、創(chuàng)建一個虛擬環(huán)境virtualenv -p /usr/bin/python3.6 pyspark_env
-p 指定python版本吱肌,如果想用python2.7 就指定/usr/bin/python2.7
3痘拆、source pyspark_env/bin/activate 進(jìn)入創(chuàng)建的python虛擬環(huán)境
4、pyspark_env/bin/pip install pandas pyspark numpy
5氮墨、deactivate 推出虛擬環(huán)境
6纺蛆、zip -r pyspark_env.zip pyspark_env 打包成一個zip
7、hadoop fs -put pyspark_env.zip /tmp/pyspark_env.zip 把pyspark_env.zip 上傳到hdfs
8勇边、提交任務(wù) 加上--archives 以及指定spark driver python路徑
spark-submit \
--deploy-mode cluster \
--master yarn \
--driver-memory 2g \
--num-executors 6 \
--executor-memory 4g \
--executor-cores 2 \
--queue default \
--name test \
--archives hdfs:///tmp/pyspark_env.zip#pyspark_env \
--conf spark.pyspark.driver.python=./pyspark_env/pyspark_env/bin/python3 \
--conf spark.pyspark.python=./pyspark_env/pyspark_env/bin/python3 \
/home/hadoop/tmp/nibo/test.py
--archives hdfs:///tmp/pyspark_env.zip#pyspark_env
#號后面的pyspark_env 意思是解壓zip的目錄名字犹撒,如果不加#pyspark_env 解壓的目錄名就會變成pyspark_env.zip。
這樣提交pyspark任務(wù)粒褒,nodemanager就會到hdfs 先把python環(huán)境包下載下來识颊,然后解壓。執(zhí)行任務(wù) 奕坟。