hive 執行mapreduce任務報錯

2021-10-05 23:37:36 字數 854 閱讀 6134

近期由於公司大資料集群有很多歷史遺留頑疾,進行了新舊集群的資料遷移。

前期進行了大資料新集群的搭建,接下來在跑hive任務的時候,發現了乙個讓人頭痛的問題。可以看一下執行sql

select substr(even_ttime,0,10) from ods_ods.ods_ods_ishare_log發現直接就報錯。然後檢視yarn的執行日誌如下:

頓時一臉懵逼,因為上面的報錯class是缺少其中的哪乙個根本就不知道, 在排查的過程中,1、用這條語句 select event_time from ods_ods.ods_ods_ishare_log又是完全沒有問題的2、接著就想到是不是因為lib沒有指定導致函式不可用,然後試了一下select substr(even_ttime,0,10)發現又可以查出問題來。

後面細細分析這三段sql,第一條sql跟第三條sql實際上內部都是沒有啟mapreduce任務的,只是簡單的hdfs的讀取以及函式得呼叫,後面看到這篇文章

讓人恍然大悟

這個配置項的意思是配置啟動mapreduce時用的classpath,位於 etc/hadoop/mapred-site.xml 檔案中,問題就在於之前 運維在搭建新集群的時候是沒有配置紅線部分的,導致啟動mapreduce任務的時候找不到需要載入的jar包。

後面把這個配置調好重啟,問題解決。

集群遷移看似簡單,其實中間的過程實屬不易,希望這篇文章能幫到遇到這個問題的朋友,畢竟也是卡了我一兩天。 

MapReduce的推測執行(Hive優化)

在分布式集群環境下,因為程式 bug 包括 hadoop 本身的 bug 負載不均衡或者資 源分布不均等原因,會造成同乙個作業的多個任務之間執行速度不一致,有些任務的執行速 度可能明顯慢於其他任務 比如乙個作業的某個任務進度只有 50 而其他所有任務已經 執行完畢 則這些任務會拖慢作業的整體執行進度...

MapReduce執行流程

mapreduce的大體流程是這樣的,如圖所示 由可以看到mapreduce執行下來主要包含這樣幾個步驟 1.首先對輸入資料來源進行切片 2.master排程worker執行map任務 3.worker讀取輸入源片段 4.worker執行map任務,將任務輸出儲存在本地 5.master排程work...

MapReduce執行原理

mapreduce是一種程式設計模型,用於大規模資料集 大於1tb 的並行運算。mapreduce採用 分而治之 的思想,把對大規模資料集的操作,分發給乙個主節點管理下的各個分節點共同完成,然後通過整合各個節點的中間結果,得到最終結果。簡單地說,mapreduce就是 任務的分解與結果的彙總 map...