計數器是一種收集作業統計資訊的有效手段,用於質量控制或應用級統計。計數器還可輔助診斷系統故障。hadoop
為每個作業維護若干內建計數器
,以描述該作業的各項指標。
在任務執行過程中,每個作業的所有任務的結果都會被任務計數器聚集起來。計數器由其關聯任務維護,井定期傳到
tasktracker
.再由
tasktracker 傳給 jobtracker
。乙個任務在作業執行期間失敗,則相關計數器的值會減少。
作業計數器由jobtracker維護,因此無需網路間傳輸資料。
全排序:
方法1.使用乙個分割槽,但是該方法效率低,
方法2,先將資料分桶,再在桶內區域性排序。建立一系列排好序的檔案, 串
聯這些檔案
後,生成 乙個全
局排序的檔案。
獲得氣溫分布資訊意味著可以建立一系列分布更均勻的分割槽。但由於這個操作需要遍歷整個資料集,因此井不實用。
通過對鍵空間進行取樣,就可較為均勻地劃分數據集。取樣的核心思想是只檢視一小部分鍵,獲得鍵的近似分布,並由此構建分割槽。
輔助排序
mapreduce
框架在記錄到達
reducer 之前按鍵對記錄排序,但鍵所對應的值並沒有被排序。由於值來自不同的
map 任務,所以在多次執行程式時,值的出現順序並不固定,導致每次執行作業的時間會各有不同。一般來說,大多數 mapreduce程式無需考慮值在
reduce
函式中的出現的順序。
連線操作的具體實現技術取決於資料集的規模及分割槽方式。連線操作如果由
執行,則稱為
"map
端連線
",如果由
reducer 執行,則稱 "reduce"
端連線。如果乙個資料集很大 (例如天氣記錄)而另外乙個集合很小,以至於可以分發到集群中的每乙個節點之中 (例如氣象站元資料),則可以執行乙個 mapreduce 作業,將各個氣象站的天氣記錄放到一塊。如果兩個資料集的規模均很大,以至於沒有哪個資料集可以被完全複製到集群的每個節點,我們仍然可以使用
mapreduce
來進行連線,至於到底採用
map 端連線還reduce
端連線,則取決於資料的組織方式。
map連線:
在兩個大規模輸入資料集之間的
map 端連線會在資料到達 map 函式之前就執行連線操作。各 map 的輸入資料必須先分割槽並且以特定方式排序。各個輸入資料集被劃分成相同數量的分割槽,井且均按相同的鍵排序(連線鍵)。同一鍵的所有記錄均會放在同一分割槽之中。
reduce 連線:
由於 reduce
端連線並不要求輸入資料集符合特定結構,因而
reduce
端連線比 map端連線更為常用。但是,由於兩個資料集均需經過
mapreduce
shuffle 過程,所以 reduce
端連線的效率往往要低一些。基本思路是
map
輸出鍵,使鍵相同的記錄放在同一
reducer 中。
需要:1. 多輸入 2.輔助排序 ,為了更好地執行連線操作,先將某乙個源的資料傳輸到reducer 會非常重要。
"邊資料"
(side
data) 是作業所需的額外的唯讀資料,以輔助處理主資料集。所面臨的挑戰在於如何使所有 map reduce 任務(這些任務散布在集群內部)都能夠方便而高效地使用邊資料。使用者可以通過context類的getconfiguaration()方法獲得配置資訊。
與在作業配置中序列化邊資料的技術相比,
hadoop 的分布式緩拷貝存機制更受青睞,它能夠在任務執行過程中及時地將檔案和存檔複製到任務節點以供使用。
當使用者啟動
個作業,
hadoop
將由 -files
-archieves 選項所指定的檔案複製 jobtracker
的檔案系統(一般是
hdfs)
之中。接著,在任務執行之前, tasktracker 將檔案從
jobtra
cker 的檔案系統中複製到本地磁碟一一快取一一位任務能夠訪問檔案。
tasktracker 為快取中的檔案各維護1個計數器來統計這些檔案的被使用情況。當任務即將執行時,針對該檔案所使用的所有檔案的計數器值增1,當任務執行完畢之後,這些計數器值均減 1。當相關計數器值為0時,表明該檔案沒有被任何任務使用,可以從快取中移除
。快取大小可以通過配置屬性
local.cache.size
進行配置,以位元組為單位。
Hadoop 權威指南學習筆記(四)
mapreduce 來編寫程式,有乙個特定的流程。首先寫 map 函式和 reduce 函式,最好使用單元測試來確保函式的執行符合預期。然後,寫乙個驅動程式來執行作業,要看這個驅動程式是否可以執行,可以從本地 ide 用乙個小的資料集來執行它。如果驅動程式不能正確執行,就用本地 盡可能正確地處理這些...
《Hadoop權威指南》索引筆記
2015年5月2日 hadoop檔案格式 一 hdfs 1.hdfs一次寫入,多次讀取,每次分析應涉及大部分資料 批處理才有優勢 2.hdfs缺點 低延遲訪問 大量小檔案 使用者修改 3.hdfs塊大小 預設64m,但實際工作中往往調大 最小化定址開銷 但不能太大,一般乙個map處理乙個block,...
Hadoop 權威指南
rpm包和deb包是兩種linux系統下最常見的安裝包格式,在安裝一些軟體或服務的時候免不了要和它們打交道。rpm包主要應用在redhat系列包括 fedora等發行版的linux系統上,deb包主要應用於debian系列包括現在比較流行的ubuntu等發行版上。yum可以用於運作rpm包,例如在f...