3節點集羣搭建

https://www.cnblogs.com/chaoren399/articles/4749513.html

集羣的概念

計算機集羣是一種計算機系統, 它經過一組鬆散集成的計算機軟件和/或硬件鏈接起來高度緊密地協做完成計算工做。

l 集羣系統中的單個計算機一般稱爲節點,一般經過局域網鏈接。

l 集羣技術的特色:

經過多臺計算機完成同一個工做。達到更高的效率

兩機或多機內容、工做過程等徹底同樣。若是一臺死機,另外一臺能夠起做用。


集羣搭建:

第一部分: linux機器準備工做(3臺)

1.安裝VMWare軟件



2.在VMWare軟件下linux系統


3.配置VMWare虛擬軟件網卡,保證Windows機器能和虛擬機linux正常通訊


Ø 點擊VMware快捷方式,右鍵打開文件所在位置 -> 雙擊vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 設置網段:192.168.0.0 子網掩碼:255.255.255.0 -> apply -> ok

Ø 回到windows --> 打開網絡和共享中心 -> 更改適配器設置 -> 右鍵VMnet1 -> 屬性 -> 雙擊IPv4 -> 設置windows的IP:192.168.0.100 子網掩碼:255.255.255.0 -> 點擊肯定

Ø 在虛擬軟件上 --My Computer -> 選中虛擬機 -> 右鍵 -> settings -> network adapter -> host only -> ok

3.1 修改主機名

vim /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=zookeeperServer1 ###

3.2 設置linux機器IP

Ø 第一種:經過Linux圖形界面進行修改(普通程序員專用)

進入Linux圖形界面 -> 右鍵點擊右上方的兩個小電腦 -> 點擊Edit connections -> 選中當前網絡System eth0 -> 點擊edit按鈕 -> 選擇IPv4 -> method選擇爲manual -> 點擊add按鈕 -> 添加IP:192.168.0.2 子網掩碼:255.255.255.0 網關:192.168.0.1 -> apply


192.168.19.100


Ø 第二種:修改配置文件方式(屌絲程序員專用)

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"

BOOTPROTO="static" ###

HWADDR="00:0C:29:3C:BF:E7"

IPV6INIT="yes"

NM_CONTROLLED="yes"

ONBOOT="yes"

TYPE="Ethernet"

UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"

IPADDR="192.168.0.101" ###(注意:是每臺機器對應的地址)

NETMASK="255.255.255.0" ###

GATEWAY="192.168.0.1" ###

3.3修改主機名和IP的映射關係(注意:這裏是3臺機器對應的映射關係)

vim /etc/hosts


scp -r 

hadoop1 192.168.0.101 zookeeperServer1  nameNode1  resourceManager1

hadoop2 192.168.0.102 zookeeperServer2  nameNode2  resourceManager2

hadoop3 192.168.0.103 zookeeperServer3





3.4關閉防火牆

#查看防火牆狀態

service iptables status

#關閉防火牆

service iptables stop

#查看防火牆開機啓動狀態

chkconfig iptables --list

#關閉防火牆開機啓動

chkconfig iptables off

3.4 重啓系統

reboot

3.5  配置免密碼登錄

生成ssh免登錄密鑰



#在hadoop0上生產一對鑰匙
cd ~/.ssh

ssh-keygen -t rsa (四個回車)

執行完這個命令後,會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)

#將公鑰拷貝到其餘節點,包括本身

ssh-copy-id nameNode1

每一個節點重複上述兩個操做



 4.安裝JDK

 上傳

 解壓jdk

#建立文件夾

mkdir /usr/java

#解壓

tar -zxvf jdk-7u79-linux-i586.tar.gz -C /usr/java/

Ø 將java添加到環境變量中

vim /etc/profile

#在文件最後添加

JAVA_HOME=/usr/java/jdk1.7.0_79

export PATH=$JAVA_HOME/bin:$PATH

#刷新配置

source /etc/profile


第二部分: 搭建Hadoop集羣詳細步驟:

1.安裝配置zooekeeper集羣(在hadoop1上)

1.1解壓

tar -zxvf zookeeper-3.4.6.tar.gz -C /hadoop/

1.2修改配置

cd /hadoop/zookeeper-3.4.6/conf/

cp zoo_sample.cfg zoo.cfg

vim zoo.cfg

修改:dataDir=/hadoop/zookeeper-3.4.6/tmp

在最後添加:

server.1=hadoop0:2888:3888

server.2=hadoop1:2888:3888

server.3=hadoop2:2888:3888

保存退出

而後建立一個tmp文件夾

mkdir /hadoop/zookeeper-3.4.6/tmp

再建立一個空文件

touch /hadoop/zookeeper-3.4.6/tmp/myid

最後向該文件寫入ID

echo 1 > /hadoop/zookeeper-3.4.6/tmp/myid

1.3將配置好的zookeeper拷貝到其餘節點(首先分別在hadoop一、hadoop2 根目錄下建立一個hadoop 目錄:mkdir -p /hadoop/zookeeper-3.4.6)

 scp -r /hadoop/zookeeper-3.4.6 root@hadoop1:/hadoop/

 scp -r /hadoop/zookeeper-3.4.6 root@hadoop2:/hadoop/

注意:修改hadoop一、hadoop2對應/hadoop/zookeeper-3.4.6/tmp/myid的內容

hadoop1:

echo 2 > /hadoop/zookeeper-3.4.6/tmp/myid

hadoop2: 

echo 3 > /hadoop/zookeeper-3.4.6/tmp/myid


2.安裝配置hadoop集羣(在hadoop0 上操做)


2.1解壓

tar -zxvf hadoop-2.6.0.tar.gz -C /hadoop/

2.2配置HDFS(hadoop2.0全部的配置文件都在$HADOOP_HOME/etc/hadoop目錄下)

#將hadoop添加到環境變量中

vim /etc/profile

export JAVA_HOME=/usr/java/jdk1.7.0_79

export HADOOP_HOME=/hadoop/hadoop-2.6.0

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile

#hadoop2.0的配置文件所有在$HADOOP_HOME/etc/hadoop下

cd /hadoop/hadoop-2.6.0/etc/hadoop

2.2.1修改hadoop-env.sh

export JAVA_HOME=/usr/java/jdk1.7.0_79

2.2.2修改core-site.xml

<configuration>

<!-- 指定hdfs的nameservice爲ns1 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://ns1</value>

</property>

<!-- 指定hadoop臨時目錄 -->

<property>

<name>hadoop.tmp.dir</name>

<value>/hadoop/hadoop-2.6.0/tmp</value>

</property>

<!-- 指定zookeeper地址 -->

<property>

<name>ha.zookeeper.quorum</name>

<value>zookeeperServer1:2181,zookeeperServer2:2181,zookeeperServer3:2181</value>

</property>

</configuration>

2.2.3修改hdfs-site.xml

<configuration>

<!--指定hdfs的nameservice爲ns1,須要和core-site.xml中的保持一致 -->

<property>

<name>dfs.nameservices</name>

<value>ns1</value>

</property>

<!-- ns1下面有兩個NameNode,分別是nn1,nn2 -->

<property>

<name>dfs.ha.namenodes.ns1</name>

<value>nn1,nn2</value>

</property>

<!-- nn1的RPC通訊地址 -->

<property>

<name>dfs.namenode.rpc-address.ns1.nn1</name>

<value>nameNode1:9000</value>

</property>

<!-- nn1的http通訊地址 -->

<property>

<name>dfs.namenode.http-address.ns1.nn1</name>

<value>nameNode1:50070</value>

</property>

<!-- nn2的RPC通訊地址 -->

<property>

<name>dfs.namenode.rpc-address.ns1.nn2</name>

<value>nameNode2:9000</value>

</property>

<!-- nn2的http通訊地址 -->

<property>

<name>dfs.namenode.http-address.ns1.nn2</name>

<value>nameNode2:50070</value>

</property>

<!-- 指定NameNode的元數據在JournalNode上的存放位置 -->

<property>

<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://zookeeperServer1:8485;zookeeperServer2:8485;zookeeperServer3:8485/ns1</value>

</property>

<!-- 指定JournalNode在本地磁盤存放數據的位置 -->

<property>

<name>dfs.journalnode.edits.dir</name>

<value>/hadoop/hadoop-2.6.0/journal</value>

</property>

<!-- 開啓NameNode失敗自動切換 -->

<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>

<!-- 使用sshfence隔離機制時須要ssh免登錄 -->

<property>

<name>dfs.ha.fencing.ssh.private-key-files</name>

<value>/root/.ssh/id_rsa</value>

</property>

<!-- 配置sshfence隔離機制超時時間 -->

<property>

<name>dfs.ha.fencing.ssh.connect-timeout</name>

<value>30000</value>

</property>

</configuration>

2.2.4修改mapred-site.xml

<configuration>

<!-- 指定mr框架爲yarn方式 -->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

2.2.5修改yarn-site.xml

<configuration>

<!-- 開啓RM高可靠 -->

<property>

<name>yarn.resourcemanager.ha.enabled</name>

<value>true</value>

</property>

<!-- 指定RM的cluster id -->

<property>

<name>yarn.resourcemanager.cluster-id</name>

<value>yrc</value>

</property>

<!-- 指定RM的名字 -->

<property>

<name>yarn.resourcemanager.ha.rm-ids</name>

<value>rm1,rm2</value>

</property>

<!-- 分別指定RM的地址 -->

<property>

<name>yarn.resourcemanager.hostname.rm1</name>

<value>resourceManager1</value>

</property>

<property>

<name>yarn.resourcemanager.hostname.rm2</name>

<value>resourceManager2</value>

</property>

<!-- 指定zk集羣地址 -->

<property>

<name>yarn.resourcemanager.zk-address</name>

<value>zookeeperServer1:2181,zookeeperServer2:2181,zookeeperServer3:2181</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

2.2.6修改slaves(slaves是指定子節點的位置,由於要在nameNode1上啓動HDFS、在resourceManager1啓動yarn,因此nameNode1上的slaves文件指定的是datanode的位置,resourceManager1上的slaves文件指定的是nodemanager的位置)

zookeeperServer1

zookeeperServer2

zookeeperServer3



首次啓動與初始化hadoop集羣

###注意:嚴格按照下面的步驟 先檢查各臺hadoop環境變量是否設置好

2.5啓動zookeeper集羣(分別在hadoop0、hadoop一、hadoop2上啓動zk)

 ZOOKEEPER_HOME=/hadoop/zookeeper-3.4.5

cd /hadoop/zookeeper-3.4.5/bin/

./zkServer.sh start

#查看狀態:一個leader,兩個follower

./zkServer.sh status

2.6啓動journalnode(分別在在hadoop0、hadoop一、hadoop2上執行)

cd /hadoop/hadoop-2.6.0

sbin/hadoop-daemon.sh start journalnode

#運行jps命令檢驗,hadoop0、hadoop一、hadoop2上多了JournalNode進程

2.7格式化HDFS

#在hadoop0上執行命令:

hdfs namenode -format

#格式化後會在根據core-site.xml中的hadoop.tmp.dir配置生成個文件,這裏我配置的是/hadoop/hadoop-2.6.0/tmp,而後將/hadoop/hadoop-2.6.0tmp拷貝到hadoop1的/hadoop/hadoop-2.6.0下。



scp -r /hadoop/hadoop-2.6.0/tmp/ root@hadoop1:/hadoop/hadoop-2.6.0/

2.8格式化ZK(在hadoop1上執行便可)

hdfs zkfc -formatZK


2.9啓動HDFS(在hadoop1上執行)

sbin/start-dfs.sh

2.10啓動YARN(#####注意#####:是在hadoop0上執行start-yarn.sh,(能夠把namenode和resourcemanager分開是由於性能問題,由於他們都要佔用大量資源,因此把他們分開了,他們分開了就要分別在不一樣的機器上啓動)

sbin/start-yarn.sh


3 驗證集羣是否可用
啓動完成後,能夠統計瀏覽器訪問:

http://192.168.19.100:50070

Overview 'hadoop0:9000' (active)

http://192.168.19.101:50070

Overview 'hadoop1:9000' (standby)

(resourcemanager:http://192.168.19.100:8088/cluster)




首先向hdfs上傳一個文件

hadoop fs -put /etc/profile /test

hadoop fs -ls /

經過瀏覽器訪問:http://192.168.19.100:50070


運行一下hadoop提供的demo中的WordCount程序:

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /test/profile  /test/out


(下載頁面須要從新配置本地電腦的hosts)



之後重複啓動的流程
1. 啓動zookeeper集羣(分別在hadoop0、hadoop一、hadoop2上啓動zk)

cd /hadoop/zookeeper-3.4.5/bin/

./zkServer.sh start

#查看狀態:一個leader,兩個follower

./zkServer.sh status

2.啓動journalnode(分別在在hadoop0、hadoop一、hadoop2上執行)

cd /hadoop/hadoop-2.6.0

sbin/hadoop-daemon.sh start journalnode

#運行jps命令檢驗,hadoop0、hadoop一、hadoop2上多了JournalNode進程

3.啓動HDFS(在hadoop0上執行)

sbin/start-dfs.sh (zookeeperServer 上多了datanode)

4.啓動YARN(在hadoop0上執行)

sbin/start-yarn.sh

5.最後啓動執備resourcemanager(在hadoop1上執行)

yarn-daemon.sh start resourcemanager




 一些啓動命令:(***記住***)
啓動/關閉namenode

hadoop-daemon.sh start/stop namenode

啓動/關閉datanode

hadoop-daemon.sh start/stop datanode

啓動/關閉journalnode

hadoop-daemon.sh start/stop journalnode

啓動/關閉resourcemanager

yarn-daemon.sh start/stop resourcemanager

啓動zookeeper

./zkServer.sh start

啓動/關閉hdfs

start-dfs.sh/stop-dfs.sh

啓動/關閉yarn

start-yarn.sh/stop-yarn.sh
相關文章
相關標籤/搜索