您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Hadoop開發(fā)過程中的坑有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Hadoop開發(fā)過程中的坑有哪些”吧!
1、防火墻原因:檢查各個節(jié)點的防火墻是否關(guān)閉成功。(重點是檢查NameNode)
2、檢查IP地址與主機(jī)名的映射關(guān)系是否綁定成功
3、檢查NameNode是否處于安全模式
4、檢查NameNode是否已經(jīng)進(jìn)行了格式化處理
5、檢查配置文件的配置是否成功
6、檢查NameNode節(jié)點和DataNode節(jié)點中存放的namespaceID的版本號是否相同
好的,當(dāng)我們查看完上述6點之后如果還沒有解決問題,那我們再去查看相關(guān)的日志文件即可。
OK,到現(xiàn)在為止我在給大家介紹一下在開發(fā)過程中經(jīng)常遇到的幾個異常問題:
1、啟動hadoop時沒有NameNode的可能原因
這個問題對于Hadoop的初學(xué)者是經(jīng)常遇到的,之所以出現(xiàn)這個問題,可能有3點原因:
1)、NameNode沒有進(jìn)行格式化處理(6個檢查以包括)
先刪除hadoop.tmp.dir所對應(yīng)的目錄(即logs和tmp),然后對NameNode進(jìn)行格式化處理
2)、檢查IP地址與主機(jī)名的映射關(guān)系是否綁定成功(6個檢查以包括)
3)、檢查配置文件的配置是否成功(6個檢查以包括),重點是hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml和slaves。
2、Name node is in safe mode.
例如:
原因:NameNode在剛開始啟動的時候會進(jìn)入到安全模式,倒計時30s后退出,在安全模式下會不能進(jìn)行增、刪、改操作,只能進(jìn)行查看操作。但是如果數(shù)據(jù)節(jié)點DataNode丟失的block塊達(dá)到一定比例的話則系統(tǒng)一直處于安全模式,即只讀狀態(tài)。
解決方法:
1)、在HDFS的配置文件hdfs-site.xml中,修改dfs.safemode.threshold.pct所對應(yīng)的數(shù)值,將其數(shù)值改成一個較小的數(shù)值,默認(rèn)的數(shù)值是0.999f。
2)、執(zhí)行命令 hadoop dfsadmin -safemode leave 強(qiáng)制NameNode離開安全模式。(6個檢查以包括)
3)、could only be replicatied to 0 nodes, instead of 1.
例如:
這個異??赡艹霈F(xiàn)的現(xiàn)象:執(zhí)行命令jps顯示的進(jìn)程都很正常,但是用web界面查看的話,顯示的live nodes為0,這說明數(shù)據(jù)節(jié)點DataNode沒有正常啟動,但是數(shù)據(jù)節(jié)點DataNode又正常啟動了。
這個問題可能出現(xiàn)的原因:
1)、防火墻原因,檢查所有節(jié)點的防火墻是否關(guān)閉成功。(6個檢查以包括)
2)、磁盤空間原因:執(zhí)行命令df -al 查看磁盤空間的使用情況,如果是磁盤空間不足的話,則調(diào)整磁盤空間。
如果是磁盤空間不足的話,具體進(jìn)行下面的步驟在進(jìn)行查看:
3、如果上述方法都不行的話,可用以下方法進(jìn)行處理(但是該方法會造成數(shù)據(jù)的丟失,所以慎用!)
先刪除hadoop.tmp.dir所對應(yīng)的目錄,然后對NameNode重新進(jìn)行格式化處理。(6個檢查以包括)
4、啟動時報錯 java.net.UnknownHostException
原因:集群中的主機(jī)名沒有映射到相應(yīng)的IP地址(6個檢查以包括)
解決方法:在/etc/hosts文件中添加所有節(jié)點的主機(jī)名與IP地址的映射關(guān)系。
5、TaskTracker進(jìn)程啟動了,但是DataNode進(jìn)程沒有啟動
解決方法:先刪除hadoop.tmp.dir所對應(yīng)的文件夾,然后對NameNode重新進(jìn)行格式化處理。
6、java.lang.OutOfMemoryError
原因分析:出現(xiàn)這個異常,明顯是JVM內(nèi)存不足的原因,要修改所有數(shù)據(jù)節(jié)點DataNode所對應(yīng)的JVM內(nèi)存大小。
方法:在MapReduce的配置文件mapred-site.xml中,修改mapred.child.java.opts所對應(yīng)的數(shù)值。
注意:一般JVM的***內(nèi)存使用應(yīng)該為總內(nèi)存大小的一半,例如我們的服務(wù)器的內(nèi)存大小為4G,則設(shè)置為2048m,但是這個值可能依舊不是***的數(shù)值。其中
-Xms 表示內(nèi)存初始化的大小,-Xmx表示能夠使用的***內(nèi)存。
在linux 下查看服務(wù)器內(nèi)存的硬件信息:
7、Incompatible namespaceIDs in
原因分析:每次對NameNode格式化之后都會產(chǎn)生一個新的namespaceID,如果多次對NameNode格式化的話可能導(dǎo)致NameNode節(jié)點和DataNode節(jié)點中存放的版本號不一致。
解決方法:
1)、在NameNode節(jié)點和DataNode節(jié)點中檢查namespaceID的版本號是否相同,如果不相同的話,修改為相同的值后然后重新啟動該節(jié)點。(6個檢查以包括)
2)、先刪除hadoop.tmp.dir所對應(yīng)的目錄,然后對NameNode重新進(jìn)行格式化處理。(6個檢查以包括)
到此,相信大家對“Hadoop開發(fā)過程中的坑有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。