基於Hadoop實現通用的並行任務處理

2021-05-24 10:44:17 字數 2548 閱讀 2413

利用

hadoop

雲技術框架實現通用的並行任務處理功能,

將原本只是單機程式改造成最終執行在

hadoop

雲平台裡。 l

優點

:

1. 分布並行執行 基於

mapreduce

及dfs

(分布式檔案系統)實現了分布並行執行,可實現乙個

nosplitinputformat

類用於支援單個

map任務執行。

2. 出錯自動重試

hadoop

框架具備可配置的出錯任務自動重試功能,配置引數為:

mapred.map.max.attempts。

3. 可保留原始輸入重複執行以用於除錯

當嘗試手動再次執行或除錯上乙個任務時,

hadoop

提供的isolationrunner可

實現保留原始輸入本地再次執行的功能。相應配置引數為:

keep.task.files.pattern。

4. 網頁端執行狀態實時監控,比如可以實時動態顯示處理進度

可實現customerprocess

類,通過呼叫

taskreporter

的setprogress

方法實現

網頁端進度條控制,可在

map任務的

setup

裡啟用乙個心跳任務執行

customerprocess

功能。

5. 方便的網頁端日誌查詢

hadoop

強大的網頁監控功能可提供日誌的實時收集。 6.

hadoop

框架其它的優點,如大資料量儲存及處理

利用大集群,大儲存實現單機可能沒法完成的任務。

l缺點:

1. 只能直接處理來自

dfs上的檔案

由於任務的分布式執行特徵,資料只能預先儲存在

dfs上,當然也可以利用

hadoop

的fuse-dfs

模組實現

dfs上的資料對映到本地檔案系統。如呼叫

oracle的

sqlldr

工具載入資料時,可採取這種形式,從而避免資料由

dfs轉移至本地檔案系

統這一過程。

注:由於

fuse-dfs

自身的的限制,有些任務可能沒法這樣實現,特別是牽涉到

寫檔案功能時,如解壓縮功能等。 2.

不能直接支援對檔案的隨機寫功能

由於某些

dfs本身的限制無法提供輸出流的隨機寫功能(

api上直接沒有提供

seek

功能),對於需要經常改寫較大檔案的內容時,這時就沒有比較直接的處理方

式了。

l注意事項:

1. 要注意利用

hadoop distributedcache

技術實現依賴包和配置的分布

由於任務的分布執行特性,為了保證產品的易維護性,可以將產品所依賴的

jar

包和配置檔案分發到

dfs上。

hadoop

框架分別提供了:

distributedcache.addfiletoclasspath

,可用於分發

jar包

distributedcache.addarchivetoclasspath

,可用於分發配置檔案。 2.

利用序列化將引數傳入每乙個

map任務 由於

map任務是以單獨的程序執行,在傳入引數時應採用

hadoop

提供的序列

化功能實現有可能跨機器不同程序間的引數傳入。

hadoop

框架分別提供了:

defaultstringifier.store

,可用於序列化

defaultstringifier.load

,可用於反序列化 3.

利用持久化將返回引數傳出 在

map任務返回引數時也應採用序列化的方式將引數序列化至

dfs上儲存。 4.

應仔細設計傳入引數

在設計傳入給每乙個

map任務的引數時應仔細斟酌。比如設計

ftpmap

hadoop job

,或是在乙個

map任務裡多執行緒執行。具體實現可利用

hadoop

的inputformat.getsplits

自行實現可控的支援併發執行多個

map任務的功能。

5. 開發除錯時可以讓

hadoop

以local

方式執行

在做開發除錯時,為避免多機器分布執行帶來的除錯不便,可通過設定如下參

數以支援

hadoop

任務單機單程序執行:

fs.default.name

為file:///

mapred.job.tracker

為local

hadoop 基於Streaming實現的編譯

hadoop入門教程 基於streaming實現的編譯,在streaming介面實現的程式中,使用者的map和reduce都是單獨的可執行程式,在上節實現中是使用c 實現的,包括map程式wordcountmap.cpp,reduce程式wordcountreduce.cpp。由於寫streamin...

基於hadoop的BI架構

bi系統,是企業利用資料驅動運營的乙個典型系統。bi系統通過發掘企業執行過程中的資料,發現企業的潛在風險 為企業的各項決策提供資料支撐。傳統的bi系統通常構建於關係型資料庫之上。隨著企業業務量的增大和對使用者行為實時提取分析的需要越來越高,傳統的bi架構對實時性的分析和大資料量的分析已經無法滿足,新...

封裝通用的 ajax, 基於 jQuery。

在前端非同步獲取資料時候每次都是使用 ajax 為了通用性更好,然而封裝通用的 ajax 是乙個一勞永逸的辦法。本次基於 jquery 封裝實現 第一步 引入 jquery 第二步 實現 該封裝基於 jquery var sendajax function method,url,data,succe...