天天看點

hadoop2.2.0叢集搭建 centos6.4 32位

centos6.4 32位 hadoop2.2.0 搭建 參考傳智播客hadoop1.0的視訊以及《Hadoop 技術内幕深入解析 YARN 架構設計與實作原理》中的配置和 網友文章

環境:VMware 10,jdk:jdk-6u24-linux-i586 centos6.4 32位  hadoop2.2.0

在搭建的過程中遇到很多問題 1.SSH免登陸,參考傳智播客的視訊做SSH還是不能免登陸,最後不得已,隻得将沒有問題的CentOS克隆了過來,這個問題才算解決 2.hadoop2.2.0與hadoop1.x的配置差別很大,有很多地方不能完全按hadoop1.x去配置

一共有2個節點 namenode 192.168.126.101  主機名:hadoop datanode 192.168.126.102    主機名:slave1

  2.hadoop的安裝步驟     使用root使用者登入  2.1設定靜态ip            在centos桌面右上角的圖示上,右鍵修改。            重新開機網卡,執行指令service network restart            驗證:執行指令ifconfig   2.2修改主機名,友善操作 而且主機名比ip名穩定,換ip不換主機名   Linux上vi(vim)編輯器使用教程        執行指令 vi /etc/sysconfig/network 将hostname改為hadoop(192.168.126.101上),                                   slave1(192.168.126.102上)   2.3将主機名和ip綁定  vi /etc/hosts    添加192.168.126.101 ,192.168.126.102      

hadoop2.2.0叢集搭建 centos6.4 32位

    驗證 ping hadoop    ctrl+z可以退出ping       重新開機指令reboot -h now   2.4關閉防火牆 hadoop端口的原因  不安全?         service iptables stop        驗證 service iptables status 

  2.5關閉防火牆自動運作       chkconfig --list |grep iptables   檢視iptables服務是否關閉         

hadoop2.2.0叢集搭建 centos6.4 32位

        有打開的         關閉iptables服務         

hadoop2.2.0叢集搭建 centos6.4 32位

 2.6 SSH(secure shell)的免密碼登入 遠端連接配接 安全       2.6.1 執行指令ssh-keygen -t rsa 産生秘鑰,在~/.ssh檔案中執行該指令,隻需一直回車就可以       

hadoop2.2.0叢集搭建 centos6.4 32位

      2.6.2 執行指令cp id_rsa.pub authorized_keys  即将公鑰複制到對方電腦authorized_keys, 必須在.ssh檔案夾下執行              驗證ssh localhost  2.7安裝jdk       2.7.1執行指令rm -rt /usr/local/* 删除所有内容       2.7.2使用winscp把jdk檔案從windows複制到/usr/local目錄下       2.7.3賦予執行權限 chmod u+x jdk-6u42-linux-i586.bin       2.7.4執行指令 ./jdk-6u42-linux-i586.bin 解壓       2.7.5重命名 mv jdk1.6.0_24 jdk       2.7.6設定環境變量 vi /etc/profile 增加兩行内容              export JAVA_HOME=/usr/local/jdk              export PATH=.:$JAVA_HOME/bin:$PATH              讓該設定立即生效 source /etc/profile             驗證 java -version                                    自動補全指令按tab        2.8           2.8.1執行指令 tar -zxvf hadoop-2.2.0.tar.gz 進行解壓縮            2.8.2執行指令 mv hadoop-2.2.0 hadoop重命名          2.8.3設定環境變量 vi /etc/profile 增加                 export HADOOP_HOME =/usr/local/hadoop                 export PATH=.: $HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH                 這裡的配置要注意hadoop2.2.0與hadoop1.x bin目錄下的檔案有差異              hadoop2.2.0中的bin目錄              

hadoop2.2.0叢集搭建 centos6.4 32位

             hadoop1.x中的bin目錄                            讓該設定立即生效 source /etc/profile          2.8.4 修改hadoop的配置檔案,位于HADOOP_HOME/etc下

1)設定環境變量。在 ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh 中,添加 JAVA 安裝目錄,注意路徑要改成自己jdk所在的路徑,指令如下:
export JAVA_HOME=/usr/local/jdk
修改 conf 目錄下的 mapred-site.xml、core-site.xml、yarn-site.xml 和 hdfs-site.xml 四個檔案,在 <configuration> 與 </configuration> 之間添加的内容見下面的介紹。
2)在 ${HADOOP_HOME}/etc/hadoop/ 下, 将 mapred-site.xml.templat 重命名成 mapred-site.xml(與hadoop1不同的地方),并添加以下内容:
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
【解釋】相比于 Hadoop1.0,使用者無須再配置 mapred.job.tracker,這是因為 JobTracker
相關實作已變成用戶端的一個庫(實際上在 Hadoop 2.0 中,JobTracker 已經不存在,它的
功能由另外一個稱為 MRAppMaster 的元件實作),它可能被随機排程到任何一個 slave 上,也就是它的位置是動态生成的。需要注意的是,在該配置檔案中需用 mapreduce.framework.name 指定采用的運作時架構的名稱,在此指定“yarn”。
3)在 ${HADOOP_HOME}/etc/hadoop/ 中,修改 core-site.xml,為了簡單,我們仍采
用 Hadoop 1.0 中的 HDFS 工作模式(不配置 HDFS Federation), 修改後如下,其中要填自己的hostname,而端口好像不是确定的,待研究:
<property>
  <name>fs.default.name</name>
  <value>hdfs://hostname: 8020</value>
</property>
其中,YARN001 表示節點的 IP 或者 host。
4)在 ${HADOOP_HOME}/etc/hadoop/ 中,修改 yarn-site.xml,修改後如下:
<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce-shuffle</value>
</property>
【解釋】為了能夠運作 MapReduce 程式,需要讓各個 NodeManager 在啟動時加載
shuffle server,shuffle server 實際上是 Jetty/Netty Server,Reduce Task 通過該 server 從各個NodeManager 上遠端複制 Map Task 産生的中間結果。上面增加的兩個配置均用于指定 shuffleserver。
5)修改 ${HADCOP_HOME}/etc/hadoop 中的 hdfs-site.xml 檔案:
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
【解釋】預設情況下,HDFS 資料塊副本數是 3,而在叢集規模小于 3 的叢集中該參數
會導緻出現錯誤,這可通過将 dfs.replication 調整為 1 解決。
注意 如果你是在虛拟機中搭建 Hadoop 環境,且虛拟機經常關閉與重新開機,為了避免每次重
新虛拟機後啟動 Hadoop 時出現各種問題,建議在 core-site.xml 中将 hadoop.tmp.dir 屬性設定為一個非 /tmp 目錄,比如 /data 或者 /home/dongxicheng/data(注意該目錄對目前使用者需具有讀寫權限)。 我沒有改
注意 修改slaves檔案,把node節點的機器名添加進去,如下圖:
hadoop2.2.0叢集搭建 centos6.4 32位

2.8.5啟動 Hadoop。

在 Hadoop 安裝目錄中,按以下三步操作啟動 Hadoop,我們單步啟動每一個服務,以

便于排查錯誤,如果某一個服務沒有啟動成功,可檢視對應的日志檢視啟動失敗原因。

1) 格式化 HDFS,指令如下:

bin/hadoop namenode -format

2)啟動 HDFS。你可以使用以下指令分别啟動 NameNode 和 DataNode:

sbin/hadoop-daemon.sh start namenode

sbin/hadoop-daemon.sh start datanode

如果有多個 DataNode,可使用 hadoop-daemons.sh 啟動所有 DataNode,具體指令如下:

sbin/hadoop-daemons.sh start datanode

你也可以使用以下指令一次性啟動 NameNode 和所有 DataNode:

sbin/ start-dfs.sh

3)啟動 YARN。你可以使用以下指令分别啟動 ResourceManager 和 NodeManager:

sbin/yarn-daemon.sh start resourcemanagersbin/yarn-daemon.sh start nodemanager

如果有多個 NodeManager,可使用 yarn-daemon.sh 啟動所有 NodeManager,具體指令如下:

sbin/yarn-daemon.sh start nodemanager

你也可以使用以下指令一次性啟動 ResourceManager 和所有 NodeManager:

sbin/start-yarn.sh

通過如下 jps 指令檢視是否啟動成功:

[email protected]:/opt/hadoop/hadoop-2.0$ jps

27577 NameNode

30315 ResourceManager

27924 SecondaryNameNode

16803 NodeManager

可以在NameNode機器上面執行:hdfs dfsadmin -report 檢視下DataNode是否連上NameNode: hdfs dfsadmin -report 
hadoop2.2.0叢集搭建 centos6.4 32位
如上圖,就說明搭建成功了。如果jps看兩台機器沒問題,但是這裡面Datanodes是0的話,說明DataNode沒能連上,可以從它們各自的logs目錄下看到日志檔案。一般出現這個情況,都是作業系統環境的問題,防火牆沒關,或者hosts檔案設定不對。

繼續閱讀