Spark的安裝與部署

目錄

Spark的安裝與部署

Spark概述

Spark特點

Spark與MapReduce對比

Spark體系結構

Spark部署 

僞分佈式部署

完全分佈式

Spark的安裝與部署

Spark概述

Spark是一種快速、通用、可擴展的大數據分析引擎,2009年誕生於加州大學伯克利分校AMPLab,2010年開源,2013年6月成爲Apache孵化項目,2014年2月成爲Apache頂級項目。目前,Spark生態系統已經發展成爲一個包含多個子項目的集合,其中包含SparkSQLSpark StreamingGraphXMLlib等子項目,Spark是基於內存計算的大數據並行計算框架。Spark基於內存計算,提高了在大數據環境下數據處理的實時性,同時保證了高容錯性和高可伸縮性,允許用戶將Spark部署在大量廉價硬件之上,形成集羣。Spark得到了衆多大數據公司的支持,這些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、騰訊、京東、攜程、優酷土豆。當前百度的Spark已應用於鳳巢、大搜索、直達號、百度大數據等業務;阿里利用GraphX構建了大規模的圖計算和圖挖掘系統,實現了很多生產系統的推薦算法;騰訊Spark集羣達到8000臺的規模,是當前已知的世界上最大的Spark集羣。

Spark特點

(1)運算速度快

與Hadoop的MapReduce相比,Spark基於內存的運算速度要快100倍以上,即使,Spark基於硬盤的運算也要快10倍。Spark實現了高效的DAG執行引擎,從而可以通過內存來高效處理數據流。

(2)易用

Spark支持Java、Python和Scala的API,還支持超過80種高級算法,使用戶可以快速構建不同的應用。而且Spark支持交互式的Python和Scala的shell,可以非常方便地在這些shell中使用Spark集羣來驗證解決問題的方法。

(3)通用

Spark提供了統一的解決方案。Spark可以用於批處理、交互式查詢(Spark SQL)、實時流處理(Spark Streaming)、機器學習(Spark MLlib)和圖計算(GraphX)。這些不同類型的處理都可以在同一個應用中無縫使用。Spark統一的解決方案非常具有吸引力,畢竟任何公司都想用統一的平臺去處理遇到的問題,減少開發和維護的人力成本和部署平臺的物力成本。

另外Spark還可以很好的融入Hadoop的體系結構中可以直接操作HDFS,並提供Hive on Spark、Pig on Spark的框架集成Hadoop。

(4)兼容性

Spark可以非常方便地與其他的開源產品進行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作爲它的資源管理和調度器,器,並且可以處理所有Hadoop支持的數據,包括HDFS、HBase和Cassandra等。這對於已經部署Hadoop集羣的用戶特別重要,因爲不需要做任何數據遷移就可以使用Spark的強大處理能力。Spark也可以不依賴於第三方的資源管理和調度器,它實現了Standalone作爲其內置的資源管理和調度框架,這樣進一步降低了Spark的使用門檻,使得所有人都可以非常容易地部署和使用Spark。此外,Spark還提供了在EC2上部署Standalone的Spark集羣的工具。

Spark與MapReduce對比

MapReduce的核心是Shuffle(洗牌)。在整個Shuffle的過程中,至少會產生6次的I/O。如下圖所示。

中間結果輸出:基於MapReduce的計算引擎通常會將中間結果輸出到磁盤上,進行存儲和容錯。另外,當一些查詢(如:Hive)翻譯到MapReduce任務時,往往會產生多個Stage(階段),而這些串聯的Stage又依賴於底層文件系統(如HDFS)來存儲每一個Stage的輸出結果,而I/O的效率往往較低,從而影響了MapReduce的運行速度。

 

Spark的最大特點:基於內存。Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生態系統,以彌補MapReduce的不足。

Spark體系結構

Spark部署 

僞分佈式部署

所謂僞分佈式,即集羣只有一臺節點,master和worker都是同一臺節點。

(1)軟件準備

虛擬機配置:

操作系統:CentOS-7-x86_64-DVD-1511

配置好java環境、主機名和IP地址,具體步驟可參考Hadoop本地模式、僞分佈式以及集羣的安裝與部署

(2)安裝spark

使用的spark版本爲:spark-2.1.1-bin-hadoop2.7

上傳spark的tar.gz包到虛擬機,然後解壓。

接下來配置主節點:

複製一份conf路徑下的spark-env.sh.template,並且命名爲spark-env.sh:

cp spark-env.sh.template spark-env.sh

修改配置文件conf/spark-env.sh:

export JAVA_HOME=yourjdk/bin
export SPARK_MASTER_HOST=spark111
export SPARK_MASTER_PORT=7077

配置從節點:

複製conf路徑下的slaves.template並且重命名爲slaves:

cp slaves.template slaves

修改配置文件slaves:刪除默認的localhost,加入主機名。

測試一下:

[root@spark111 sbin]# ./start-all.sh

 jps顯示既存在worker進程,又存在worker進程。訪問spark111的IP地址,默認端口8080:

 出現上述界面說明僞分佈式模式部署成功。

完全分佈式

相比於僞分佈模式,完全分佈式即急羣中有多臺服務器,master和worker分佈在不同節點上。

(1)服務器準備:

將僞分佈式中的spark服務關閉:

[root@spark111 sbin]# ./stop-all.sh 

然後關閉虛擬機,拷貝兩份,spark112、spark113。

(2)設置免密登陸

生成密鑰(以一臺機器作爲示範):

將自己的密鑰發送給其他服務器(每臺機器上都要重複):

(3)配置主從節點

修改conf路徑下的slaves文件(三臺機器上都修改):

測試一下:

可以看到啓動了一個master兩個worker,查看一下進程:

spark111:

spark112:

spark113:

訪問ip:

至此,Spark集羣就搭建成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章