一、准備工作:
1、找3台以上的主機(因為HDFS文件系統中保存的文件的blocak在datanode中至少要有3份或3份以上的備份,備份不能放於同一個機架上,更不能放於同一台主機上),我這里使用的是4台,分別是hadoop1、hadoop2、hadoop3和hadoop4。
2、安裝每台主機的基本環境:linux CentOS6.5 64x系統,啟動每台主機的系統,配置好網絡和主機名《====》ip的映射。
配置網絡的文件在:/etc/sysconfig/network-scripts/ifcfg-eth0文件中
注:每一台主機都要配置,但是IP不能重復。
主機名與IP的映射文件在:/etc/hosts文件中
3、關閉每台主機的防火牆。注:必須關閉,千萬不能忘記,我已經在這個上面吃虧很多次了。
Command:service iptables stop
4、同步每台主機的時間,這里使用的是上海交通大學網絡中心NTP服務器來同步時間。
Command:ntpdate ntp.sjtu.edu.cn
二、安裝並配置zookeeper服務器:這里將主機名為hadoop1、hadoop2和hadoop3的主機定為zookeeper服務器。
1、在hadoop1中安裝zookeeper。自己從zookeeper官方網站上下載,我這里使用的是zookeeper-3.4.6,安裝步驟不在這里詳解了。
2、使用vim 編輯器修改zookeeper安裝目錄中conf下的zoo_sample.cfg文件,即zookeeper的配置文件。vim是vi編輯器的升級版,可自行安裝,使用vi也可以。
Command:vi /root/zookeeper-3.4.6/conf/zoo_sample.cfg
3、在zoo_sample.cfg文件的末尾添加:
4、通過網絡拷貝命令將hadoop1上的zookeeper安裝目錄拷貝到hadoop2和hadoop3的相同目錄下:
Command: scp /root/zookeeper-3.4.6 root@hadoop2:/root/ scp /root/zookeeper-3.4.6 root@hadoop3:/root/
5、為各zookeeper服務器主機創建/home/zk_data目錄
Command:
mkdir /home/zk_data
6、為各zookeeper服務器配置myid文件,myid這個文件是不存在的,使用vim編輯器編輯保存后會自動創建該文件,該文件的內容為上述配置文件中為其zookeeper服務器在server.x=hadoopx:2888:3888中server后面的x代表的id,編輯保存即可。每台zookeeper服務器主機都要配置。
Command:
vim /home/zk_data/myid
7、啟動3台zookeeper服務器
Command:
/root/zookeeper-3.4.6/bin/zkServer.sh start
8、到zookeeper安裝目錄的父目錄中查看日志文件,看是否啟動成功
三、配置HDFS中的namenode、JN,這里將hadoop1和hadoop4定為namenode,將hadoop1-3定為JN。
1、在hadoop1主機中安裝hadoop,我這里安裝的是hadoop-2.5.1。
2、修改hadoop1配置文件中hdfs-site.cfg文件
3、修改hadoop1配置文件中core-site.cfg文件
4、通過網絡拷貝命令將hadoop1中hadoop的安裝目錄拷貝到另外三台機器中。
Command: scp /root/hadoop-2.5.1 root@hadoop2:/root/ scp /root/hadoop-2.5.1 root@hadoop3:/root/ scp /root/hadoop-2.5.1 root@hadoop4:/root/
5、啟動hadoop1-3主機中的JN
Command:
/root/hadoop-2.5.1/sbin/hadoop-daemon.sh start journalnode
6、初始化主機hadoop1中的hadoop
Command:
/root/hadoop-2.5.1/bin/hdfs namenode -format
7、在hadoop1中執行:
Command:
/root/hadoop-2.5.1/sbin/hadoop-daemon.sh start namenode
8、在hadoop4中執行:
Command:
/root/hadoop-2.5.1/bin/hdfs namenode -bootstrapStandby
9、關閉hadoop1的namenode
Command:
/root/hadoop-2.5.1/sbin/hadoop-daemon.sh stop namenode
10、在ZK中創建znode來存儲automatic Failover的數據,在hadoop1中執行:
Command: /root/hadoop-2.5.1/bin/hdfs zkfc -formatZK
11、從hadoop1啟動namenode
Command:
/root/hadoop-2.5.1/sbin/start-dfs.sh