[英]Hadoop/map-reduce: Total time spent by all maps in occupied slots vs. Total time spent by all map tasks
[英]Hive query taking a lot of time just to launch map-reduce jobs
我們正在使用Hive進行臨時查詢,並且擁有一個Hive表,該表分為兩個字段(date,id)
。
現在,對於每個日期,大約有1400個ID,因此在一天之內會添加許多分區。 實際數據位於s3中。 現在,我們面臨的問題是假設我們從表中進行一個月的select count(*)
,然后僅花費很長的時間(大約1小時52分鍾)即可啟動地圖精簡作業。
當我在Hive verbose模式下運行查詢時,我可以看到它這次的花費實際上決定了要生成多少個映射程序(計算拆分)。 有什么方法可以減少啟動地圖減少工作的滯后時間?
這是此滯后時間內正在記錄的日志消息之一:
13/11/19 07:11:06 INFO mapred.FileInputFormat: Total input paths to process : 1
13/11/19 07:11:06 WARN httpclient.RestS3Service: Response '/Analyze%2F2013%2F10%2F03%2F465' - Unexpected response code 404, expected 200
這可能是因為使用過度分區的表會導致查詢計划階段花費很長時間。 更糟糕的是,查詢計划階段本身可能比查詢執行階段花費更長的時間。
解決此問題的一種方法是調整Metastore 。 但是更好的解決方案是設計一個有效的架構並擺脫不必要的分區。 相信我,您真的不需要太多的小分區。
另外,您也可以嘗試在發出查詢之前將hive.input.format設置為org.apache.hadoop.hive.ql.io.CombineHiveInputFormat 。
HTH
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.