1. 程式人生 > >hadoop使用Yarn進行資源佇列劃分管理

hadoop使用Yarn進行資源佇列劃分管理

      最近在做一個使用sqoop抽取資料最終存進hawq裡面的一個專案,然後在做專案的過程,因為經驗等一系列的問題,碰到了不少坑,現在將我最近碰到的一個坑寫一下,現象大致是這樣的,資料在通過sqoop跑量時,會出現跟hawq哄搶資源的情況,也就是我通過yarn application -list 命令,我能明顯看到hawq的一個程序一直在佔用著資源,沒法釋放出來給sqoop使用

就是圖上的這種,我的MapReduce應用一直處於等待狀態,然後hawq又一直不釋放資源,只有我手動的去殺死 hawq 應用,才能讓MapReduce跑下去,說明一下,之前出的問題忘記截圖了,導致現在這個圖其實有些地方是不對的,比如那個資源佇列名。

    後面通過看hawq文件和百度相關的資料,最終發現使用hawq是需要配置資源管理型別的,還是太年起啊,HAWQ支援兩種型別的資源管理模式,Standalone模式和Yarn模式。當Apache HAWQ叢集在Standalone模式下執行時,會獨佔整個叢集的資源而不去考慮其他共存的應用程式的資源使用需求。當Apache HAWQ叢集在Yarn模式下執行時,Apache HAWQ會作為Yarn的一個應用程式動態地從Yarn申請資源,從而達到Apache HAWQ與其他Yarn應用程式彈性共存的效果,而hawq它預設是使用standalone模式的,在該模式時一旦有多個任務,它們其實就想相當於處於一個FIFO模式,誰先來我處理誰,然後等處理完了才輪到下一個資源,這種模式如果你的叢集本身是為了hawq服務的,那麼就沒啥影響,如果不是的,那麼就得切換下管理模式了。

然後再在hawq裡面配置一下你的資源佇列

給hawq配置一個資源佇列就表明了,它和MapReduce使用的不是同一個資源佇列,所以我在資源佇列的配置上,我其實是有配置三個資源佇列的,其中一個hawqque專門給hawq使用的,其他兩個給別的元件使用。

yarn元件

MapReduce2元件

就這樣成功解決資源搶佔的問題。