每日一句正能量
人生就像賽跑,不在乎你是否第一個到達(dá)盡頭,而在乎你有沒有跑完全程。
章節(jié)概要
Spark于2009年誕生于美國加州大學(xué)伯克利分校的AMP實驗室,它是一個可應(yīng)用于大規(guī)模數(shù)據(jù)處理的統(tǒng)一分析引擎。Spark不僅計算速度快,而且內(nèi)置了豐富的API,使得我們能夠更加容易編寫程序。
2.2 搭建Spark開發(fā)環(huán)境
請參考《Hadoop大數(shù)據(jù)技術(shù)與應(yīng)用》完成Hadoop集群構(gòu)建?;蛘呖次抑暗牟┛鸵残小?/p>
- Hadoop集群部署和啟動與關(guān)閉
搭建Spark環(huán)境是開展Spark編程的基礎(chǔ),在深入學(xué)習(xí)Spark編程之 前,我們需要的先搭建Spark開發(fā)環(huán)境。
2.2.1 環(huán)境準(zhǔn)備
由于Spark僅僅是一種計算框架,不負(fù)責(zé)數(shù)據(jù)的存儲和管理,因此,通常都會將Spark和Hadoop進(jìn)行統(tǒng)一部署,由Hadoop中的HDFS、HBase等組件負(fù)責(zé)數(shù)據(jù)的存儲管理,Spark負(fù)責(zé)數(shù)據(jù)計算。
安裝Spark集群前,需要安裝Hadoop環(huán)境,本教材采用如下配置環(huán)境。
Linux系統(tǒng):CentOS_6.7版本
Hadoop:2.7.4版本
JDK:1.8版本
Spark:2.3.2版本
2.2.2 Spark的部署方式
Spark部署模式分為Local模式(本地單機(jī)模式)和集群模式,在Local模式下, 常用于本地開發(fā)程序與測試,而集群模式又分為Standalone模式(集群單機(jī)模式)、 Yarn模式和Mesos模式,關(guān)于這三種集群模式的相關(guān)介紹具體如下:
-
Standalone模式
- Standalone模式被稱為集群單機(jī)模式
- 在該模式下,Spark集群架構(gòu)為主從模式,即一臺Master節(jié)點與多臺Slave節(jié)點,Slave節(jié)點啟動的進(jìn)程名稱為Worker。(主節(jié)點只有一個,所以存在單點故障問題,要搭建高可用的Spark集群)
-
Mesos模式
- Mesos模式被稱為Spark on Mesos模式。
- Mesos是一款資源調(diào)度管理系統(tǒng),為Spark提供服務(wù),由于Spark與Mesos存在密切的關(guān)系,因此在設(shè)計Spark框架時充分考慮到對Mesos的集成。但如果你同時運(yùn)行Hadoop和Spark,從兼容性的角度來看,Spark on Yarn是更好的選擇。
-
Yarn模式
- Yarn模式被稱為Spark on Yarn模式,即把Spark作為一個客戶端,將作業(yè)提交給Yarn服務(wù)。
- 由于在生產(chǎn)環(huán)境中,很多時候都要與Hadoop使用同一個集群,因此采用Yarn來管理資源調(diào)度,可以提高資源利用率。
Yarn模式又分為Yarn Cluster模式和Yarn Client模式,具體介紹如下:
- Yarn Cluster: 用于生產(chǎn)環(huán)境,所有的資源調(diào)度和計算都在集群上運(yùn)行。
- Yarn Client: 用于交互、調(diào)試環(huán)境。
2.2.3 Spark集群安裝部署
- 本書將在Standalone模式下,進(jìn)行Spark集群的安裝部署。
- 規(guī)劃的Spark集群包含一臺Master節(jié)點和兩臺Slave節(jié)點。其中,主機(jī)名hadoop01是Master節(jié)點,hadoop02和hadoop03是Slave節(jié)點。如下圖所示:
一、Spark下載
- 下載Spark安裝包
- 下載地址
下載地址可以在百度中直接搜索或者參看我之前的博客。- 大數(shù)據(jù)相關(guān)常用軟件下載地址集錦
進(jìn)入后來到Spark的官網(wǎng),點擊【Download】就可以打開下載界面:https://spark.apache.org/downloads.html。
Spark安裝包的下載頁面如下圖所示:
可以將頁面向下拉,找到【Spark release archives】點擊進(jìn)去找歷史版本下載。
二、Spark安裝
- 解壓Spark安裝包
首先將下載的spark-2.3.2-bin-hadoop2.7.tgz安裝包上傳到主節(jié)點hadoop01的/export/software目錄下,然后解壓到/export/servers/目錄,解壓命令如下。
$ tar -zxvf spark-2.3.2-bin-hadoop2.7.tgz -C /export/servers/
注:命令前面的 $ 符號表示當(dāng)前用戶的命令行提示符。它通常出現(xiàn)在命令的開頭,表示這是一條需要在命令行中運(yùn)行的命令。執(zhí)行命令時不需要加上這個符號,否則會報錯。
為了便于后面操作,我們使用mv命令將Spark的目錄重命名為spark,命令如下。mv spark-2.3.2-bin-hadoop2.7/ spark
- 修改配置文件
(1)進(jìn)入spark/conf目錄修改Spark的配置文件spark-env.sh,將spark-env.sh.template配置模板文件復(fù)制一份并命名為spark-env.sh,具體命令如下。cp spark-env.sh.template spark-env.sh
(2)修改spark-env.sh文件,在該文件添加以下內(nèi)容:
#配置java環(huán)境變量
export JAVA_HOME=/export/servers/jdk
#指定Master的IP
export SPARK_MASTER_HOST=hadoop01
#指定Master的端口
export SPARK_MASTER_PORT=7077
上述添加的配置參數(shù)主要包括JDK環(huán)境變量、Master節(jié)點的IP地址和Master端口號,由于當(dāng)前節(jié)點服務(wù)器已經(jīng)在/etc/hosts文件中配置了IP和主機(jī)名的映射關(guān)系,因此可以直接填寫主機(jī)名。
(3)復(fù)制slaves.template文件,并重命名為slaves 。具體命令如下。cp slaves.template slaves
(4)修改spark-env.sh文件,在該文件添加以下內(nèi)容:通過“vi slaves
”命令編輯slaves配置文件,主要是指定Spark集群中的從節(jié)點IP,由于在hosts文件中已經(jīng)配置了IP和主機(jī)名的映射關(guān)系,因此直接使用主機(jī)名代替IP,添加內(nèi)容如下。
hadoop02
hadoop03
- 分發(fā)文件
修改完成配置文件后,將spark目錄分發(fā)至hadoop02和hadoop03節(jié)點 。命令如下。
$ scp -r /export/servers/spark/ hadoop02:/export/servers/
$ scp -r /export/servers/spark/ hadoop03:/export/servers/
三、環(huán)境變量配置
為了在任何路徑下可以執(zhí)行Spark腳本程序,可以通過執(zhí)行“vi /etc/profile
’命令編輯 .bashrc或者 profile文件,并在文件中配置Spark環(huán)境變量即可。文件中添加以下內(nèi)容:
export SPARK_HOME=/export/servers/spark
export PATH=$PATH:$SPARK_HOME/bin
至此,Spark集群配置完成了 。
- 啟動Spark集群
Spark集群的啟動方式和啟動Hadoop集群方式類似,直接使用spark/sbin/start- al.sh腳本即可,在spark根目錄下執(zhí)行下列命令:$ sbin/start-all.sh
可以看到集群進(jìn)程被啟動了。
訪問Spark管理界面http://hadoop01:8080來查看集群狀態(tài)(主節(jié)點), Spark集群管理界面如下圖所示。
2.2.4 Spark HA集群部署
Spark Standalone集群是主從架構(gòu)的集群模式,由于存在單點故障問題,解決這個問題需要用到Zookeeper服務(wù),其基本原理是將Standalone集群連接到同一個Zookeeper實例并啟動多個Master節(jié)點,利用Zookeeper提供的選舉和狀態(tài)保存功能,可以使一臺Master節(jié)點被選舉,另一臺Master節(jié)點處于Standby狀態(tài)。當(dāng)活躍的Master發(fā)生故障時,Standby狀態(tài)的Master就會被激活,恢復(fù)集群調(diào)度,整個恢復(fù)的過程可能需要1-2分鐘。
一、集群部署
1.啟動Zookeeper集群服務(wù)。命令如下:zkServer.sh start
Zookeeper集群服務(wù)之前已經(jīng)帶著同學(xué)們搭建過了,還不會或者還沒搭建的同學(xué)去看看之前的文章。
- ZooKeeper的集群部署和啟動與關(guān)閉
下面是Zookeeper的核心配置文件zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/export/data/zookeeper /zkdata
clientPort=2181
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888
2.在spark-env.sh配置文件中注釋Master節(jié)點的配置參數(shù),并指定Spark使用Zookeeper管理。
#指定Master的IP
#export SPARK_MASTER_HOST=hadoop01
#指定Master的端口
export SPARK_MASTER_PORT=7077
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop01:2181,hadoop02:2181,hadoop03:2181
-Dspark.deploy.zookeeper.dir=/spark"
關(guān)于上述參數(shù)的具體說明如下所示:
- “#”,表示注釋當(dāng)前行
- spark.deploy.recoveryMode:設(shè)置Zookeeper去啟動備用Master模式。
- spark.deploy.zookeeper.url:指定ZooKeeper的Server地址。
- spark.deploy.zookeeper.dir:保存集群元數(shù)據(jù)信息的文件、目錄。
配置完成后,將spark-env.sh分發(fā)至hadoop02、hadoop03節(jié)點上,保證配置文件統(tǒng)一,命令如下。
scp spark-env.sh hadoop02:/ekport/servers/spark/conf
scp spark-env.sh hadoop03:/export/servers/spark/conf
二、運(yùn)行測試
3.在hadoop01主節(jié)點啟動Spark集群,在hadoop02節(jié)點再次啟動Master服務(wù)。
在hadoop01主節(jié)點使用—鍵啟動腳本啟動,命令如下:/export/servers/spark/sbin/start-all.sh
在hadoop02節(jié)點再次啟動Master服務(wù),命令如下:/export/servers/spark/sbin/start-master.sh
啟動成功后,通過瀏覽器訪問http://hadoop02:8080,查看備用Master節(jié)點狀態(tài),可以發(fā)現(xiàn)status狀態(tài)為STANDBY。主節(jié)點status狀態(tài)為ALIVE。
4.關(guān)閉hadoop01節(jié)點中的Master進(jìn)程,測試Spark HA集群。
Spark HA集群啟動完畢后,為了演示是否解決了單點故障問題,可以關(guān)閉在hadoopo1節(jié)點中的Master進(jìn)程,用來模擬在生產(chǎn)環(huán)境中hadoop01突然宕機(jī),命令如下所示。
/export/servers/spark/sbin/stop-master.sh
執(zhí)行命令后,通過瀏覽器查看http://hadoop01:8080,發(fā)現(xiàn)已經(jīng)無法通過hadoop001節(jié)點訪問Spark集群管理界面。大約經(jīng)過1-2分鐘后,刷新 http://hadoop02:8080頁面,可以發(fā)現(xiàn)hadoop02節(jié)點中的Status值更改為ALIVE,Spark集群恢復(fù)正常,說明Spark HA配置有效解決了單點故障問題。
三、多學(xué)一招
- 腳本啟動Zookeeper集群
在集群中啟動Zookeeper服務(wù)時,需要依次在三臺服務(wù)器上執(zhí)行啟動命令,然而在實際工作應(yīng)用中,集群數(shù)量并非3臺,當(dāng)遇到數(shù)十臺甚至更多的服務(wù)器時,就不得不編寫腳本來啟動服務(wù)了,編寫腳本的語言有多種,這里采用Shelli語言開發(fā)一鍵啟動Zookeeper服務(wù)腳本, 使用命令vi start_zk.sh
創(chuàng)建start_zk.sh文件,內(nèi)容如下:
#!/bin/sh
for host in hadoop01 hadoop02 hadoop03
do
ssh $host "source /etc/profile;zkServer.sh start"
echo "$host zk is running"
done
執(zhí)行該文件只需要輸入"start_zk.sh
" 即可啟動集群中的Zookeeper服務(wù)。文章來源:http://www.zghlxwxcb.cn/news/detail-774162.html
轉(zhuǎn)載自:https://blog.csdn.net/u014727709/article/details/132130729
歡迎 ??點贊?評論?收藏,歡迎指正文章來源地址http://www.zghlxwxcb.cn/news/detail-774162.html
到了這里,關(guān)于Spark大數(shù)據(jù)分析與實戰(zhàn)筆記(第二章 Spark基礎(chǔ)-02)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!