1.保存目前快照
2.更改jdk 為jdk8,配置環(huán)境變量[結合搭建文檔]
解壓:
配置:~/.bash_profile:
export JAVA_HOME=/software/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
(沒裝前$path在前,裝過后在后。如上)
更新生效:
source ~/.bash_profile
3.將jdk8 分發(fā)到其他節(jié)點静浴,做同樣的配置
4.直接解壓的jdk需要覆蓋 軟連接路徑 /user/bin/java
默認使用解壓的jdk安裝jdk8,相對于rpm安裝來說 不會覆蓋默認/usr/bin/java 指向的位置拓瞪。需要手動改動指向的位置画畅,不然會默認還是執(zhí)行的舊的jdk1.7
原來的指向:
/usr/bin/java->/usr/java/default/bin/java
每臺節(jié)點上執(zhí)行:
ln -sf /software/jdk1.8.0_181/bin/java /usr/bin/java
更改之后的指向:
/usr/bin/java->/software/jdk1.8.0_181/bin/java
5.正常搭建spark-2.3.1-bin-hadoop2.6
6.如果基于Hadoop提交任務 需要修改 hadoop-env.sh 中的27行
export JAVA_HOME=/software/jdk1.8.0_181/bin/java
同步其他所有節(jié)點。
7.基于yarn 提交任務有可能報錯虛擬內存不足
在每臺節(jié)點中的yarn-site.xml中配值關閉虛擬內存檢查
vim /root/hadoop-2.5.2/etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
8.集群裝kafka 0.11版本
進入zookeeper的客戶端 ,刪除之前kafka 的信息目錄:【 consumers, admin, config, controller, brokers, controller_epoch】
/root/zookeeper-3.4.6/bin/zkCli.sh
接下來圖文詳解
1.搭建
?Standalone
1).下載安裝包,解壓
2).改名
3).進入安裝包的conf目錄下材鹦,修改slaves.template文件逝淹,添加從節(jié)點。保存桶唐。
4).修改spark-env.sh
SPARK_MASTER_IP:master的ip
SPARK_MASTER_PORT:提交任務的端口栅葡,默認是7077
SPARK_WORKER_CORES:每個worker從節(jié)點能夠支配的core的個數
SPARK_WORKER_MEMORY:每個worker從節(jié)點能夠支配的內存數
5).同步到其他節(jié)點上
6).啟動集群
進入sbin目錄下,執(zhí)行當前目錄下的./start-all.sh
7).搭建客戶端
將spark安裝包原封不動的拷貝到一個新的節(jié)點上尤泽,然后欣簇,在新的節(jié)點上提交任務即可。
注意:
?8080是Spark WEBUI界面的端口坯约,7077是Spark任務提交的端口熊咽。
?修改master的WEBUI端口:
?修改start-master.sh即可。
?也可以在Master節(jié)點上導入臨時環(huán)境變量闹丐,只是作用于之后的程序横殴,重啟就無效了。
刪除臨時環(huán)境變量:
?yarn
1). 1妇智,2滥玷,3氏身,4巍棱,5,7步同standalone蛋欣。
2).在客戶端中配置:
2.測試
PI案例:
Standalone提交命令:
./spark-submit
--master spark://node1:7077
--class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 10000
YARN提交命令:
./spark-submit
--master yarn
--class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 10000
spark基于standalone-client提交任務
提交任務命令:
./spark-submit --master spark://node1:7077 -class ..jar...
./spark-submit --master spark://node1:7077 -deploy-mode client --class ..jar...
?執(zhí)行流程
1.client模式提交任務后航徙,會在客戶端啟動Driver進程。
2.Driver會向Master申請啟動Application啟動的資源陷虎。
3.資源申請成功到踏,Driver端將task發(fā)送到worker端執(zhí)行。
4.worker將task執(zhí)行結果返回到Driver端尚猿。
?總結
client模式適用于測試調試程序窝稿。Driver進程是在客戶端啟動的,這里的客戶端就是指提交應用程序的當前節(jié)點凿掂。在Driver端可以看到task執(zhí)行的情況伴榔。生產環(huán)境下不能使用client模式,是因為:假設要提交100個application到集群運行庄萎,Driver每次都會在client端啟動踪少,那么就會導致客戶端100次網卡流量暴增的問題。
spark基于standalone-cluster提交任務
命令
./spark-submit --master spark://node1:7077 -deploy-mode cluster --class ..jar...
?執(zhí)行流程
1.cluster模式提交應用程序后糠涛,會向Master請求啟動Driver.
2.Master接受請求援奢,隨機在集群一臺節(jié)點啟動Driver進程。
3.Driver啟動后為當前的應用程序申請資源忍捡。
4.Driver端發(fā)送task到worker節(jié)點上執(zhí)行集漾。
5.worker將執(zhí)行情況和執(zhí)行結果返回給Driver端切黔。
?總結
Driver進程是在集群某一臺Worker上啟動的,在客戶端是無法查看task的執(zhí)行情況的帆竹。假設要提交100個application到集群運行,每次Driver會隨機在集群中某一臺Worker上啟動绕娘,那么這100次網卡流量暴增的問題就散布在集群上。
?總結Standalone兩種方式提交任務栽连,Driver與集群的通信包括:
- Driver負責應用程序資源的申請
- 任務的分發(fā)险领。
- 結果的回收。
- 監(jiān)控task執(zhí)行情況秒紧。
Spark 基于Yarn-cluster 模式提交任務
?執(zhí)行流程
1.客戶端提交一個Application绢陌,在客戶端啟動一個Driver進程。
2.應用程序啟動后會向RS(ResourceManager)發(fā)送請求熔恢,啟動AM(ApplicationMaster)的資源脐湾。
3.RS收到請求,隨機選擇一臺NM(NodeManager)啟動AM叙淌。這里的NM相當于Standalone中的Worker節(jié)點秤掌。
4.AM啟動后,會向RS請求一批container資源鹰霍,用于啟動Executor.
5.RS會找到一批NM返回給AM,用于啟動Executor闻鉴。
6.AM會向NM發(fā)送命令啟動Executor。
7.Executor啟動后茂洒,會反向注冊給Driver孟岛,Driver發(fā)送task到Executor,執(zhí)行情況和結果返回給Driver端。
?總結
Yarn-client模式同樣是適用于測試督勺,因為Driver運行在本地渠羞,Driver會與yarn集群中的Executor進行大量的通信,會造成客戶機網卡流量的大量增加.
?ApplicationMaster的作用:
1.為當前的Application申請資源
2.給NameNode發(fā)送消息啟動Executor智哀。
注意:ApplicationMaster有l(wèi)aunchExecutor和申請資源的功能次询,并沒有作業(yè)調度的功能。
Spark 基于Yarn-cluster 模式提交任務
?執(zhí)行流程
1.客戶機提交Application應用程序瓷叫,發(fā)送請求到RS(ResourceManager),請求啟動AM(ApplicationMaster)屯吊。
2.RS收到請求后隨機在一臺NM(NodeManager)上啟動AM(相當于Driver端)。
3.AM啟動赞辩,AM發(fā)送請求到RS雌芽,請求一批container用于啟動Executor。
4.RS返回一批NM節(jié)點給AM辨嗽。
5.AM連接到NM,發(fā)送請求到NM啟動Executor世落。
6.Executor反向注冊到AM所在的節(jié)點的Driver。Driver發(fā)送task到Executor。
?總結
Yarn-Cluster主要用于生產環(huán)境中屉佳,因為Driver運行在Yarn集群中某一臺nodeManager中谷朝,每次提交任務的Driver所在的機器都是隨機的,不會產生某一臺機器網卡流量激增的現(xiàn)象武花,缺點是任務提交后不能看到日志圆凰。只能通過yarn查看日志。
?ApplicationMaster的作用:
1.為當前的Application申請資源
2.給NameNode發(fā)送消息啟動Excutor体箕。
3.任務調度专钉。
?停止集群任務命令:yarn application -kill applicationID