hadoop有文件系統(tǒng)HDFS,還有用來(lái)調(diào)度任務(wù)的YARN。而SPARK可以在YARN上開一個(gè)APPLICATION,然后提交一些JOB上去。
首先啟動(dòng)hadoop的hdfs和yarn,如下:
start-dfs.sh
start-yarn.sh
關(guān)于如何配置core-site.xml, yarn-site.xml, hdfs-site.cml等,參考hadoop官方文檔
然后要配置兩個(gè)變量:
HADOOP_CONF_DIR="$HADOOP_HOME/etc/hadoop/"
PYSPARK_PYTHON="$PYTHON_PATH/bin/python"
以上變量?jī)H為示意,需要按自己的環(huán)境配置
然后就能運(yùn)行spark了
scala語(yǔ)言
./spark-shell --master yarn --deploy-mode client --executor-cores 4
python語(yǔ)言
./pyspark --master yarn --deploy-mode client --executor-cores 4
這時(shí)會(huì)有報(bào)錯(cuò),因?yàn)镴AVA_HOME配置有問題,可修改hadoop/libexec/hadoop-config.sh文件
參考stackoverflow上的解答
解決后,重新運(yùn)行命令,就能在交互式的shell中運(yùn)行程序了,其中sc是SparkContext類的實(shí)例
比如,sc.TextFile(。。。。。。)
啟動(dòng)過程中,可以看到,說是沒有配置yarn上spark的庫(kù)文件,spark會(huì)針對(duì)當(dāng)前應(yīng)用臨時(shí)上傳一些spark要用到的庫(kù),這個(gè)信息,可以加強(qiáng)對(duì)hadoop和spark之間關(guān)系的理解
運(yùn)行狀態(tài)監(jiān)控,打開localhost:8088即可看到hadoop的yarn界面,點(diǎn)開其中的spark application,就能看到關(guān)于這個(gè)spark應(yīng)用的信息,可以查看提交的每個(gè)JOB的運(yùn)行時(shí)間(一次collect才運(yùn)行),可以查看Excutor的個(gè)數(shù)和內(nèi)核數(shù)等
關(guān)于不同運(yùn)行方式,比如給spark提交jar任務(wù)(而不是上述交互式運(yùn)行),可參考spark官方文檔