天天看點

Spark-1.4.0叢集搭建

ubuntu 10.04 系統設定

zookeeper叢集搭建

hadoop-2.4.1叢集搭建

spark 1.4.0叢集搭建

假設已經安裝好ubuntu作業系統

1.主機規劃

主機名

ip位址

程序号

sparkmaster

192.168.1.103

resourcemanager datanode、nodemanager、journalnode、quorumpeermain

sparkslave01

192.168.1.101

resourcemanager datanode、nodemanager、journalnode、quorumpeermain namenode、dfszkfailovercontroller(zkfc)

sparkslave02

192.168.1.102

datanode、nodemanager、journalnode、quorumpeermain namenode、dfszkfailovercontroller(zkfc)

**說明:

1.在hadoop2.0中通常由兩個namenode組成,一個處于active狀态,另一個處于standby狀态。active namenode對外提供服務,而standby namenode則不對外提供服務,僅同步active namenode的狀态,以便能夠在它失敗時快速進行切換。

hadoop2.0官方提供了兩種hdfs ha的解決方案,一種是nfs,另一種是qjm。這裡我們使用簡單的qjm。在該方案中,主備namenode之間通過一組journalnode同步中繼資料資訊,一條資料隻要成功寫入多數journalnode即認為寫入成功。通常配置奇數個journalnode

這裡還配置了一個zookeeper叢集,用于zkfc(dfszkfailovercontroller)故障轉移,當active namenode挂掉了,會自動切換standby namenode為standby狀态

2.hadoop-2.2.0中依然存在一個問題,就是resourcemanager隻有一個,存在單點故障,hadoop-2.4.1解決了這個問題,有兩個resourcemanager,一個是active,一個是standby,狀态由zookeeper進行協調**

2. 修改主機名稱設定

利用vi /etc/hostname修改主機名稱

3. 修改主機ip位址

利用vi /etc/network/interfaces修改主要ip

主機

/etc/network/interfaces檔案内容

sparkmaster

auto loiface

lo inet loopback

auto eth0

iface eth0 inet static

address 192.168.1.103

netmask 255.255.255.0

gateway 192.168.1.1

sparkslave01

auto loiface

lo inet loopback

auto eth0

iface eth0 inet static

address 192.168.1.101

netmask 255.255.255.0

gateway 192.168.1.1

sparkslave02

auto loiface

lo inet loopback

auto eth0

iface eth0 inet static

address 192.168.1.102

netmask 255.255.255.0

gateway 192.168.1.1

4. 修改域名解析伺服器

由于需要聯網安裝openssh等實作名密碼登入,是以這邊需要配置對應的域名解析伺服器

主機

/etc/resolv.conf檔案内容

sparkmaster

domain localdomain

search localdomain

nameserver 8.8.8.8

sparkslave01

domain localdomain

search localdomain

nameserver 8.8.8.8

sparkslave02

domain localdomain

search localdomain

nameserver 8.8.8.8

5.修改主機名與ip位址映射

主機

/etc/resolv.conf檔案内容

sparkmaster

127.0.0.1 sparkmaster localhost.localdomain localhost

192.168.1.101 sparkslave01

192.168.1.102 sparkslave02

192.168.1.103 sparkmaster

::1 localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

ff02::3 ip6-allhosts

sparkslave01

127.0.0.1 sparkslave01 localhost.localdomain localhost

192.168.1.101 sparkslave01

192.168.1.102 sparkslave02

192.168.1.103 sparkmaster

::1 localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

ff02::3 ip6-allhosts

sparkslave02

127.0.0.1 sparkslave02 localhost.localdomain localhost

192.168.1.101 sparkslave01

192.168.1.102 sparkslave02

192.168.1.103 sparkmaster

::1 localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

ff02::3 ip6-allhosts

完成上述步驟後重新啟動機器

6.安裝ssh (三台主機執行相同指令)

sudo apt-get install openssh-server

然後确認sshserver是否啟動了:

ps -e |grep ssh

7.設定無密碼登入 (三台主機執行相同指令)

執行指令:ssh-keygen -t rsa

執行完這個指令後,會生成兩個檔案id_rsa(私鑰)、id_rsa.pub(公鑰)

将公鑰拷貝到要免登陸的機器上

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh-copy-id -i sparkmaster

ssh-copy-id -i sparkslave02

ssh-copy-id -i sparkslave01

本叢集用的zookeeper版本是3.4.5,将/hadooplearning/zookeeper-3.4.5/conf目錄下的zoo_sample.cfg檔案名重命名為zoo.cfg

vi conf/zoo.cfg,在檔案中填入以下内容:

在/hadooplearning/zookeeper-3.4.5/目錄下建立zookeeper_data

然後cd zookeeper_data進入該目錄,執行指令

touch myid

echo 3 > myid

利用scp -r zookeeper-3.4.5 root@sparkslave01:/hadooplearning/

scp -r zookeeper-3.4.5 root@sparkslave02:/hadooplearning/

将檔案拷貝到其它伺服器上,然後分别進入zookeeper_data目錄執行sparkslave01伺服器上echo 1> myid

sparkslave02伺服器上echo 2> myid

至此zookeeper叢集搭建完畢

将hadoop安裝路徑had00p_home=/hadooplearning/hadoop-2.4.1加入到環境變量

修改hdfs-site.xml

将配置好的hadoop-2.4.1拷到其它伺服器上

打開浏覽器輸入:

Spark-1.4.0叢集搭建
Spark-1.4.0叢集搭建
Spark-1.4.0叢集搭建

輸入以下指令上傳檔案到hadoop

hadoop fs -put /etc/profile /

在active namenode上檢視上傳成功的檔案

Spark-1.4.0叢集搭建

至此hadoop叢集搭建成功

spark-1.4.0叢集搭建

以spark standalone為例

1 在sparkmaster上安裝scala 2.10.4和spark-1.4.0-bin-hadoop2.4,解壓對應安裝包到/hadooplearning目錄,修改/etc/profile檔案,内容如下:

2 進入/hadooplearning/spark-1.4.0-bin-hadoop2.4/conf目錄

cp spark-defaults.conf.template spark-defaults.conf

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

在spark-defaults.conf中添加如下内容:

在spark-defaults.conf中添加如下内容:

3 将sparkmaster中的安裝配置拷由到sparkslave01,sparkslave02上

4 将sparkmaster中的 /hadooplearning/spark-1.4.0-bin-hadoop2.4/sbin中執行以下指令:

利用jps在各主要上檢視,可以看到sparkmaster上多了程序master,而sparkslave01,sparkslave02多了程序worker

Spark-1.4.0叢集搭建

該圖中顯示了叢集的運作相關資訊,說明叢集初步搭建成功

5 spark-1.4.0 叢集程式運作測試

上傳 readme.md檔案到hdfs /user/root目錄root@sparkmaster:/hadooplearning/spark-1.4.0-bin-hadoop2.4# hadoop fs -put readme.md /user/root

Spark-1.4.0叢集搭建

輸入下列語句:

val textcount = sc.textfile(“readme.md”).filter(line => line.contains(“spark”)).count()

程式結果如下:

Spark-1.4.0叢集搭建

至此,spark叢集搭建成功