本文匯總了Hive使用時的常見問題。
作業長時間處於等待狀態,如何處理?
您可以通過以下步驟定位問題:
- 在EMR控制台的訪問連結與連接埠頁面,單擊YARN UI所在行的連結。
- 單擊Application ID。
- 單擊Tracking URL的連結。可以看到有多個作業處於等待狀態。
- 在左側導航中,單擊Scheduler。即可進入隊列,您可以看一下當前隊列的繁忙程度,來分析是因為隊列中沒有空閑資源,還是當前任務確實比較耗時。如果是隊列資源緊張,您可以考慮切換到空閑隊列,否則需要最佳化代碼。在 YARN ResourceManager 頁面左側導覽列中,單擊 Scheduler,在 Application Queues 地區可查看各隊列的 Capacity 與 Used 佔比,據此判斷隊列資源是否緊張。
Map端是否讀取了小檔案?
您可以通過以下步驟定位問題:
- 在EMR控制台的訪問連結與連接埠頁面,單擊YARN UI所在行的連結。
- 單擊Application ID。進入Map Task的詳情頁面,可以看到每個Map Task讀取的資料量,例如,讀取的資料量是2個位元組記錄。如果大部分的Map Task讀取的檔案量都比較小,就需要考慮小檔案合并。
您也可以通過查看Map Task的Log,擷取更多的資訊。
Reduce Task任務耗時,是否出現了資料扭曲?
您可以通過以下步驟定位問題:
- 在EMR控制台的訪問連結與連接埠頁面,單擊YARN UI所在行的連結。
- 單擊Application ID。
- 在Reduce Task列表頁面,按照完成時間逆序排序,找出Top耗時的Reduce Task任務。重點關注 State 列確認任務執行狀態,以及 Successful Attempt 中的 Shuffle Finish Time、Merge Finish Time 和 Finish Time 分析各階段耗時,判斷是否存在資料扭曲。
- 單擊Task的Name連結。
- 在Task詳情頁面,單擊左側的Counters。
查看當前Reduce Task中Reduce Input bytes和Reduce shuffle bytes的資訊,如果比其他的Task處理的資料量大很多,則說明出現了傾斜問題。在Task的Counters頁面的Map-Reduce Framework地區中查看Reduce input records和Reduce shuffle bytes的值,與其他Task對比判斷是否存在資料扭曲。