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
驗證 ping hadoop ctrl+z可以退出ping 重新開機指令reboot -h now 2.4關閉防火牆 hadoop端口的原因 不安全? service iptables stop 驗證 service iptables status
2.5關閉防火牆自動運作 chkconfig --list |grep iptables 檢視iptables服務是否關閉
有打開的 關閉iptables服務
2.6 SSH(secure shell)的免密碼登入 遠端連接配接 安全 2.6.1 執行指令ssh-keygen -t rsa 産生秘鑰,在~/.ssh檔案中執行該指令,隻需一直回車就可以
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目錄
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節點的機器名添加進去,如下圖: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 如上圖,就說明搭建成功了。如果jps看兩台機器沒問題,但是這裡面Datanodes是0的話,說明DataNode沒能連上,可以從它們各自的logs目錄下看到日志檔案。一般出現這個情況,都是作業系統環境的問題,防火牆沒關,或者hosts檔案設定不對。