Hadoop集群WordCount詳解

2021-07-11 16:06:06 字數 2195 閱讀 1645

1.1 mapreduce程式設計模型

mapreduce採用」分而治之」的思想,把對大規模資料集的操作,分發給乙個主節點管理下的各個分節點共同完成,然後通過整合各個節點的中間結果,得到最終結果。簡單地說,mapreduce就是」任務的分解與結果的彙總」。

在hadoop中,用於執行mapreduce任務的機器角色有兩個:乙個是jobtracker;另乙個是tasktracker,jobtracker是用於排程工作的,tasktracker是用於執行工作的。乙個hadoop集群中只有一台jobtracker。

在分布式計算中,mapreduce框架負責處理了並行程式設計中分布式儲存、工作排程、負載均衡、容錯均衡、容錯處理以及網路通訊等複雜問題,把處理過程高度抽象為兩個函式:map和reduce,map負責把任務分解成多個任務,reduce負責把分解後多工處理的結果彙總起來。

需要注意的是,用mapreduce來處理的資料集(或任務)必須具備這樣的特點:待處理的資料集可以分解成許多小的資料集,而且每乙個小資料集都可以完全並行地進行處理。

1.2 mapreduce處理過程

在hadoop中,每個mapreduce任務都被初始化為乙個job,每個job又可以分為兩種階段:map階段和reduce階段。這兩個階段分別用兩個函式表示,即map函式和reduce函式。map函式接收乙個

public static void main(string args) throws exception 

job job = new job(conf, "word count");

job.setjarbyclass(wordcount.class);

job.setcombinerclass(intsumreducer.class);

job.setreducerclass(intsumreducer.class);

job.setoutputkeyclass(text.class);

job.setoutputvalueclass(intwritable.class);

fileinputformat.addinputpath(job, new path(otherargs[0]));

fileoutputformat.setoutputpath(job, new path(otherargs[1]));

system.exit(job.waitforcompletion(true) ? 0 : 1);

}

在mr程式中,首先建立乙個job,並進行配置,然後通過呼叫job的waitforcompletion方法將job提交到mapreduce集群。這個過程中,job存在兩種狀態:job.jobstate.define和job.jobstate.running,建立乙個job後,該job的狀態為job.jobstate.define,job內部通過jobclient基於org.apache.hadoop.mapred.jobsubmissionprotocol協議提交給jobtracker,然後該job的狀態變為job.jobstate.running。

1.準備工作

2 執行例子

3 檢視結果

hadoop提供了如下內容的資料型別,這些資料型別都實現了writablecomparable介面,以便用這些型別定義的資料可以被序列化進行網路傳輸和檔案儲存,以及進行大小比較。

booleanwritable:標準布林型數值

bytewritable:單位元組數值

doublewritable:雙位元組數

floatwritable:浮點數

intwritable:整型數

longwritable:長整型數

text:使用utf8格式儲存的文字

nullwritable:當中的key或value為空時使用

關於Hadoop2 7 2執行wordcount

1.每次機器重啟後需要重新format否則namenode無法啟動的問題,解決辦法就是修改core site.xml,在你的hadoop安裝目錄新增臨時資料夾。hadoop.tmp.dir usr local hadoophome hadoop tmp 2.新建hdfs輸入資料夾input2。bin...

執行hadoop自帶的案例 wordcount

主要有四個步驟 一 在hdfs分布式檔案系統 中建立兩個資料夾,分別存放輸入 輸出資料 1 bin hadoop fs mkdir p data wordcount 建立的輸入資料目錄 2 bin hadoop fs mkdir p output 建立的輸出資料目錄 二 將要測試的檔案上傳到hdfs...

hadoop 部署後測試 執行wordcount

由於hbase集群部署失敗,所以我想測試一下自己的 hadoop 是否安裝成功 1.hadoop fs mkdir input 在hdfs中建立input檔案目錄 plain view plain copy root master hadoop hadoop fs mkdir input 2 had...