文章目錄
Spark安裝與配置
Standalone模式
構建一個由Master+Slave構成的Spark集羣,Spark運行在集羣中。
軟件依賴與版本號
安裝Hive的前提條件是已經部署了Hadoop和Scala。具體安裝Hadoop的方法見前面發的文章Hadoop僞分佈式安裝,安裝Scala的方法見前面發的文章Kafka安裝與配置。部署軟件版本號如下所示:
軟件名稱 | 版本號 |
---|---|
Hadoop | 2.9.2 |
Spark | 2.4.4 |
Scala | 2.12.6 |
節點分配
名稱 | ip | hostname |
---|---|---|
主節點 | 192.168.153.128 | master |
子節點1 | 192.168.153.129 | slave01 |
子節點2 | 192.168.153.130 | slave02 |
安裝Spark
1. 下載Spark並上傳到服務器後解壓
tar xzvf spark-2.4.4-bin-hadoop2.7.tgz
mv spark-2.4.4-bin-hadoop2.7 /usr/local/spark
2. 修改配置文件
配置文件路徑在 /usr/local/spark/conf
目錄下。
-
spark-env.sh
需要先將conf目錄下
spark-env.sh.template
重命名爲spark-env.sh
,並添加如下內容export SCALA_HOME=/usr/local/scala export JAVA_HOME=/usr/local/java export HADOOP_HOME=/usr/local/hadoop export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop SPARK_MASTER_IP=master SPARK_LOCAL_DIRS=/usr/local/spark SPARK_DRIVER_MEMORY=512M
-
slaves
先將
slaves.template
重命名爲slaves
,然後添加如下內容slave01 slave02
3. 修改環境變量
vi /etc/profile
然後添加如下內容:
export SPARK_HOME=/usr/local/spark
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
最後生效
source /etc/profile
4. 拷貝到子節點
scp -r /usr/local/spark/ root@slave01:/usr/local
scp -r /usr/local/spark/ root@slave02:/usr/local
5. 啓動Spark
必須先啓動hadoop,然後再啓動Spark
cd /usr/local/spark/sbin
sh start-all.sh
sh start-history-server.sh
6. 啓動Spark Shell界面
spark-shell --master spark://master:7077
測試
> spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
/usr/local/spark/examples/jars/spark-examples_2.11-2.4.4.jar \
100
Yarn模式
Spark客戶端直接連接Yarn,不需要額外構建Spark集羣。有yarn-client和yarn-cluster兩種模式,主要區別在於:Driver程序的運行節點。
-
yarn-client :Driver程序運行在客戶端,適用於交互、調試,希望立即看到app的輸出
-
yarn-cluster :程序運行在由RM(ResourceManager)啓動的AP(APPMaster)適用於生產環境。
基於Standalone模式,繼續修改配置文件。
修改配置文件
-
yarn-site.xml
cd /usr/local/hadoop/etc/hadoop vi yarn-site.xml
添加如下內容:
<!--是否啓動一個線程檢查每個任務正使用的物理內存量,如果任務超出分配值,則直接將其殺掉,默認是true --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <!--是否啓動一個線程檢查每個任務正使用的虛擬內存量,如果任務超出分配值,則直接將其殺掉,默認是true --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>
-
spark-env.sh
cd /usr/local/spark/conf vi spark-env.sh
添加如下內容:
YARN_CONF_DIR=/usr/local/hadoop/etc/hadoop
-
將修改的配置文件同步到集羣其他服務器上。
重啓Spark和Hadoop
cd /usr/local/spark/sbin/
sh stop-all.sh
cd /usr/local/hadoop/sbin/
sh stop-dfs.sh
sh stop-yarn.sh
sh start-dfs.sh
sh start-yarn.sh
cd /usr/local/spark/sbin/
sh start-all.sh
測試
> spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
/usr/local/spark/examples/jars/spark-examples_2.11-2.4.4.jar \
100