天天看點

Hadoop HA高可用叢集搭建(詳細)

一、準備實體叢集。 1、實體叢集搭建方式。 采用搭建3台虛拟機的方式來部署3個節點的實體叢集。 2、虛拟機準備。 準備一個已近建好的虛拟機進行克隆。(建議為沒進行過任何操作的) 在要選擇克隆的虛拟機上右擊滑鼠,管理,克隆。 在彈出對話框中進行以下操作。 (1)、下一步。
Hadoop HA高可用叢集搭建(詳細)
(2)、選擇虛拟機中的目前狀态,下一步。
Hadoop HA高可用叢集搭建(詳細)
(3)、選擇建立完整克隆,下一步。
Hadoop HA高可用叢集搭建(詳細)
(4)、輸入虛拟機名稱,下一步。
Hadoop HA高可用叢集搭建(詳細)
(5)、克隆完成。
Hadoop HA高可用叢集搭建(詳細)
(6)、按照上述步驟再建立一個虛拟機名稱為slave02的。 3、虛拟機網絡配置。 由于slave01和slave02虛拟機是克隆的,是以要修改這2台虛拟機的網卡資訊。 slave01修改如下: (1)、輸入指令:vi /etc/udev/rules.d/70-persistent-net.rules
Hadoop HA高可用叢集搭建(詳細)
(2)、輸入指令:vi /etc/sysconfig/network-scripts/ifcfg-eth0
Hadoop HA高可用叢集搭建(詳細)
(3)、修改主機名,輸入指令:vi /etc/sysconfig/network
Hadoop HA高可用叢集搭建(詳細)
(4)重新開機系統,指令:reboot slave02修改同slave01的,注意:IPADDR不一樣,主機名不一樣!!! 最後重新開機所有節點網卡(service network restart),使之生效,保證每台虛拟機能實作和外網連同!!! 還需禁用SELINUX:vi /etc/selinux/config
Hadoop HA高可用叢集搭建(詳細)
> 二、叢集規劃。 1、主機規劃: master00/192.168.169.159: Namenode,Datanode,ResourceManager,Journalnode,Zookeeper slave01/192.168.169.160: slave02/192.168.169.161: Datanode,Journalnode,Zookeeper 2、軟體規劃: JDK1.8 CentOS6.5 Zookeeper3.4.6 Hadoop2.7.3 3、使用者規劃: 每個節點的hadoop使用者組和使用者需要自己建立: master00為hadoop:hadoop slave01為hadoop:hadoop slave02為hadoop:hadoop 4、目錄規劃: 軟體存放目錄:/home/hadoop/app/ 資料日志目錄:/home/hadoop/data/ > 三、安裝前準備。 1、同步目前系統時間和日期與NTP 一緻: (1)、線上安裝ntp:yum install ntp
Hadoop HA高可用叢集搭建(詳細)
(2)、執行同步日期時間:ntpdate pool.ntp.org
Hadoop HA高可用叢集搭建(詳細)
(3)、檢視目前系統時間:date
Hadoop HA高可用叢集搭建(詳細)
注意:以上指令需要在每一個節點執行!!! 2、hosts檔案檢查: 所有節點都需配置以下資訊:vi /etc/hosts
Hadoop HA高可用叢集搭建(詳細)
3、禁用防火牆:chkconfig iptables off(此為永久關閉,執行後需重新開機) 檢查:service iptables status
Hadoop HA高可用叢集搭建(詳細)
4、配置SSH免密碼通信 (1)、配置SSH:以下為master00為例配置(slave01和slave02也要執行以下操作)
Hadoop HA高可用叢集搭建(詳細)
(2)、将所有節點中的id_rsa.pub複制到master00中的authorized_keys檔案中
Hadoop HA高可用叢集搭建(詳細)
(3)、将master00中的authorized_keys檔案發到所有節點上面。 slave01:
Hadoop HA高可用叢集搭建(詳細)
slave02:
Hadoop HA高可用叢集搭建(詳細)
通過SSH互相通路,若能通過無密碼通路,即SSH配置成功!!! 5、腳本的使用:友善Hadoop分布式叢集搭建 (1)、在master00節點上建立/home/hadoop/tools目錄
Hadoop HA高可用叢集搭建(詳細)
(2)、将腳本上傳到此目錄下(可以用Xftp工具上傳)
Hadoop HA高可用叢集搭建(詳細)
deploy.conf腳本:https://blog.51cto.com/14572091/2442729 deploy.sh腳本:https://blog.51cto.com/14572091/2442731 runRemoteCmd.sh腳本:https://blog.51cto.com/14572091/2442728 (3)、為腳本添權重限 [hadoop@master00 tools]$ chmod u+x deploy.sh [hadoop@master00 tools]$ chmod u+x runRemoteCmd.sh (4)、配置PATH
Hadoop HA高可用叢集搭建(詳細)
(5)、在master00節點上,通過腳本,一鍵建立所有節點的軟體安裝目錄 runRemoteCmd.sh "mkdir /home/hadoop/app" all
Hadoop HA高可用叢集搭建(詳細)
注意:如果主機名和我的不一樣,需要修改deploy.conf配置檔案 6、hadoop相關軟體安裝 (1)、JDK安裝,上傳JDK到app目錄下,進行解壓
Hadoop HA高可用叢集搭建(詳細)
(2),修改檔案名稱為jdk
Hadoop HA高可用叢集搭建(詳細)
(3)、添加JDK環境變量:vi /etc/profile
Hadoop HA高可用叢集搭建(詳細)
使配置檔案生效:source /etc/profile (4)、檢視JDK是否安裝成功 : java -version
Hadoop HA高可用叢集搭建(詳細)
出現以上結果說明master00節點的JDK安裝成功。 (5)、将master00節點上的JDK安裝包複制到其他節點上:deploy.sh jdk /home/hadoop/app/ slave 然後在slave01和slave02節點上重複master00節點上的JDK配置,并且檢查是否成功! 7、Zookeeper安裝。 (1)、上傳zookeeper到app目錄并且解壓。
Hadoop HA高可用叢集搭建(詳細)
(2)、重命名為zookeeper
Hadoop HA高可用叢集搭建(詳細)
(3)、修改zookeeper中的配置檔案
Hadoop HA高可用叢集搭建(詳細)
(4)、通過腳本deploy.sh将zookeeper安裝目錄複制到其他節點:deploy.sh zookeeper /home/hadoop/app/ slave (5)、通過腳本runRemoteCmd.sh在所有節點上建立相關目錄: runRemoteCmd.sh "mkdir -p /home/hadoop/data/zookeeper/zkdata" all runRemoteCmd.sh "mkdir -p /home/hadoop/data/zookeeper/zkdatalog" all
Hadoop HA高可用叢集搭建(詳細)
(6)、在3個節點上分别進入zkdata目錄下,建立檔案myid,内容分别填寫為:1, 2, 3,如下圖: master00:
Hadoop HA高可用叢集搭建(詳細)
Hadoop HA高可用叢集搭建(詳細)
Hadoop HA高可用叢集搭建(詳細)
(7)、配置zookeeper環境變量
Hadoop HA高可用叢集搭建(詳細)
使配置生效:source /etc/profile 注意:每個節點都要進行配置!!! (8)、在master00節點上啟動zookeeper
Hadoop HA高可用叢集搭建(詳細)
(9)、使用runRemoteCmd.sh腳本,啟動所有節點上的zookeeper: runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh start" zookeeper
Hadoop HA高可用叢集搭建(詳細)
(10)、檢視所有節點上的QuorumPeerMain程序是否成功: unRemoteCmd.sh "jps" zookeeper
Hadoop HA高可用叢集搭建(詳細)
(11)、檢視所有節點上的zookeeper狀态 runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh status" zookeeper
Hadoop HA高可用叢集搭建(詳細)
如果一個節點為leader,其他節點為follower,說明zookeeper安裝成功。 四、Hadoop叢集搭建。 1、hadoop軟體安裝 (1)上傳并解壓。
Hadoop HA高可用叢集搭建(詳細)
(2)、重命名為hadoop
Hadoop HA高可用叢集搭建(詳細)
2、hadoop配置及使用HDFS (1)修改JAVA_HOME的安裝目錄
Hadoop HA高可用叢集搭建(詳細)
Hadoop HA高可用叢集搭建(詳細)
(2)、配置core-site.xml檔案,以下是我的配置,具體配置請參考hadoop官方文檔 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://cluster1</value> </property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/data/tmp</value> <name>ha.zookeeper.quorum</name> <value>master00:2181,slave01:2181,slave02:2181</value> </configuration> (3)、配置 hdfs-site.xml檔案,以下是我的配置,具體配置請參考hadoop官方文檔 <name>dfs.replication</name> <value>3</value> <name>dfs.permissions</name> <value>false</value> <name>dfs.permissions.enabled</name> <name>dfs.nameservices</name> <value>cluster1</value> <name>dfs.ha.namenodes.cluster1</name> <value>master00,slave01</value> <name>dfs.namenode.rpc-address.cluster1.master00</name> <value>master00:9000</value> <name>dfs.namenode.http-address.cluster1.master00</name> <value>master00:50070</value> <name>dfs.namenode.rpc-address.cluster1.slave01</name> <value>slave01:9000</value> <name>dfs.namenode.http-address.cluster1.slave01</name> <value>slave01:50070</value> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://master00:8485;slave01:8485;slave02:8485/cluster1</value> <name>dfs.client.failover.proxy.provider.cluster1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> <name>dfs.journalnode.edits.dir</name> <value>/home/hadoop/data/journaldata/jn</value> <name>dfs.ha.fencing.methods</name> <value>shell(/bin/true)</value> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/hadoop/.ssh/id_rsa</value> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>10000</value> <name>dfs.namenode.handler.count</name> <value>100</value> (4)、配置slaves檔案:主要配置DataNode節點所在的主機名。
Hadoop HA高可用叢集搭建(詳細)
(5)、向所有節點分發hadoop安裝包 deploy.sh hadoop /home/hadoop/app/ slave (6)配置hadoop環境變量
Hadoop HA高可用叢集搭建(詳細)
(7)、啟動HDFS 1)、啟動所有節點上的zookeeper程序
Hadoop HA高可用叢集搭建(詳細)
2)、啟動所有節點上的Journalnode程序 runRemoteCmd.sh "/home/hadoop/app/hadoop/sbin/hadoop-daemon.sh start journalnode" all
Hadoop HA高可用叢集搭建(詳細)
3)、首先在主節點(如master00)上格式化 bin/hdfs namenode –format
Hadoop HA高可用叢集搭建(詳細)
bin/hdfs zkfc –formatZK
Hadoop HA高可用叢集搭建(詳細)
bin/hdfs namenode 4)、與此同時,需要在備節點(如slave01)上執行同步資料 bin/hdfs namenode –bootstrapStandby
Hadoop HA高可用叢集搭建(詳細)
5)、slave01同步資料完成後,在master00節點上按下Ctrl+C鍵來結束namenode程序,然後關閉所有節點上的journalnode程序 runRemoteCmd.sh "/home/hadoop/app/hadoop/sbin/hadoop-daemon.sh stop journalnode" all 6)、一鍵啟動HDFS 相關所有程序 sbin/start-dfs.sh 7)、驗證HDFS是否安裝成功 在浏覽器輸入網址:http://master00:50070,檢視Web界面
Hadoop HA高可用叢集搭建(詳細)
在浏覽器輸入網址:http://slave01:50070,檢視Web界面
Hadoop HA高可用叢集搭建(詳細)
8)、檢測HDFS是否可用 hadoop fs -mkdir /test hadoop fs -put test.txt /test hadoop fs -ls /test
Hadoop HA高可用叢集搭建(詳細)
3、Hadoop配置使用YARN (1)、配置mapred-site.xml檔案,以下是我的配置,具體配置請參考hadoop官方文檔 <name>mapreduce.framework.name</name> <value>yarn</value> (2)、配置yarn-site.xml 檔案,以下是我的配置,具體配置請參考hadoop官方文檔 <name>yarn.resourcemanager.connect.retry-interval.ms</name> <value>2000</value> <name>yarn.resourcemanager.ha.enabled</name> <name>yarn.resourcemanager.ha.automatic-failover.enabled</name> <name>yarn.resourcemanager.ha.automatic-failover.embedded</name> <name>yarn.resourcemanager.cluster-id</name> <value>yarn-rm-cluster</value> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> <name>yarn.resourcemanager.hostname.rm1</name> <value>master00</value> <name>yarn.resourcemanager.hostname.rm2</name> <value>slave01</value> <name>yarn.resourcemanager.recovery.enabled</name> <name>yarn.resourcemanager.zk.state-store.address</name> <name>yarn.resourcemanager.zk-address</name> <name>yarn.resourcemanager.address.rm1</name> <value>master00:8032</value> <name>yarn.resourcemanager.scheduler.address.rm1</name> <value>master00:8034</value> <name>yarn.resourcemanager.webapp.address.rm1</name> <value>master00:8088</value> <name>yarn.resourcemanager.address.rm2</name> <value>slave01:8032</value> <name>yarn.resourcemanager.scheduler.address.rm2</name> <value>slave01:8034</value> <name>yarn.resourcemanager.webapp.address.rm2</name> <value>slave01:8088</value> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> (3)、啟動YARN 1)、在master00上執行啟動YARN指令 sbin/start-yarn.sh 2)、在slave01上執行啟動YARN指令 sbin/yarn-daemon.sh start resourcemanager 3)、在浏覽器打開Web界面檢視 http://master00:8088
Hadoop HA高可用叢集搭建(詳細)
http://slave01:8088
Hadoop HA高可用叢集搭建(詳細)
4)、檢查ResourceManager狀态 bin/yarn rmadmin -getServiceState rm1 bin/yarn rmadmin -getServiceState rm2 5)、運作WordCount測試 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test/test.txt /test/out/ 檢視作業執行狀态
Hadoop HA高可用叢集搭建(詳細)
如果無異常,說明YARN安裝成功 至此Hadoop分布式叢集搭建成功!!!

繼續閱讀