您好,登錄后才能下訂單哦!
分布式集群搭建:https://blog.51cto.com/14048416/2327802
?上面試spark普通的分布式集群搭建,存在master節點的單點故障問題。Hadoop2.x開始,已經使用zookeeper解決了單點故障。同樣的策略,spark也利用了zookeeper解決了spark集群的單點故障問題。
① 如果已經使用,并啟動了spark分布式集群,請手動停止:
?$SPARK_HOME/sbin/stop-all.sh
②配置并啟動zookeeper集群:https://blog.51cto.com/14048416/2336178
③修改 $SPARK_HOME/conf 目錄中的 spark-env.sh 配置文件
如果是之前有分布式集群的話:刪除:**export SPARK_MASTER_HOST=xxx**
加入:
export SPARK_DAEMON_JAVA_OPTS= "-Dspark.deploy.recoveryMode=ZOOKEEPER - Dspark.deploy.zookeeper.url=hadoop01,hadoop02,hadoop03 - Dspark.deploy.zookeeper.dir=/spark"
相關參數解釋:
-Dspark.deploy.recoveryMode=ZOOKEEPER:說明整個集群狀態是通過zookeeper來維護的,整個集群狀態的恢復,也是通過zookeeper來維護的。就是說用 zookeeper 做了 Spark 的 HA 配置,Master(Active)掛掉的話, Master(standby)要想變成 Master(Active)的話,Master(Standby)就要像 zookeeper 讀取 整個集群狀態信息,然后進行恢復所有 Worker 和 Driver 的狀態信息,和所有的 Application 狀態信息。
-Dspark.deploy.zookeeper.url:將所有配置了 zookeeper,并且在這臺機器上有可能做 master(Active)的機器都配置進來
-Dspark.deploy.zookeeper.dir:zookeeper中保存 spark 的元數據的znode,保存了 spark 的作業運行狀態; zookeeper 會保存 spark 集群的所有的狀態信息,包括所有的 Workers 信息,所有的 Applactions 信息,所有的 Driver 信息,如果集群。
④如果hadoop集群是高可用集群的話,一定要將core-site.xml 和 hdfs-site.xml放置$SPARK_HOME/conf 目錄中,然后同步所有的spark節點。
⑤同步配置文件:
這里是在已經安裝了spark分布式的基礎上,只同步spark-env.sh即可:(spark集分布式集群的安裝:https://blog.51cto.com/14048416/2327802)
scp -r $SPARK_HOME/confspark-env.sh hadoop02:$SPARK_HOME/conf
scp -r $SPARK_HOME/confspark-env.sh hadoop03:$SPARK_HOME/conf
⑥啟動集群:
$SPARK_HOME/sbin/start-all.sh
注意:
此時,通過觀察啟動日志,或者檢查 hadoop02 上是否包含有 master 進程等都可以得知 hadoop02 上的 master 并不會自動啟動,所以需要手動啟動 那么在 hadoop02 執行命令進行啟動:$SPARK_HOME/sbin/start-master.sh
⑦驗證集群的高可用:
主節點(active)hadoop01:
從節點(standby)hadoop02:
?我們運行的 spark 程序運行的情況來看,可以看到大量的 INFO 級別的日志信息。淹沒了 我們需要運行輸出結果。可以通過修改 Spark 配置文件來 Spark 日志級別。
具體步驟:
進入:cd $SPARK_HOME/conf
準備log4j.properties:cp log4j.properties.template log4j.properties
配置日志級別:
把 INFO 改成你想要的級別:主要有 ERROR, WARN, INFO, DEBUG 幾種
重啟集群即可。
$SPARK_HOME/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop02:7077 \
--executor-memory 512m \
--total-executor-cores 3 \
$SPARK_HOME/examples/jars/spark-examples_2.11-2.3.0.jar \
100
啟動local模式:[hadoop@hadoop01 ~]$ spark-shell
啟動集群模式:
$SPARK_HOME/bin/spark-shell \
--master spark://hadoop02:7077,hadoop04:7077 \ #指定 Master 的地址
--executor-memory 512M \ #指定每個 worker 可用內存為 512M
--total-executor-cores 2 #指定整個集群使用的 cup 核數為 2 個
注意:
?- 在運行時:executor-memory 不能超過集群的節點的內存。
?- total-executor-cores:不要超過 spark 集群能夠提供的總 cpu cores,否則會使用全部。最好不要使用 全部。否則其他程序由于沒有 cpu core 可用,就不能正常運行。
如果底層使用的yarn的任務資源管理:
修改yarn-site.xml:
加入:
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>
之后在重啟yarn即可。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。