1. 程式人生 > >在Yarn上執行spark-shell和spark-sql命令列

在Yarn上執行spark-shell和spark-sql命令列

spark-shell On Yarn

如果你已經有一個正常執行的Hadoop Yarn環境,那麼只需要下載相應版本的Spark,解壓之後做為Spark客戶端即可。

需要配置Yarn的配置檔案目錄,export HADOOP_CONF_DIR=/etc/hadoop/conf   這個可以配置在spark-env.sh中。

執行命令:

cd $SPARK_HOME/bin
./spark-shell \
--master yarn-client \
--executor-memory 1G \
--num-executors 10

注意,這裡的–master必須使用yarn-client模式,如果指定yarn-cluster,則會報錯:

Error: Cluster deploy mode is not applicable to Spark shells.

因為spark-shell作為一個與使用者互動的命令列,必須將Driver執行在本地,而不是yarn上。

其中的引數與提交Spark應用程式到yarn上用法一樣。

啟動之後,在命令列看上去和standalone模式下的無異:

spark-shell on yarn

在ResourceManager的WEB頁面上,看到了該應用程式(spark-shell是被當做一個長服務的應用程式執行在yarn上):

spark-shell on yarn

點選ApplicationMaster的UI,進入到了Spark應用程式監控的WEB頁面:

spark-shell on yarn

 

spark-sql On Yarn

spark-sql命令列執行在yarn上,原理和spark-shell on yarn一樣。只不過需要將Hive使用的相關包都加到Spark環境變數。

1. 將hive-site.xml拷貝到$SPARK_HOME/conf

2.export HIVE_HOME=/usr/local/apache-hive-0.13.1-bin 新增到spark-env.sh

3.將以下jar包新增到Spark環境變數:

datanucleus-api-jdo-3.2.6.jar、datanucleus-core-3.2.10.jar、datanucleus-rdbms-3.2.9.jar、mysql-connector-java-5.1.15-bin.jar

可以在spark-env.sh中直接新增到SPARK_CLASSPATH變數中。

 

執行命令:

cd $SPARK_HOME/bin
./spark-sql \
--master yarn-client \
--executor-memory 1G \
--num-executors 10

即可在yarn上執行spark-sql命令列。
spark-sql on yarn

在ResourceManager上的顯示以及點選ApplicationMaster進去Spark的WEB UI,與spark-shell無異。

spark-sql on yarn

這樣,只要之前有使用Hadoop Yarn,那麼就不需要搭建standalone的Spark叢集,也能發揮Spark的強大威力了。

原文連結:http://lxw1234.com/archives/2015/08/448.htm