現(xiàn)有版本:hadoop-1.1.2
升級版本:hadoop-2.6.0
系統(tǒng)版本:CentOS release 6.7 (Final)
JDK版本:java version "1.7.0_21" 64-Bit
Maven版本:apache-maven-3.3.3
Ant版本:apache-ant-1.9.6
其他版本:findbugs-3.0.1 ? ?protobuf-2.5.0
使用上面的軟件是為了編譯hadoop 2.6.0 (因?yàn)橐恍┍镜匕俜桨姹臼菬o法檢測到的,需要重新編譯)
具體編譯流程與軟件下載請自行尋找
Maven命令 ?mvn package -DskipTests -Pdist,native –Dtar
編譯后(hadoop-2.6)
先在1.x hadoop環(huán)境進(jìn)行備份操作
shell>hadoop dfsadmin -safemode enter
進(jìn)入安全模式
shell>hadoop?dfsadmin -saveNamespace
進(jìn)行Namespace備份
shell>hadoop dfsadmin?-safemode leave
離開安全模式
停止整個(gè)1.x集群
1.x安裝目錄下的conf文件夾下
hdfs-site.xml這個(gè)文件里面的
這個(gè)參數(shù)用于確定將HDFS文件系統(tǒng)的元信息保存在什么目錄下
要把這兩個(gè)元數(shù)據(jù)都進(jìn)行備份第美,這個(gè)備份非常重要,用于以后回滾或者提交
shell> cp -fr /download/hadoop/name1 /download/hadoop/name1.bak
shell> cp -fr /download/hadoop/name2 /download/hadoop/name2.bak
在這里把兩個(gè)元數(shù)據(jù)都已經(jīng)備份,大家有什么就備份什么喊递,按照你們的配置來進(jìn)行備份
自此hadoop1.x環(huán)境的備份與集群停止工作都已經(jīng)結(jié)束河爹,如果順利這也是它最后一次服役
這時(shí)在/etc/profile的環(huán)境變量嬉愧,該下線的都下線,但是暫時(shí)不要用hadoop2的命令來替換1的環(huán)境變量配置豁辉,不然容易造成一些未知錯(cuò)誤(別忘了讓環(huán)境變量生效:))
現(xiàn)在把1.x安裝目錄下conf文件夾里的配置文件全部拷貝到hadoop2.6配置目錄下$HADOOP2_HOME/etc/hadoop/
升級啟動(dòng)時(shí)必須使用1.x的配置文件,一點(diǎn)都不要改動(dòng)舀患,hadoop2.x的HA徽级、HA+Federation這些配置文件你可以先配置好,但是名字不能與1.x的配置文件名字相同聊浅,最好做成core-site.xml.2這種形式餐抢,以便區(qū)分
在hadoop2.6的sbin文件夾下執(zhí)行如下命令
shell> ./hadoop-daemon.sh start namenode -upgrade
這時(shí)要看日志輸出是否有錯(cuò)誤,如果有錯(cuò)誤就細(xì)致看錯(cuò)誤低匙,源碼的準(zhǔn)備也是有必要的弹澎,因?yàn)樯壍奈恼潞苌伲蠹覍懙囊捕际浅晒α鞒膛溃侵虚g失敗的過程與錯(cuò)誤的分享較少苦蒿,所以這需要你通過豐富的經(jīng)驗(yàn)通過源碼來解決錯(cuò)誤問題
我在升級時(shí)遇到了一個(gè)錯(cuò)誤
是因?yàn)槲覀児緃adoop的權(quán)限劃分有些問題,錯(cuò)誤我沒記錄渗稍,但是我通過源碼找到了問題所在佩迟,在core-site.xml(1.x配置文件,2.6時(shí)也需要添加這個(gè)配置)添加了如下配置
這個(gè)是否需要竿屹,需要看執(zhí)行上面的升級命令有無報(bào)錯(cuò)(而且要看具體錯(cuò)誤)
如果啟動(dòng)無錯(cuò)誤报强,命令執(zhí)行結(jié)束,那么你的namenode已經(jīng)升級完成了
這時(shí)要升級datanode拱燃,升級datanode較為簡單秉溉,啟動(dòng)它就好了……(2.6環(huán)境sbin文件夾下)
shell> ./hadoop-daemons.sh start datanode
此時(shí)是否啟動(dòng)了全部datanode,取決于你的slaves配置也就是說從1.x拷貝到2.6 conf下的slaves這個(gè)文件碗誉,如果是跟1.x一致的主機(jī)群(注意沒啟動(dòng)的節(jié)點(diǎn)不會進(jìn)行升級)召嘶,那么上面的命令已經(jīng)啟動(dòng)了全部datanode節(jié)點(diǎn),datanode會隨著namenode去升級
此時(shí)如果全部啟動(dòng)后(自行確認(rèn)namenode與datanode是否全部啟動(dòng))
停止集群 (下面該替換2.6的配置文件操作了)
2.6環(huán)境sbin文件夾下
shell> ./stop-dfs.sh
將所有配置文件全部升級為2.6是否選擇HA哮缺、HA+Federation請自行決定弄跌,相關(guān)配置請參照官方文檔與網(wǎng)絡(luò)文章
如果使用HA模式j(luò)ournalnode需要同步元數(shù)據(jù)(這里使用命令同步,不建議修改文件方式)
在2.6(namenode active節(jié)點(diǎn))安裝目錄下的bin執(zhí)行命令
shell> ./hdfs namenode –initializeSharedEdits
啟動(dòng)各個(gè)journalnode
這里我是在各個(gè)datanode下單獨(dú)啟動(dòng)的尝苇,啟動(dòng)命令(2.6安裝目錄sbin目錄下)
shell> ./hadoop-daemon.sh start journalnode
同步namenode元數(shù)據(jù)信息到HA節(jié)點(diǎn) (2.6安裝目錄bin目錄下)
shell> ./hdfs namenode -bootstrapStandby
啟動(dòng)namenode(namenode active節(jié)點(diǎn))
shell> ./hadoop-daemon.sh start namenode
啟動(dòng)datanode(namenode active節(jié)點(diǎn))
shell> ./hadoop-daemons.shstart datanode
全部啟動(dòng)后現(xiàn)在是沒有active節(jié)點(diǎn)的
需要手動(dòng)激活铛只,命令如下(namenode active節(jié)點(diǎn)2.6安裝目錄bin目錄下):
shell> ./hdfs haadmin -transitionToActive nn1
此時(shí)集群已經(jīng)全部啟動(dòng)埠胖,第一次啟動(dòng)時(shí)datanode需要檢查數(shù)據(jù),速度較慢淳玩,需要一定耐心
升級完畢后直撤,namenode和datanode的${dfs.data.dir}/目錄下會多出一個(gè)文件夾previous/,這是升級之前數(shù)據(jù)的備份蜕着。
如果確定升級成功谊惭,可以使用(namenode active節(jié)點(diǎn)2.6安裝目錄bin目錄下):hadoop dfsadmin -finalizeUpgrade(要在active的namenode上執(zhí)行 可以在集群啟動(dòng)時(shí)使用該命令) 最終提交升級(最終升級后無法回滾請確認(rèn)后再執(zhí)行)
確認(rèn)好升級后,可以把環(huán)境變量給修改為升級后的環(huán)境侮东,方便使用各種命令
記錄一點(diǎn)心得圈盔,歡迎大家交流mail:zhaoshuo5550@vip.qq.com