1. 程式人生 > >Hadoop-2.6.0+Zookeeper-3.4.6+Spark-1.5.0+Hbase-1.1.2+Hive-1.2.0叢集搭建

Hadoop-2.6.0+Zookeeper-3.4.6+Spark-1.5.0+Hbase-1.1.2+Hive-1.2.0叢集搭建

                                                             前言

本部落格目的在於跟大家分享大資料平臺搭建過程,是筆者半年的結晶。在大資料搭建過程中,希望能給大家提過一些幫助,這也是本部落格的價值所在。
部落格內容分為將五個部分,具體如下:

第一部分 叢集平臺搭建
第二部分 SSH登入和JDK安裝
第三部分 Hadoop-2.6.0+zookeeper-3.4.6叢集搭建
第四部分 Spark叢集搭建
第五部分 Hive叢集搭建
第六部分 Hbase 叢集搭建

以下是本叢集所需要的軟體,大家可按需要進行下載:
Ubuntu14.04
VMware Workstation 12 Pro for Linux
Hadoop-2.6.0
jdk-7u80-linux-x64.gz
Zookeeper-3.4.6
Spark-1.5.0
Hbase-1.1.2
Hive-1.2.0

                                              第一部分 Ubuntu物理機和虛擬機器搭建

叢集框架,採用一臺物理機和兩臺虛擬機器。在PC機上用easyBCD方式安裝Win和Ubuntu雙系統。
一.安裝easyBCD
1.下載
網址:http://172.28.0.26/cache/4/02/crsky.com/f5eedf182f9ae67bdd575d0feaf80406/EasyBCD-v2.2.zip
2.設定引導
安裝好easyBCD,開啟並點選新增新條目–>安裝–>NeoGrub–>配置,如圖所示:
這裡寫圖片描述
點選配置後,會跳出menu.lst檔案,刪除檔案裡面的所有內容,並複製以下內容到檔案內:

title Install Ubuntu

root (hd0,1)

kernel (hd0,1)/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-14.04-desktop-amd64.iso ro quiet splash locale=zh_CN.UTF-8

initrd (hd0,1)/initrd.lz

注:如果Win作業系統有系統保留分割槽,則root處為1,即root(hd0,1);如果沒有則為0,即root(hd0,0)。

二.安裝Ubuntu

將buntu-14.04-desktop-amd64.iso檔案拷貝到C盤。用解壓軟體開啟,在casper檔案下有兩個檔案:initrd.lz、vmlinuz.efi,將它們複製到C盤。

接下來重啟PC,在引導介面選擇NeoGrub,進入安裝介面後,ctril+alt+t開啟終端命令,輸入以下命令需要使用的命令取消光碟驅動器掛載:

sudo umount -l /isodevice 

三.Ubuntu相關配置

1.開啟軟體中心更改軟體更新源,一般選擇國內的網易。

2.列舉本地更新

sudo apt-get update

3.安裝可用更新

sudo apt-get upgrade

4.修改root使用者登入

sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

新增

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true
allow-guest=false  

5.設定 root使用者密碼,,並輸入root使用者的密碼

sudo passwd root  

6.解除安裝防火牆

ufw disable   //關閉
sudo apt-get remove  ufw   //解除安裝
sudo ufw status   //檢視

7.安裝ssh
安裝ssh-server

sudo apt-get install openssh-server

安裝ssh-client

sudo apt-get install openssh-client
驗證:
ps -e | grep ssh

450 ??00:00:00 sshd  //如果出現這個,則安裝成功

重啟ssh:
/etc/init.d/ssh restart

四.安裝Ubuntu虛擬機器

5A02H-AU243-TZJ49-GTC7K-3C61N

2.安裝VMware
使用以下命令安裝VMware,”/home/huai/桌面/“為我在Ubuntu下檔案路徑名,大家可跟據自己的做更改。

sudo chmod +x /home/huai/桌面/VMware-Workstation-Full-12.0.0-2985596.x86_64.bundle

sudo /home/huai/桌面/VMware-Workstation-Full-12.0.0-2985596.x86_64.bundle

3.安裝虛擬機器

注:虛擬機器使用者名稱要與物理機的使用者名稱保持一致,如筆者的三臺叢集的使用者名稱都是“huai”。

用VMware安裝虛擬機器,採用典型方式安裝,操作過程很簡單,就不在這敘述了,大家可另行百度。對於剛安裝好Ubuntu虛擬機器,是可以聯網的。按照上面Ubuntu物理機的相關配置對虛擬機器Ubuntu進行同樣操作。

配置好虛擬機器,關閉虛擬機器和VMware。複製安裝的虛擬機器檔案,構成兩臺虛擬機器。

4.修改主機名

因為筆者搭建此叢集是為了學習spark,故將三臺叢集主機名命為spark01、spark02和spark03。其中,park01為物理機,充當主節點。spark02和spark03為兩臺虛擬機器的主機名。

修改物理機主機名,使用以下命令將主機名改為spark01:

sudo gedit /etc/hostname

修改虛擬機器主機名:同上,分別修改為spark02和spark03。

五.修改IP

叢集IP分別設為

192.168.8.101, 192.168.8.102, 192.168.8.103

1.設定虛擬機器IP模式

    虛擬機器網絡卡設定為host-only模式(具體操作,請百度)

2.設定spark02的IP

通過介面設定IP

系統設定-->網路-->選項 -->IPv4設定--> method選擇為manual--> 點選add按鈕--新增
IP:192.168.8.102 子網掩碼:255.255.255.0 閘道器:192.168.1.1--> apply

3.設定spark03的IP

通過同樣的方式把spark03的IP設定為:192.168.8.103

4.設定物理機spark01的IP

給物理機設定靜態IP有點麻煩,因為在學校用的是內網,根據網上很多方法設定後,都無法再上網了。以下這種方式是網上比較常見的修改方式,但是不好使,只作參考,修改方式如下:
1)一種令人不愉快的方式

開啟:
sudo gedit /etc/network/interfaces

新增:
auto eth0
iface eth0 inet static  
address 192.168.8.101  
netmask 255.255.255.0  
gateway 192.168.8.1  

設定DNS域名解析:

開啟:
sudo gedit /etc/resolv.conf 

新增:
search nwu.edu.cn
nameserver 202.117.96.5 
nameserver 202.117.96.10
nameserver 127.0.1.1

開啟:
sudo gedit /etc/resolvconf/resolv.conf.d/tail

新增:
search nwu.edu.cn
nameserver 202.117.96.5 
nameserver 202.117.96.10
nameserver 127.0.1.1

重啟networking命令:

sudo /etc/init.d/networking restart
sudo /etc/init.d/resolvconf restart

筆者自己找到了兩種方式設定一個固定的IP,簡單且容易實現,關鍵在百度上都找不到。一種是採用橋接,第二種是繫結

2)採用橋接

1.點選桌面右上角網路圖示欄中的"編輯連線",網路連線中選中"橋接",點選"新增";
2.對跳轉出來選擇連線型別視窗,選擇"虛擬--橋接",點選"新建",
3.在橋接--橋接連線(c)處,點選"新增",選擇"乙太網",點選新建,在裝置MAC地址(D)處.選擇"eth0",並"儲存"
4.點選IPv4設定,方法處選擇為"手動",>點選"新增"設定IP為:192.168.8.101 子網掩碼:255.255.255.0 閘道器:192.168.1.1,"儲存"

3)採用繫結

採用繫結的方式與橋接方式操作一樣,就是在操作2中,選擇“虛擬--繫結”,其他操作一樣。

六.修改主機名和IP的對映關係

整個叢集的主機名和IP的對映關係的內容設定是一樣的,分別在三臺機子上操作以下命令

sudo  gedit  /etc/hosts

新增:

192.168.8.101   spark01    
192.168.8.102   spark02
192.168.8.103   spark03 

七.重啟

關閉兩臺虛擬機器,並重啟Ubuntu物理機
                                         第二部分  SSH登入和JDK安裝

一.SSH登入配置

本叢集的使用者名稱為”huai”,叢集儘量用統一的使用者名稱,用不同的ssh登入時,還要進行一些其他操作,很麻煩。

1.在物理機spark01上,使用以下命令,四個回車,並cd到相關目錄,操作如下:

huai@spark01:~$ ssh-keygen -t rsa 
huai@spark01:~$ cd /home/huai/.ssh
huai@spark01:~/.ssh$ ls
id_rsa  id_rsa.pub

生成兩個檔案:id_rsa(私鑰)、id_rsa.pub(公鑰)

2.對兩臺虛擬機器進行同樣操作(如上)

3.將虛擬機器的id_rsa.pub(公鑰)傳到spark01,”huai”是我叢集的使用者名稱,”huai”應改為你自己設定的使用者名稱。分別在spark02和spark03進行以下操作:

scp id_rsa.pub huai@spark01:/home/huai/.ssh/id_rsa.pub.spark02
scp id_rsa.pub huai@spark01:/home/huai/.ssh/id_rsa.pub.spark03

4.在物理機上,按以下操作:

huai@spark01:~$ cd /home/huai/.ssh
huai@spark01:~/.ssh$ ls
id_rsa.pub       id_rsa.pub.spark03
id_rsa           id_rsa.pub.spark02 

將公鑰匯入到綜合authorized_keys檔案中,在目錄[email protected]:~/.ssh$下使用匯入命令:

cat id_rsa.pub >> authorized_keys
cat id_rsa.pub.spark02 >> authorized_keys
cat id_rsa.pub.spark03 >> authorized_keys

5.將spark01上的authorized_keys複製到spark02和spark03的/home/huai/.ssh/目錄下

scp authorized_keys huai@spark02:/home/huai/.ssh/authorized_keys
scp authorized_keys huai@spark03:/home/huai/.ssh/authorized_keys 

6.ssh常見錯誤修改
因為筆者的已經配置好,具體錯誤就沒法再重現了。不過只要按以下操作之後,保證不會再有錯誤。
  
1):

sudo gedit /etc/ssh/sshd_config

開啟檔案後,註釋”PermitRootLogin without-password”,使用”#”註釋
並在其下面新增: PermitRootLogin yes

2):

開啟:
 sudo  gedit /etc/ssh/ssh_config 

新增:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

3):
如果有Agent admitted failure to sign using the key錯誤丟擲,執行以下命令即可:

ssh-add

4):
如果ssh登入時,在known_hosts報出警告,後面顯示一個數字,使用以下命令將其刪除,比如顯示數字”8”.

sed -i 8d /home/huai/.ssh/known_hosts

7.分別在每臺上進行以下ssh登入,使用”exit”退出

ssh spark01
ssh spark02
ssh spark03

二.安裝JDK

1.下載jdk,6和8不做考慮,8不支援,6版本太低,下載地址如下:

2.安裝

建立java資料夾:

sudo mkdir /usr/java

解壓

sudo tar -zxvf /home/huai/桌面/jdk-7u80-linux-x64.gz -C /usr/java/

修改檔案許可權

sudo chmod -R 777 /usr/java/    

3.修改環境變數
因為筆者叢集已經搭建好了,為了讓大家不要經常修改環境變數,筆者在此處把所有安裝包的環境變數都列出來,供大家參考。

操作:
sudo gedit /etc/profile

在檔案最後新增:
export JAVA_HOME=/usr/java/jdk1.7.0_80
export JRE_HOME=/usr/java/jdk1.7.0_80/jre
export SCALA_HOME=/spark/scala-2.11.6
export SPARK_HOME=/spark/spark-1.5.0
export HADOOP_HOME=/spark/hadoop-2.6.0
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"
export HIVE_HOME=/spark/hive-1.2.0
export IDEA_HOME=/usr/idea/idea-IC-141.178.9
export HBASE_HOME=/spark/hbase-1.1.2
export ZOOKEEPER_HOME=/spark/zookeeper-3.4.6
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin:$IDEA_HOME/bin:$HIVE_HOME/bin:$HBASE_HOME/bin:$ZOOKEEPER_HOME/bin

重新整理

source /etc/profile

4.驗證
使用命令java -version,如果出現java version “1.7.0_80”,則安裝成功

5.設定jdk預設
如果Ubuntu上已經安裝過openjdk納悶需要設定預設jdk。若以上驗證成功,可以跳過設定預設jdk。依次操作以下命令:

sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_80/bin/java 300  
sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.7.0_80/bin/javac 300  
sudo update-alternatives --install /usr/bin/jar jar /usr/java/jdk1.7.0_80/bin/jar 300 
sudo update-alternatives --install /usr/bin/javah javah /usr/java/jdk1.7.0_80/bin/javah 300   
sudo update-alternatives --install /usr/bin/javap javap /usr/java/jdk1.7.0_80/bin/javap 300
sudo update-alternatives --config java  
        第三部分 Hadoop-2.6.0+zookeeper-3.4.6叢集搭建

 
一.叢集規劃

文字描述:本叢集僅有三臺機子:spark01、spark02和spark03。三臺都安裝hadoop-2.6.0,zookeeper-3.4.6。spark01和spark02共運行了兩個namenode,兩個datanode執行spark02和spark03上。

二.zooekeeper配置

1.建立spark資料夾

sudo mkdir /spark
修改許可權:
sudo chmod -R 777 /spark

2.解壓

sudo tar -zxvf /home/huai/桌面/zookeeper-3.4.6.tar.gz -C /spark/

3.修改zoo.cfg檔案

cd /spark/zookeeper-3.4.6/conf/
mv zoo_sample.cfg zoo.cfg

4.配置zoo.cfg

gedit zoo.cfg

修改:
dataDir=/spark/zookeeper-3.4.6/tmp
新增:
dataLogDir=/spark/zookeeper-3.4.6/logs
在最後新增:
server.1=spark01:2888:3888
server.2=spark02:2888:3888
server.3=spark03:2888:3888

儲存退出

5.建立資料夾

mkdir /spark/zookeeper-3.4.6/tmp
mkdir /spark/zookeeper-3.4.6/logs

6.設定myid
在5)中建立的tmp資料夾下建立一個空檔案,並在其中寫入”1“。

建立檔案:
touch myid

寫入"1":
gedit myid

7.修改環境變數

雖然前面已經把所有的環境變數都設定好了,但這個步驟是環境配置必須的操作,所以在此處重複一遍

開啟:
sudo  gedit /etc/profile
新增:
export ZOOKEEPER_HOME=/spark/zookeeper-3.4.6
export PATH=:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
重新整理:
source /etc/profile

8.將配置好的zookeeper拷貝到其他節點

scp -r /spark/zookeeper-3.4.6/ huai@spark02:/spark/
scp -r /spark/zookeeper-3.4.6/ huai@spark03:/spark/

9.修改虛擬機器的myid

執行:
cd /spark/zookeeper-3.4.6/tmp
開啟:
gedit myid
其中:
在spark02 中寫入"2"
在spark03 中寫入"3"

10.修改虛擬機器的環境變數
按7中的操作分別修改虛擬機器spark02和spark03的環境變數。

sudo tar -zxvf /home/huai/桌面/hadoop-2.6.0.tar.gz -C /spark  
修改許可權:
sudo chmod -R 777 /spark

3.配置hadoop環境檔案

注:在操作hadoop-env.sh,註釋以下內容

#export HADOOP_OPTS="$HADOOP_OPTS -
Djava.net.preferIPv4Stack=true"
cd到配置檔案目錄下:

cd  /spark/hadoop-2.6.0/etc/hadoop/

依次操作:

gedit hadoop-env.sh
gedit yarn-env.sh
gedit mapred-env.sh

依次新增:

export JAVA_HOME=/usr/java/jdk1.7.0_80
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"

依次儲存退出

按以下操作依次修改hadoop其它配置檔案,可以直接複製到配置檔案。相關檔案屬性以及細節,可以查閱其他資料。

4.gedit core-site.xml

<configuration>
  <property>
     <name>fs.defaultFS</name>
    <value>hdfs://ns1</value>
  </property>
  <property>
     <name>hadoop.tmp.dir</name>
     <value>/spark/hadoop-2.6.0/tmp</value>
  </property>
  <property>
     <name>ha.zookeeper.quorum</name>    <value>spark01:2181,spark02:2181,spark03:2181</value>
  </property>
</configuration>

5.gedit hdfs-site.xml

<configuration>
  <property>
     <name>dfs.nameservices</name>
     <value>ns1</value>
  </property>
  <property>
     <name>dfs.ha.namenodes.ns1</name>
     <value>nn1,nn2</value>
  </property>
  <property>
     <name>dfs.namenode.rpc-address.ns1.nn1</name>
     <value>spark01:9000</value>
  </property>
  <property>
      <name>dfs.namenode.http-address.ns1.nn1</name>
      <value>spark01:50070</value>
  </property>
  <property>
       <name>dfs.namenode.rpc-address.ns1.nn2</name>
       <value>spark02:9000</value>
  </property>
  <property>
     <name>dfs.namenode.http-address.ns1.nn2</name>
     <value>spark02:50070</value>
  </property>
  <property>
      <name>dfs.namenode.shared.edits.dir</name>  <value>qjournal://spark01:8485;spark02:8485;spark03:8485/ns1</value>
  </property>
  <property>
     <name>dfs.journalnode.edits.dir</name>
     <value>/spark/hadoop-2.6.0/journal</value>
  </property>
   <property>
      <name>dfs.ha.automatic-failover.enabled</name>
      <value>true</value>
   </property>
   <property>
      <name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
  <property>
     <name>dfs.ha.fencing.methods</name>
    <value>
          sshfence
          shell(/bin/true)
        </value>
   </property>
   <property>
      <name>dfs.ha.fencing.ssh.private-key-files</name>
      <value>/home/huai/.ssh/id_rsa</value>
  </property>
  <property>
     <name>dfs.ha.fencing.ssh.connect-timeout</name>
     <value>30000</value>
  </property>
</configuration>

6.mv mapred-site.xml.template mapred-site.xml
gedit mapred-site.xml

<configuration>
  <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>
</configuration>    

7.gedit yarn-site.xml

<configuration>
  <property>
      <name>yarn.resourcemanager.ha.enabled</name>
      <value>true</value>
  </property>
   <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>yrc</value>
  </property>
  <property>
      <name>yarn.resourcemanager.ha.rm-ids</name>
       <value>rm1,rm2</value>
  </property>
   <property>
      <name>yarn.resourcemanager.hostname.rm1</name>
      <value>spark01</value>
   </property>
   <property>
     <name>yarn.resourcemanager.hostname.rm2</name>
     <value>spark02</value>
 </property>
   <property>
     <name>yarn.resourcemanager.zk-address</name>
   <value>spark01:2181,spark02:2181,spark03:2181</value>
   </property>
   <property>
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
     </property>
</configuration>            

8.gedit slaves

spark02
spark03

10.複製到其他節點

scp -r /spark/hadoop-2.6.0 huai@spark02:/spark 
scp -r /spark/hadoop-2.6.0 huai@spark03:/spark 

11.修改環境變數,可略過

開啟:
sudo gedit /etc/profile
新增:
export HADOOP_HOME=/spark/hadoop-2.6.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
重新整理:
source /etc/profile     

12.驗證
輸入以下命令,如果出現hadoop對應的版本,則hadoop配置成功。

hadoop version

三.叢集啟動(嚴格按照下面的步驟)

1.啟動zookeeper叢集(分別在spark01、spark02、spark03上啟動zk)

cd /spark/zookeeper-3.4.6/bin/
./zkServer.sh start

檢視狀態:一個leader,兩個follower
zkServer.sh status

2.啟動journalnode(分別在spark01、spark02、spark03上啟動journalnode)

在三臺機子上執行:
cd /spark/hadoop-2.6.0/sbin
hadoop-daemon.sh start journalnode

執行jps命令檢驗,spark01、spark02、spark03上多了JournalNode程序

3.格式化HDFS
在主節點spark01上執行命令

hdfs namenode -format

格式化成功會生成tmp檔案,其路徑為core-site.xml中的hadoop.tmp.dir配置路徑

4.將tmp拷到其他節點
注意tmp的路徑:

scp -r tmp   huai@spark02:/spark/hadoop-2.6.0/
scp -r tmp   huai@spark03:/spark/hadoop-2.6.0/

5.格式化ZK

在spark01上執行:
hdfs zkfc -formatZK

6.啟動HDFS

在spark01上執行:
start-dfs.sh

7.啟動YARN.resourcemanager

start-yarn.sh

8.驗證
通過以下IP用瀏覽器訪問,一個處於active,一個處於standby,說明叢集啟動成功。

http://192.168.8.101:50070
NameNode 'spark01:9000' (active)
http://192.168.8.102:50070
NameNode 'spark02:9000' (standby)

9.驗證HDFS HA

向hdfs上傳一個檔案:
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
kill掉active的NameNode
kill -9 <pid of NN>
訪問:http://192.168.8.101:50070 無法開啟
訪問:http://192.168.8.102:50070
NameNode 'spark02:9000' (active)
執行:
hadoop fs -ls /
-rw-r--r--   3 root supergroup      1926 2015-05-024 15:36 /profile
手動啟動掛掉的那個NameNode,在spark01上執行
hadoop-daemon.sh start namenode
訪問:http://192.168.8.101:50070
顯示:NameNode 'spark01:9000' (standby)

刪除上傳檔案:
hadoop fs -rm -r /profile

到這,hadoop叢集相當於已經成功搭建,剩下的就是要搭建基於hadoop的其他元件,如spark,hive,hbase。相信通過自學搭建hadoop叢集的人兒,一定受了不少折騰。作為不是技術大牛的人兒,唯有屢敗屢戰,才能祭奠內心那份對技術的熱血澎湃。

                                        第四部分 Spark叢集搭建

因為spark 原始碼是使用Scala語言,所以需要安裝Scala環境。
一.安裝 Scala
1.下載
網址:http://www.scala-lang.org/download/
2.解壓

sudo tar -zxf  sudo tar -zxvf /home/huai/桌面/scala-2.11.6.tgz  -C /spark

3.修改環境變數

開啟:
sudo gedit /etc/profile
新增:
export SCALA_HOME=/spark/scala-2.11.6
export PATH=PATH:$SCALA_HOME/bin
重新整理:
source /etc/profile

4.顯示版本

huai@spark01:~$ scala -version
Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL
  1. 測試
    輸入”scala”命令,進入scala互動介面
huai@spark01:~$ scala
scala> 8*8
res0: Int = 64

6.將scala複製到其他節點

scp -r /spark/scala-2.11.6/ huai@spark02:/spark/
scp -r /spark/scala-2.11.6/ huai@spark03:/spark/

7.重複 3修改其他節點的環境變數

2.解壓

tar -zxf   /home/huai/桌面/spark-1.5.0-bin-hadoop2.6.tgz -C /spark

3.檔名修改為:spark-1.5.0

mv /spark/spark-1.5.0-bin-hadoop2.6  spark-1.5.0

4.修改環境變數

開啟:
sudo gedit  /etc/profile
新增:
export SPARK_HOME=/spark/spark-1.5.0
export PATH=PATH:$SPARK_HOME/bin
重新整理:
source /etc/profile  

5.配置spark-env.sh

進入spark的conf目錄:
cd /spark/spark-1.5.0/conf/
mv  spark-env.sh.template spark-env.sh

開啟:
sudo gedit  spark-env.sh

新增:

export JAVA_HOME=/usr/java/jdk1.7.0_80
export SCALA_HOME=/spark/scala-2.11.6
export SPARK_MASTER_IP=192.168.8.101
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/spark/hadoop-2.6.0/etc/hadoop
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"

6.配置slaves

在spark的conf目錄下:

mv slaves.template slaves

開啟:
sudo gedit  slaves
新增:
spark01
spark02
spark03     

7.把spark複製到其他節點

scp -r spark-1.5.0 huai@spark02:/spark/
scp -r spark-1.5.0 huai@spark03:/spark/

8.修改虛擬階環境變數

sudo gedit /etc/profile
新增:
export SPARK_HOME=/spark/spark-1.5.0
export PATH=PATH:$SPARK_HOME/bin
export SCALA_HOME=/spark/scala-2.11.6
export PATH=PATH:$SCALA_HOME/bin
重新整理:
source /etc/profile

三.啟動叢集
1.啟動zookeeper

在每臺執行:
zkServer.sh start

2.啟動hadoop叢集,在hadoop的sbin目錄下執行:

start-all.sh

3.啟動spark叢集

/spark/spark-1.5.0/bin$./start-all.sh

5.Web管理介面

http://192.168.8.101:8080/

Spark有好幾個模組,如SparkSQL,Graphx,MLlib。因為Mapreduce處理速率不如Spark快,Spark將成為Mapreduce的替代品。對於Spark,我主要學習了機器學習MLlib和SparkSQL。如果你對大資料感興趣,那麼建議好好研究一下Spark。

                                 第五部分 Hive叢集搭建

一.概述
hive安裝可分為四部分:

1)安裝mysql
2)配置 Metastore
3)配置HiveClient 
4)配置hiveserver

搭建分佈:mysql,Metastore安裝配置在主節點spark01上, HiveClient客戶端安裝在spark02上。注:HiveClient客戶端也可以不配置。

三.安裝mysql
mysql只需在物理機spark01上安裝,Ubuntu軟體中心下載安裝mysql伺服器

1.配置mysql

執行:
/usr/bin/mysql_secure_installation

輸入密碼:
刪除匿名使用者:
Remove anonymous users? [Y/n] Y
允許使用者遠端連線:
Disallow root login remotely? [Y/n]n
移除test資料庫:
Remove test database and access to it? [Y/n] Y

2.登陸mysql

  mysql -u root -p

3.建立hive資料庫,並對其授權,注’huai’為你設立的登入密碼

mysql>create database hive;
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'huai' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES; 

4.修改hive資料庫字元
一定要修改,不然hive建表時會報錯。

mysql>alter database hive character set latin1

5.修改允許遠端登入mysql

sudo gedit /etc/mysql/my.cnf
註釋:
#bind-address=127.0.0.1
sudo tar -zxvf /home/huai/桌面apache-hive-1.2.0.tar.gz -C /spark/

檔名修改為hive-1.2.0
mv apache-hive-1.2.0   hive-1.2.0

3.修改配置檔名
在hive-1.2.0/conf下

mv hive-default.xml.template hive-site.xml
mv  hive-log4j.properties.template hive-log4j.properties
mv  hive-exec-log4j.properties.template  hive-exec-log4j.properties
mv hive-env.sh.template   hive-env.sh

4.gedit hive-env.sh

export HADOOP_HOME=/spark/hadoop-2.6.0
export HIVE_CONF_DIR=/spark/hive-1.2.0/conf

5.gedit hive-log4j.properties
新增

 hive.log.dir=/spark/hive-1.2.0/logs

6.新建logs檔案

mkdir /spark/hive-1.2.0/logs

7.gedit hive-site.xml
刪除所有內容,新增如下內容.注意配置檔案中的’huai’為mysql登入密碼,記得修改

<configuration>
   <property>
      <name>hive.metastore.warehouse.dir</name>
      <value>hdfs://ns1/hive/warehouse</value>
   </property>
    <property>
      <name>hive.exec.scratchdir</name>
      <value>hdfs://ns1/hive/scratchdir</value>
   </property>
   <property>
      <name>hive.querylog.location</name>
      <value>/spark/hive-1.2.0/logs</value>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
   </property>
   <property>
       <name>javax.jdo.option.ConnectionDriverName</name>
       <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
    <name>ja