Hadoop學習筆記 7 計數器與自定義計數器

2021-09-07 22:36:39 字數 3035 閱讀 8358

計數器:計數器是用來記錄job的執行進度和狀態的。它的作用可以理解為日誌。我們通常可以在程式的某個位置插入計數器,用來記錄資料或者進度的變化情況,它比日誌更便利進行分析。

例如,我們有乙個檔案,其中包含如下內容:

hello you

hello me

它被wordcount程式執行後顯示如下日誌:

在上圖所示中,計數器有19個,分為四個組:file output format countersfilesystemcountersfile input format countersmap-reduce framkework

分組file input format counters包括乙個計數器bytes read,表示job執行結束後輸出檔案的內容包括19個位元組(空格、換行都是字元),如下所示。

hello 2

me 1

you

1

分組file output format counters包括乙個計數器bytes written,表示job執行時讀取的檔案內容包括19個位元組(空格、換行都是字元),如下所示。

hello you

hello me

關於以上這段計數器日誌中詳細的說明請見下面的注釋:

1    counters: 19 //

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行記錄

以上是在hadoop中系統內建的標準計數器。除此之外,由於不同的場景有不同的計數器應用需求,因此我們也可以自己定義計數器使用。

現在假設我們需要對檔案中的敏感詞做乙個統計,即對敏感詞在檔案**現的次數做乙個記錄。這裡,我們還是以下面這個檔案為例:

hello world!hello hadoop!
文字內容很簡單,這裡我們指定hello是乙個敏感詞,顯而易見這裡出現了兩次hello,即兩次敏感詞需要記錄下來。

public

static

string spilted = line.split(" ");

for(string word : spilted) };}

然後通過string類的contains方法判斷是否存在hello敏感詞。如果有,進入條件判斷語句塊,呼叫計數器物件的increment方法。

通過檢視控制台日誌資訊,可以看到如下圖所示的資訊:

我們可以清楚地看到計數器由原來的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,然後再往下執行...