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拷到其它伺服器上
打開浏覽器輸入:

輸入以下指令上傳檔案到hadoop
hadoop fs -put /etc/profile /
在active namenode上檢視上傳成功的檔案
至此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
該圖中顯示了叢集的運作相關資訊,說明叢集初步搭建成功
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
輸入下列語句:
val textcount = sc.textfile(“readme.md”).filter(line => line.contains(“spark”)).count()
程式結果如下:
至此,spark叢集搭建成功