計數器:計數器是用來記錄job的執行進度和狀態的。它的作用可以理解為日誌。我們通常可以在程式的某個位置插入計數器,用來記錄資料或者進度的變化情況,它比日誌更便利進行分析。例如,我們有乙個檔案,其中包含如下內容:
hello you它被wordcount程式執行後顯示如下日誌:hello me
在上圖所示中,計數器有19個,分為四個組:file output format counters、filesystemcounters、file input format counters和map-reduce framkework。
分組file input format counters包括乙個計數器bytes read,表示job執行結束後輸出檔案的內容包括19個位元組(空格、換行都是字元),如下所示。
hello 2分組file output format counters包括乙個計數器bytes written,表示job執行時讀取的檔案內容包括19個位元組(空格、換行都是字元),如下所示。me 1
you
1
hello you關於以上這段計數器日誌中詳細的說明請見下面的注釋:hello me
1 counters: 19 //以上是在hadoop中系統內建的標準計數器。除此之外,由於不同的場景有不同的計數器應用需求,因此我們也可以自己定義計數器使用。counter表示計數器,19表示有19個計數器(下面一共4計數器組)
2 file output format counters //
檔案輸出格式化計數器組
3 bytes written=19 //
reduce輸出到hdfs的位元組數,一共19個位元組
4 filesystemcounters//
檔案系統計數器組
5 file_bytes_read=481
6 hdfs_bytes_read=38
7 file_bytes_written=81316
8 hdfs_bytes_written=19
9 file input format counters //
檔案輸入格式化計數器組
10 bytes read=19 //
map從hdfs讀取的位元組數
11 map-reduce framework //
mapreduce框架
12 map output materialized bytes=49
13 map input records=2 //
map讀入的記錄行數,讀取兩行記錄,」hello you」,」hello me」
14 reduce shuffle bytes=0 //
規約分割槽的位元組數
15 spilled records=8
16 map output bytes=35
17 total committed heap usage (bytes)=266469376
18 split_raw_bytes=105
19 combine input records=0 //
合併輸入的記錄數
20 reduce input records=4 //
reduce從map端接收的記錄行數
21 reduce input groups=3 //
reduce函式接收的key數量,即歸併後的k2數量
22 combine output records=0 //
合併輸出的記錄數
23 reduce output records=3 //
reduce輸出的記錄行數。,,
24 map output records=4 //
map輸出的記錄行數,輸出4行記錄
現在假設我們需要對檔案中的敏感詞做乙個統計,即對敏感詞在檔案**現的次數做乙個記錄。這裡,我們還是以下面這個檔案為例:
hello world!hello hadoop!文字內容很簡單,這裡我們指定hello是乙個敏感詞,顯而易見這裡出現了兩次hello,即兩次敏感詞需要記錄下來。
public然後通過string類的contains方法判斷是否存在hello敏感詞。如果有,進入條件判斷語句塊,呼叫計數器物件的increment方法。static
string spilted = line.split(" ");
for(string word : spilted) };}
通過檢視控制台日誌資訊,可以看到如下圖所示的資訊:
我們可以清楚地看到計數器由原來的19個變為20個,多出來的這個計數器正是我們自定義的敏感詞計數器,由於檔案中只有兩個hello,因此這裡顯示hello=2。
(1)suddenly,《hadoop日記17-計數器、map規約與分割槽》:
(2)吳超,《hadoop中的計數器》:
(3)dajuezhao,《hadoop中自定義計數器》:
(4)萬川梅、謝正蘭,《hadoop應用開發實戰詳解(修訂版)》:
出處:
Hadoop計數器與自定義計數器(筆記7)
計數器 計數器是用來記錄job的執行進度和狀態的。它的作用可以理解為日誌。我們通常可以在程式的某個位置插入計數器,用來記錄資料或者進度的變化情況,它比日誌更便利進行分析。例如,我們有乙個檔案,其中包含如下內容 hello you hello me 它被wordcount程式執行後顯示如下日誌 在上圖...
Hadoop 自定義計數器
private counter c override protected void setup context context throws ioexception,interruptedexception override protected void map text key,byteswrit...
7 減法計數器 加法計數器 訊號量
1.countdownlatch 減法記數器 有三個重要方法 1.初始化,並確定計數器最大值 countdownlatch countdownlatch new countdownlatch 6 2.計數器數量 1 countdownlatch.countdown 3.等待計數器歸0,然後再往下執行...