1 使用單機local模式提交任務
local模式也就是本地模式,也就是在本地機器上單機執行程序。使用這個模式的話,並不需要啟動Hadoop集群,也不需要啟動Spark集群,只要有一台機器上安裝了JDK、Scala、Spark即可運行。
進入到Spark2.1.1的安裝目錄,命令是:
cd /opt/spark/spark-2.1.1-bin-hadoop2.7
執行命令,用單機模式運行計算圓周率的Demo:
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master local examples/jars/spark-examples_2.11-2.1.1.jar
如圖:
2 使用獨立的Spark集群模式提交任務
這種模式也就是Standalone模式,使用獨立的Spark集群模式提交任務,需要先啟動Spark集群,但是不需要啟動Hadoop集群。啟動Spark集群的方法是進入$SPARK_HOME/sbin目錄下,執行start-all.sh腳本,啟動成功后,可以訪問下面的地址看是否成功:
http://Spark的Marster機器的IP:8080/
如圖:
執行命令,用Standalone模式運行計算圓周率的Demo:
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://192.168.27.143:7077 examples/jars/spark-examples_2.11-2.1.1.jar
如圖:
3 用yarn-client模式執行計算程序
cd /opt/spark/spark-2.1.1-bin-hadoop2.7
執行命令,用yarn-client模式運行計算圓周率的Demo:
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client examples/jars/spark-examples_2.11-2.1.1.jar
我這里出現了報錯, 如圖:
解決方法:
echo -e "export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.3/etc/hadoop" >> /etc/profile source /etc/profile
接着運行...
又出現了如下報錯....
經一番gooole, 由於VMware設置了4g內存,本地虛機啟動了太多程序導致內存不夠引起.
解決方案:
修改yarn-site.xml,添加下列property
<property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>
4 用yarn-cluster模式執行計算程序
cd /opt/spark/spark-2.1.1-bin-hadoop2.7
執行命令,用yarn-cluster模式運行計算圓周率的Demo:
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster examples/jars/spark-examples_2.11-2.1.1.jar
注意,使用yarn-cluster模式計算,結果沒有輸出在控制台,結果寫在了Hadoop集群的日志中,如何查看計算結果?注意到剛才的輸出中有地址: