問題:我們用AWS EMR的時候發現在yarn的application manager ui裏有大量killed的hive任務,而且非常之多,如截圖所,我們是通過hive server2方式提交任務的:
解決方案:
首先想到的是不是有什麼進程在不斷的搗鬼,後來grep 下所有hive進程,將該殺的都殺了之後,並沒有什麼特殊的異常進程,但是在grep的瞬間有遇到類似如下的命令:bash /usr/lib/hive/bin/hive -e show PARTITIONS mytable
因爲我們的集羣默認配置的是hive server2,對原生的/usr/lib/hive/bin/hive做的alias,按理說不會直接調用原生的hive cli,猜測可能是由於之前的老代碼沒有修改徹底導致的。但是這與yarn後臺大量的killed的hive任務是否有關係?顯然,只需要做一個測試即可。經過測試,hive cli確實產生了一個killed的hive任務,至此根本原因算是定位到了。那如何規避這一問題?或者說這一問題是怎麼間接產生的呢?排查的思路是先查看環境變量,如果環境變量正常,則只能進一步查看是哪個程序執行了這樣的操作。後來發現在環境變量裏有個alias bhive=hive,但是這個bhive=hive是在我們自定義的alias hive=/usr/bin/beeline 上面,所以並沒有生效,還是執行了一遍hive cli命令,這時只需要將alias bhive=hive放置在alias=/usr/bin/beeline 下面即可