配置IP,修改主機名,關閉防火牆,配置SSH免密碼登陸java
1.準備Linux環境 1.0點擊VMware快捷方式,右鍵打開文件所在位置 -> 雙擊vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 設置網段:192.168.8.0 子網掩碼:255.255.255.0 -> apply -> ok 回到windows --> 打開網絡和共享中心 -> 更改適配器設置 -> 右鍵VMnet1 -> 屬性 -> 雙擊IPv4 -> 設置windows的IP:192.168.8.100 子網掩碼:255.255.255.0 -> 點擊肯定 在虛擬軟件上 --My Computer -> 選中虛擬機 -> 右鍵 -> settings -> network adapter -> host only -> ok 1.1修改主機名 vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=itcast01 ### 1.2修改IP 兩種方式: 第一種:經過Linux圖形界面進行修改(強烈推薦) 進入Linux圖形界面 -> 右鍵點擊右上方的兩個小電腦 -> 點擊Edit connections -> 選中當前網絡System eth0 -> 點擊edit按鈕 -> 選擇IPv4 -> method選擇爲manual -> 點擊add按鈕 -> 添加IP:192.168.8.118 子網掩碼:255.255.255.0 網關:192.168.1.1 -> apply 第二種:修改配置文件方式(屌絲程序猿專用) 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.8.118" ### NETMASK="255.255.255.0" ### GATEWAY="192.168.8.1" ### 1.3修改主機名和IP的映射關係 vim /etc/hosts 192.168.8.118 itcast01 1.4關閉防火牆 #查看防火牆狀態 service iptables status #關閉防火牆 service iptables stop #查看防火牆開機啓動狀態 chkconfig iptables --list #關閉防火牆開機啓動 chkconfig iptables off 1.5重啓Linux reboot
集羣搭建步驟node
1.上傳zk安裝包 2.解壓 3.配置(先在一臺節點上配置) 3.1添加一個zoo.cfg配置文件 $ZOOKEEPER/conf mv zoo_sample.cfg zoo.cfg 3.2修改配置文件(zoo.cfg) dataDir=/itcast/zookeeper-3.4.5/data server.5=itcast05:2888:3888 server.6=itcast06:2888:3888 server.7=itcast07:2888:3888 3.3在(dataDir=/itcast/zookeeper-3.4.5/data)建立一個myid文件,裏面內容是server.N中的N(server.2裏面內容爲2) echo "5" > myid 3.4將配置好的zk拷貝到其餘節點 scp -r /itcast/zookeeper-3.4.5/ itcast06:/itcast/ scp -r /itcast/zookeeper-3.4.5/ itcast07:/itcast/ 3.5注意:在其餘節點上必定要修改myid的內容 在itcast06應該講myid的內容改成6 (echo "6" > myid) 在itcast07應該講myid的內容改成7 (echo "7" > myid) 4.啓動集羣 分別啓動zk ./zkServer.sh start ------------------------------------------------ zookeeper的默認配置文件爲zookeeper/conf/zoo_sample.cfg,須要將其修改成zoo.cfg。其中各配置項的含義,解釋以下: 1.tickTime:CS通訊心跳時間 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。tickTime以毫秒爲單位。 tickTime=2000 2.initLimit:LF初始通訊時限 集羣中的follower服務器(F)與leader服務器(L)之間初始鏈接時能容忍的最多心跳數(tickTime的數量)。 initLimit=5 3.syncLimit:LF同步通訊時限 集羣中的follower服務器與leader服務器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)。 syncLimit=2 4.dataDir:數據文件目錄 Zookeeper保存數據的目錄,默認狀況下,Zookeeper將寫數據的日誌文件也保存在這個目錄裏。 dataDir=/home/michael/opt/zookeeper/data 5.clientPort:客戶端鏈接端口 客戶端鏈接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。 clientPort=2181 6.服務器名稱與地址:集羣信息(服務器編號,服務器地址,LF通訊端口,選舉端口) 這個配置項的書寫格式比較特殊,規則以下: server.N=YYY:A:B server.1=itcast05:2888:3888 server.2=itcast06:2888:3888 server.3=itcast07:2888:3888 ——————————————————————————————————————
hadoop2.0已經發布了穩定版本了,增長了不少特性,好比HDFS HA、YARN等。最新的hadoop-2.4.1又增長了YARN HA 注意:apache提供的hadoop-2.4.1的安裝包是在32位操做系統編譯的,由於hadoop依賴一些C++的本地庫, 因此若是在64位的操做上安裝hadoop-2.4.1就須要從新在64操做系統上從新編譯 (建議第一次安裝用32位的系統,我將編譯好的64位的也上傳到羣共享裏了,若是有興趣的能夠本身編譯一下) 前期準備就不詳細說了,課堂上都介紹了 1.修改Linux主機名 2.修改IP 3.修改主機名和IP的映射關係 ######注意######若是大家公司是租用的服務器或是使用的雲主機(如華爲用主機、阿里雲主機等) /etc/hosts裏面要配置的是內網IP地址和主機名的映射關係 4.關閉防火牆 5.ssh免登錄 6.安裝JDK,配置環境變量等 集羣規劃: 主機名 IP 安裝的軟件 運行的進程 itcast01 192.168.1.201 jdk、hadoop NameNode、DFSZKFailoverController(zkfc) itcast02 192.168.1.202 jdk、hadoop NameNode、DFSZKFailoverController(zkfc) itcast03 192.168.1.203 jdk、hadoop ResourceManager itcast04 192.168.1.204 jdk、hadoop ResourceManager itcast05 192.168.1.205 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain itcast06 192.168.1.206 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain itcast07 192.168.1.207 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain 說明: 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進行協調 安裝步驟: 1.安裝配置zooekeeper集羣(在itcast05上) 1.1解壓 tar -zxvf zookeeper-3.4.5.tar.gz -C /itcast/ 1.2修改配置 cd /itcast/zookeeper-3.4.5/conf/ cp zoo_sample.cfg zoo.cfg vim zoo.cfg 修改:dataDir=/itcast/zookeeper-3.4.5/tmp 在最後添加: server.1=itcast05:2888:3888 server.2=itcast06:2888:3888 server.3=itcast07:2888:3888 保存退出 而後建立一個tmp文件夾 mkdir /itcast/zookeeper-3.4.5/tmp 再建立一個空文件 touch /itcast/zookeeper-3.4.5/tmp/myid 最後向該文件寫入ID echo 1 > /itcast/zookeeper-3.4.5/tmp/myid 1.3將配置好的zookeeper拷貝到其餘節點(首先分別在itcast0六、itcast07根目錄下建立一個itcast目錄:mkdir /itcast) scp -r /itcast/zookeeper-3.4.5/ itcast06:/itcast/ scp -r /itcast/zookeeper-3.4.5/ itcast07:/itcast/ 注意:修改itcast0六、itcast07對應/itcast/zookeeper-3.4.5/tmp/myid內容 itcast06: echo 2 > /itcast/zookeeper-3.4.5/tmp/myid itcast07: echo 3 > /itcast/zookeeper-3.4.5/tmp/myid 2.安裝配置hadoop集羣(在itcast01上操做) 2.1解壓 tar -zxvf hadoop-2.4.1.tar.gz -C /itcast/ 2.2配置HDFS(hadoop2.0全部的配置文件都在$HADOOP_HOME/etc/hadoop目錄下) #將hadoop添加到環境變量中 vim /etc/profile export JAVA_HOME=/usr/java/jdk1.7.0_55 export HADOOP_HOME=/itcast/hadoop-2.4.1 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin #hadoop2.0的配置文件所有在$HADOOP_HOME/etc/hadoop下 cd /itcast/hadoop-2.4.1/etc/hadoop 2.2.1修改hadoo-env.sh export JAVA_HOME=/usr/java/jdk1.7.0_55 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>/itcast/hadoop-2.4.1/tmp</value> </property> <!-- 指定zookeeper地址 --> <property> <name>ha.zookeeper.quorum</name> <value>itcast05:2181,itcast06:2181,itcast07: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>itcast01:9000</value> </property> <!-- nn1的http通訊地址 --> <property> <name>dfs.namenode.http-address.ns1.nn1</name> <value>itcast01:50070</value> </property> <!-- nn2的RPC通訊地址 --> <property> <name>dfs.namenode.rpc-address.ns1.nn2</name> <value>itcast02:9000</value> </property> <!-- nn2的http通訊地址 --> <property> <name>dfs.namenode.http-address.ns1.nn2</name> <value>itcast02:50070</value> </property> <!-- 指定NameNode的元數據在JournalNode上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://itcast05:8485;itcast06:8485;itcast07:8485/ns1</value> </property> <!-- 指定JournalNode在本地磁盤存放數據的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/itcast/hadoop-2.4.1/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>/home/hadoop/.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>itcast03</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>itcast04</value> </property> <!-- 指定zk集羣地址 --> <property> <name>yarn.resourcemanager.zk-address</name> <value>itcast05:2181,itcast06:2181,itcast07:2181</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> 2.2.6修改slaves(slaves是指定子節點的位置,由於要在itcast01上啓動HDFS、在itcast03啓動yarn,因此itcast01上的slaves文件指定的是datanode的位置,itcast03上的slaves文件指定的是nodemanager的位置) itcast05 itcast06 itcast07 2.2.7配置免密碼登錄 #首先要配置itcast01到itcast0二、itcast0三、itcast0四、itcast0五、itcast0六、itcast07的免密碼登錄 #在itcast01上生產一對鑰匙 ssh-keygen -t rsa #將公鑰拷貝到其餘節點,包括本身 ssh-coyp-id itcast01 ssh-coyp-id itcast02 ssh-coyp-id itcast03 ssh-coyp-id itcast04 ssh-coyp-id itcast05 ssh-coyp-id itcast06 ssh-coyp-id itcast07 #配置itcast03到itcast0四、itcast0五、itcast0六、itcast07的免密碼登錄 #在itcast03上生產一對鑰匙 ssh-keygen -t rsa #將公鑰拷貝到其餘節點 ssh-coyp-id itcast04 ssh-coyp-id itcast05 ssh-coyp-id itcast06 ssh-coyp-id itcast07 #注意:兩個namenode之間要配置ssh免密碼登錄,別忘了配置itcast02到itcast01的免登錄 在itcast02上生產一對鑰匙 ssh-keygen -t rsa ssh-coyp-id -i itcast01 2.4將配置好的hadoop拷貝到其餘節點 scp -r /itcast/ itcast02:/ scp -r /itcast/ itcast03:/ scp -r /itcast/hadoop-2.4.1/ root@itcast04:/itcast/ scp -r /itcast/hadoop-2.4.1/ root@itcast05:/itcast/ scp -r /itcast/hadoop-2.4.1/ root@itcast06:/itcast/ scp -r /itcast/hadoop-2.4.1/ root@itcast07:/itcast/ ###注意:嚴格按照下面的步驟 2.5啓動zookeeper集羣(分別在itcast0五、itcast0六、tcast07上啓動zk) cd /itcast/zookeeper-3.4.5/bin/ ./zkServer.sh start #查看狀態:一個leader,兩個follower ./zkServer.sh status 2.6啓動journalnode(分別在在itcast0五、itcast0六、tcast07上執行) cd /itcast/hadoop-2.4.1 sbin/hadoop-daemon.sh start journalnode #運行jps命令檢驗,itcast0五、itcast0六、itcast07上多了JournalNode進程 2.7格式化HDFS #在itcast01上執行命令: hdfs namenode -format #格式化後會在根據core-site.xml中的hadoop.tmp.dir配置生成個文件,這裏我配置的是/itcast/hadoop-2.4.1/tmp,而後將/itcast/hadoop-2.4.1/tmp拷貝到itcast02的/itcast/hadoop-2.4.1/下。 scp -r tmp/ itcast02:/itcast/hadoop-2.4.1/ 2.8格式化ZK(在itcast01上執行便可) hdfs zkfc -formatZK 2.9啓動HDFS(在itcast01上執行) sbin/start-dfs.sh 2.10啓動YARN(#####注意#####:是在itcast03上執行start-yarn.sh,把namenode和resourcemanager分開是由於性能問題,由於他們都要佔用大量資源,因此把他們分開了,他們分開了就要分別在不一樣的機器上啓動) sbin/start-yarn.sh 到此,hadoop-2.4.1配置完畢,能夠統計瀏覽器訪問: http://192.168.1.201:50070 NameNode 'itcast01:9000' (active) http://192.168.1.202:50070 NameNode 'itcast02:9000' (standby) 驗證HDFS HA 首先向hdfs上傳一個文件 hadoop fs -put /etc/profile /profile hadoop fs -ls / 而後再kill掉active的NameNode kill -9 <pid of NN> 經過瀏覽器訪問:http://192.168.1.202:50070 NameNode 'itcast02:9000' (active) 這個時候itcast02上的NameNode變成了active 在執行命令: hadoop fs -ls / -rw-r--r-- 3 root supergroup 1926 2014-02-06 15:36 /profile 剛纔上傳的文件依然存在!!! 手動啓動那個掛掉的NameNode sbin/hadoop-daemon.sh start namenode 經過瀏覽器訪問:http://192.168.1.201:50070 NameNode 'itcast01:9000' (standby) 驗證YARN: 運行一下hadoop提供的demo中的WordCount程序: hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /profile /out OK,大功告成!!!
hadoop2.0已經發布了穩定版本了,增長了不少特性,好比HDFS HA、YARN等。 注意:apache提供的hadoop-2.2.0的安裝包是在32位操做系統編譯的,由於hadoop依賴一些C++的本地庫, 因此若是在64位的操做上安裝hadoop-2.2.0就須要從新在64操做系統上從新編譯 (建議第一次安裝用32位的系統,我將編譯好的64位的也上傳到羣共享裏了,若是有興趣的能夠本身編譯一下) 前期準備就不詳細說了,課堂上都介紹了 1.修改Linux主機名 2.修改IP 3.修改主機名和IP的映射關係 ######注意######若是大家公司是租用的服務器或是使用的雲主機(如華爲用主機、阿里雲主機等) /etc/hosts裏面要配置的是內網IP地址和主機名的映射關係 4.關閉防火牆 5.ssh免登錄 6.安裝JDK,配置環境變量等 集羣規劃: 主機名 IP 安裝的軟件 運行的進程 itcast01 192.168.1.201 jdk、hadoop NameNode、DFSZKFailoverController itcast02 192.168.1.202 jdk、hadoop NameNode、DFSZKFailoverController itcast03 192.168.1.203 jdk、hadoop ResourceManager itcast04 192.168.1.204 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain itcast05 192.168.1.205 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain itcast06 192.168.1.206 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain 說明: 在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狀態 安裝步驟: 1.安裝配置zooekeeper集羣 1.1解壓 tar -zxvf zookeeper-3.4.5.tar.gz -C /itcast/ 1.2修改配置 cd /itcast/zookeeper-3.4.5/conf/ cp zoo_sample.cfg zoo.cfg vim zoo.cfg 修改:dataDir=/itcast/zookeeper-3.4.5/tmp 在最後添加: server.1=itcast04:2888:3888 server.2=itcast05:2888:3888 server.3=itcast06:2888:3888 保存退出 而後建立一個tmp文件夾 mkdir /itcast/zookeeper-3.4.5/tmp 再建立一個空文件 touch /itcast/zookeeper-3.4.5/tmp/myid 最後向該文件寫入ID echo 1 > /itcast/zookeeper-3.4.5/tmp/myid 1.3將配置好的zookeeper拷貝到其餘節點(首先分別在itcast0五、itcast06根目錄下建立一個itcast目錄:mkdir /itcast) scp -r /itcast/zookeeper-3.4.5/ itcast05:/itcast/ scp -r /itcast/zookeeper-3.4.5/ itcast06:/itcast/ 注意:修改itcast0五、itcast06對應/itcast/zookeeper-3.4.5/tmp/myid內容 itcast05: echo 2 > /itcast/zookeeper-3.4.5/tmp/myid itcast06: echo 3 > /itcast/zookeeper-3.4.5/tmp/myid 2.安裝配置hadoop集羣 2.1解壓 tar -zxvf hadoop-2.2.0.tar.gz -C /itcast/ 2.2配置HDFS(hadoop2.0全部的配置文件都在$HADOOP_HOME/etc/hadoop目錄下) #將hadoop添加到環境變量中 vim /etc/profile export JAVA_HOME=/usr/java/jdk1.7.0_55 export HADOOP_HOME=/itcast/hadoop-2.2.0 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin #hadoop2.0的配置文件所有在$HADOOP_HOME/etc/hadoop下 cd /itcast/hadoop-2.2.0/etc/hadoop 2.2.1修改hadoo-env.sh export JAVA_HOME=/usr/java/jdk1.7.0_55 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>/itcast/hadoop-2.2.0/tmp</value> </property> <!-- 指定zookeeper地址 --> <property> <name>ha.zookeeper.quorum</name> <value>itcast04:2181,itcast05:2181,itcast06: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>itcast01:9000</value> </property> <!-- nn1的http通訊地址 --> <property> <name>dfs.namenode.http-address.ns1.nn1</name> <value>itcast01:50070</value> </property> <!-- nn2的RPC通訊地址 --> <property> <name>dfs.namenode.rpc-address.ns1.nn2</name> <value>itcast02:9000</value> </property> <!-- nn2的http通訊地址 --> <property> <name>dfs.namenode.http-address.ns1.nn2</name> <value>itcast02:50070</value> </property> <!-- 指定NameNode的元數據在JournalNode上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://itcast04:8485;itcast05:8485;itcast06:8485/ns1</value> </property> <!-- 指定JournalNode在本地磁盤存放數據的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/itcast/hadoop-2.2.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> <!-- 指定resourcemanager地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>itcast03</value> </property> <!-- 指定nodemanager啓動時加載server的方式爲shuffle server --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> 2.2.6修改slaves(slaves是指定子節點的位置,由於要在itcast01上啓動HDFS、在itcast03啓動yarn,因此itcast01上的slaves文件指定的是datanode的位置,itcast03上的slaves文件指定的是nodemanager的位置) itcast04 itcast05 itcast06 2.2.7配置免密碼登錄 #首先要配置itcast01到itcast0二、itcast0三、itcast0四、itcast0五、itcast06的免密碼登錄 #在itcast01上生產一對鑰匙 ssh-keygen -t rsa #將公鑰拷貝到其餘節點,包括本身 ssh-coyp-id itcast01 ssh-coyp-id itcast02 ssh-coyp-id itcast03 ssh-coyp-id itcast04 ssh-coyp-id itcast05 ssh-coyp-id itcast06 #配置itcast03到itcast0四、itcast0五、itcast06的免密碼登錄 #在itcast03上生產一對鑰匙 ssh-keygen -t rsa #將公鑰拷貝到其餘節點 ssh-coyp-id itcast04 ssh-coyp-id itcast05 ssh-coyp-id itcast06 #注意:兩個namenode之間要配置ssh免密碼登錄,別忘了配置itcast02到itcast01的免登錄 在itcast02上生產一對鑰匙 ssh-keygen -t rsa ssh-coyp-id -i itcast01 2.4將配置好的hadoop拷貝到其餘節點 scp -r /itcast/ itcast02:/ scp -r /itcast/ itcast03:/ scp -r /itcast/hadoop-2.2.0/ root@itcast04:/itcast/ scp -r /itcast/hadoop-2.2.0/ root@itcast05:/itcast/ scp -r /itcast/hadoop-2.2.0/ root@itcast06:/itcast/ ###注意:嚴格按照下面的步驟 2.5啓動zookeeper集羣(分別在itcast0四、itcast0五、itcast06上啓動zk) cd /itcast/zookeeper-3.4.5/bin/ ./zkServer.sh start #查看狀態:一個leader,兩個follower ./zkServer.sh status 2.6啓動journalnode(在itcast01上啓動全部journalnode,注意:是調用的hadoop-daemons.sh這個腳本,注意是複數s的那個腳本) cd /itcast/hadoop-2.2.0 sbin/hadoop-daemons.sh start journalnode #運行jps命令檢驗,itcast0四、itcast0五、itcast06上多了JournalNode進程 2.7格式化HDFS #在itcast01上執行命令: hdfs namenode -format #格式化後會在根據core-site.xml中的hadoop.tmp.dir配置生成個文件,這裏我配置的是/itcast/hadoop-2.2.0/tmp,而後將/itcast/hadoop-2.2.0/tmp拷貝到itcast02的/itcast/hadoop-2.2.0/下。 scp -r tmp/ itcast02:/itcast/hadoop-2.2.0/ 2.8格式化ZK(在itcast01上執行便可) hdfs zkfc -formatZK 2.9啓動HDFS(在itcast01上執行) sbin/start-dfs.sh 2.10啓動YARN(#####注意#####:是在itcast03上執行start-yarn.sh,把namenode和resourcemanager分開是由於性能問題,由於他們都要佔用大量資源,因此把他們分開了,他們分開了就要分別在不一樣的機器上啓動) sbin/start-yarn.sh 到此,hadoop2.2.0配置完畢,能夠統計瀏覽器訪問: http://192.168.1.201:50070 NameNode 'itcast01:9000' (active) http://192.168.1.202:50070 NameNode 'itcast02:9000' (standby) 驗證HDFS HA 首先向hdfs上傳一個文件 hadoop fs -put /etc/profile /profile hadoop fs -ls / 而後再kill掉active的NameNode kill -9 <pid of NN> 經過瀏覽器訪問:http://192.168.1.202:50070 NameNode 'itcast02:9000' (active) 這個時候itcast02上的NameNode變成了active 在執行命令: hadoop fs -ls / -rw-r--r-- 3 root supergroup 1926 2014-02-06 15:36 /profile 剛纔上傳的文件依然存在!!! 手動啓動那個掛掉的NameNode sbin/hadoop-daemon.sh start namenode 經過瀏覽器訪問:http://192.168.1.201:50070 NameNode 'itcast01:9000' (standby) 驗證YARN: 運行一下hadoop提供的demo中的WordCount程序: hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /profile /out OK,大功告成!!!
集羣搭建問題描述shell
1 hadoop 版本下載 http://archive.cloudera.com/cdh4/cdh/4/apache