全部產品
Search
文件中心

E-MapReduce:常見問題

更新時間:Jul 01, 2024

本文匯總了Hive使用時的常見問題。

說明

作業長時間處於等待狀態,如何處理?

您可以通過以下步驟定位問題:
  1. 在EMR控制台的訪問連結與連接埠頁面,單擊YARN UI所在行的連結。
  2. 單擊Application ID。
  3. 單擊Tracking URL的連結。
    可以看到有多個作業處於等待狀態。Tracking URL
  4. 在左側導航中,單擊Scheduler
    即可進入隊列,您可以看一下當前隊列的繁忙程度,來分析是因為隊列中沒有空閑資源,還是當前任務確實比較耗時。如果是隊列資源緊張,您可以考慮切換到空閑隊列,否則需要最佳化代碼。Scheduler

Map端是否讀取了小檔案?

您可以通過以下步驟定位問題:
  1. 在EMR控制台的訪問連結與連接埠頁面,單擊YARN UI所在行的連結。
  2. 單擊Application ID。
    進入Map Task的詳情頁面,可以看到每個Map Task讀取的資料量,如下圖所示,讀取的資料量是2個位元組記錄。如果大部分的Map Task讀取的檔案量都比較小,就需要考慮小檔案合并。Map

    您也可以通過查看Map Task的Log,擷取更多的資訊。

Reduce Task任務耗時,是否出現了資料扭曲?

您可以通過以下步驟定位問題:
  1. 在EMR控制台的訪問連結與連接埠頁面,單擊YARN UI所在行的連結。
  2. 單擊Application ID。
  3. 在Reduce Task列表頁面,按照完成時間逆序排序,找出Top耗時的Reduce Task任務。Reduce Task
  4. 單擊Task的Name連結。
  5. 在Task詳情頁面,單擊左側的Counters。Counters
    查看當前Reduce Task中Reduce Input bytes和Reduce shuffle bytes的資訊,如果比其他的Task處理的資料量大很多,則說明出現了傾斜問題。Reduce Input bytes

如何預估Hive作業並發量的上限值?

Hive作業並發量與HiveServer2的記憶體以及master執行個體個數有關係。您可以參考以下公式預估Hive作業並發量的上限值。
max_num = master_num * max(5, hive_server2_heapsize/512)
上述公式中涉及到的參數資訊如下:
  • master_num:叢集master執行個體的個數。
  • hive_server2_heapsize:hive-env.sh中的配置項,預設值是512 MB。

例如:叢集有3個master執行個體,hive_server2_heapsize配置為4 GB,那麼根據上述公式可以預估出Hive作業的並發量上限值為24,即可以同時運行24個指令碼。

為什麼Hive建立的外部表格沒有資料?

  • 問題描述:建立完外部表格後查詢沒有資料返回。
    外部表格建立語句樣本如下。
    CREATE EXTERNAL TABLE storage_log(content STRING) PARTITIONED BY (ds STRING)
        ROW FORMAT DELIMITED
        FIELDS TERMINATED BY '\t'
        STORED AS TEXTFILE
        LOCATION 'oss://log-12453****/your-logs/airtake/pro/storage';
    查詢沒有資料返回。
    select * from storage_log;
  • 問題分析:Hive不會自動關聯指定Partitions目錄。
  • 解決方案:
    1. 需要您手動指定Partitions目錄。
      alter table storage_log add partition(ds=123);
    2. 查詢返回資料。
      select * from storage_log;
      返回如下資料。
           OK
          abcd    123
          efgh    123