HIVE數據傾斜問題
HIVE數據傾斜問題
問題狀態: 未解決sql
- 背景:HDFS對文件進行了壓縮,並且不添加索引。主要用HIVE進行開發。
- 發現的現象:sqoop從Mysql導入數據,根據ID進行平均分割,可是ID分部及其不均勻(我也不知道業務系統怎麼搞得)。因此致使reduce出來的文件大小嚴重不均勻,就是所謂的數據傾斜。
- 致使的問題:寫HQL從該表中讀取數據,發現整個job很慢。後來我查日誌發現,有幾個map讀取數據很是慢,1G的文件大概須要1個多小時才能讀取完畢。
- 問題分析: 因爲hadoop對文件進行了lzo格式壓縮(lzo格式不支持切割)。運維又沒有對文件添加索引,因此這1G的文件必須走一次網絡I/O將文件讀取到map所在節點,而後再總體讀取。因此致使該map很是慢。
- 解決思路:
- 將Mysql中的數據用sqoop分批導入HIVE,高密度的ID拆分爲一個任務,低密度的ID拆分爲一個任務(我先後分了5個任務,效果顯著,可是仍是沒有達到理想效果)。控制每一個文件大小在1G一下。
- 經過設置HIVE參數和拆分複雜的HQL,將大文件分割成均勻的小文件。目前還正在解決......
歡迎關注本站公眾號,獲取更多信息