原文鏈接:http://blog.csdn.net/dai451954706/article/details/50464036
-----------------------------------------------------------------------------------------------------
今天,一大清早同事就讓我幫他解決Hive的問題:他在Hive中執行簡單的查詢(直接從hive查詢數據,沒有MR過程)能很快的得到結果,但是執行復雜的查詢時,就一直卡著不動.我連到服務器上試了一下,跟他遇到的問題一樣,問題處在哪里呢?既然簡單的查詢能出結果,復雜查詢需要MR計算,但是卻卡住了,那估計是Hadoop的問題.
于是,我在Hadoop跑一個簡單的WountCound程序試試,結果跟Hive中遇到的情況一樣:
????
??? 然后就一直卡在這個界面,很久都沒有結果.
最先想到的是:配置可能有點問題.于是我把配置檢查了一遍,發現配置沒錯.于是,我又去檢查Yarn和HDFS的啟動日志,也沒有發現ERROR.接著,我查看每個任務運行時的Container日志,也沒有Error.真是見鬼了!
在我查看各種日志和配置的時候,我同事在Docker中,將集群上的配置Copy過去,試了一遍,能正常運行!這...
然后,我各種百度,google,在百度出來的各種方法我都試了一遍,仍然沒有解決問題!于是,我同事說,是不是安裝的時候有些包損壞了.于是,他又重新裝了一邊Hadoop,還是使用原來的配置,可問題依舊!
此時,都已經搞了一直整天了,還有一個小時就要下班了!于是,我在Google中看了幾篇文章,基本上上面所說的方法我都試了.終于,在Stackover上有一個哥們也遇到了同樣的問題,有人幫他解決了,里面鏈接到了一個網站:http://hortonworks.com/blog/how-to-plan-and-configure-yarn-in-hdp-2-0/? ,我打開一看,說的是要設置yarn里面關于內存和虛擬內存的配置項.我以前沒配置這幾項,也能正常運行,感覺是這個問題的可能性不大啊!但是,既然這么多方法都不管用,這能試一試了.
于是,我在yarn-site.xml中加了:
??????
? ?再次運行,居然成功了!
然后運行Hive,也能正確的運行了!
? ? 出現此故障的原因應該是,在每個Docker分配的內存和CPU資源太少,不能滿足Hadoop和Hive運行所需的默認資源需求。
以上參數的配置詳解見博客:http://blog.csdn.net/zengmingen/article/details/52609893