利用
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...