集群使用初步

2021-09-25 12:41:02 字數 4381 閱讀 8556

1、檢視集群狀態

命令:   hdfs  dfsadmin  –report

可以看出,集群共有3個

datanode可用

也可開啟web控制台檢視

hdfs

集群資訊,在瀏覽器開啟

2、上傳檔案到

hdfs

² 檢視hdfs中的目錄資訊

命令:   hadoop  fs  –ls  /

² 上傳檔案

命令:   hadoop  fs  -put  ./ scala-2.10.6.tgz  to  /

命令:  hadoop  fs  -get  /yarn-site.xml

mapreduce是

hadoop

中的分布式運算程式設計框架,只要按照其程式設計規範,只需要編寫少量的業務邏輯**即可實現乙個強大的海量資料併發處理程式

1、需求

從大量(比如t級別)文字檔案中,統計出每乙個單詞出現的總次數

2、mapreduce

實現思路

map階段:

a) 從hdfs的源資料檔案中逐行讀取資料

b) 將每一行資料切分出單詞

c) 為每乙個單詞構造乙個鍵值對(單詞,1)

d) 將鍵值對傳送給reduce

reduce階段:

a) 接收map階段輸出的單詞鍵值對

b) 將相同單詞的鍵值對匯聚成一組

c) 對每一組,遍歷組中的所有「值」,累加求和,即得到每乙個單詞的總次數

d) 將(單詞,總次數

)輸出到

hdfs

的檔案中

1、 具體編碼實現

(1)定義乙個類

//首先要定義四個泛型的型別

//keyin:  longwritable    valuein: text

//keyout: text            valueout:intwritable

//map方法的生命週期:  框架每傳一行資料就被呼叫一次

//key :  這一行的起始點在檔案中的偏移量

//value: 這一行的內容

@override

protected void map(longwritable key, text value, context context) throws ioexception, interruptedexception {

//拿到一行資料轉換為

string

string line = value.tostring();

//將這一行切分出各個單詞

string words = line.split(" ");

//遍歷陣列,輸出

<

單詞,1>

for(string word:words){

context.write(new text(word), new intwritable(1));

(2)定義乙個

reducer類

//生命週期:框架每傳遞進來乙個

kv 組,

reduce

方法被呼叫一次

@override

protected void reduce(text key, iterablevalues, context context) throws ioexception, interruptedexception {

//定義乙個計數器

int count = 0;

//遍歷這一組

kv的所有

v,累加到

count

中 for(intwritable value:values){

count += value.get();

context.write(key, new intwritable(count));

(3)定義乙個主類,用來描述

job並提交

job

public class wordcountrunner {

//把業務邏輯相關的資訊(哪個是

,哪個是

reducer

,要處理的資料在**,輸出的結果放**。。。。。。)描述成乙個

job物件

//把這個描述好的

job提交給集群去執行

public static void main(string args) throws exception {

configuration conf = new configuration();

job wcjob = job.getinstance(conf);

//指定我這個

job所在的

jar包

// wcjob.setjar("/home/hadoop/wordcount.jar");

wcjob.setjarbyclass(wordcountrunner.class);

wcjob.setreducerclass(wordcountreducer.class);

//設定我們的業務邏輯

類的輸出

key和

value

的資料型別

wcjob.setmapoutputkeyclass(text.class);

wcjob.setmapoutputvalueclass(intwritable.class);

//設定我們的業務邏輯

reducer

類的輸出

key和

value

的資料型別

wcjob.setoutputkeyclass(text.class);

wcjob.setoutputvalueclass(intwritable.class);

//指定要處理的資料所在的位置

fileinputformat.setinputpaths(wcjob, "hdfs://hdp-server01:9000/wordcount/data/big.txt");

//指定處理完成之後的結果所儲存的位置

fileoutputformat.setoutputpath(wcjob, new path("hdfs://hdp-server01:9000/wordcount/output/"));

//向yarn

集群提交這個

job boolean res = wcjob.waitforcompletion(true);

system.exit(res?0:1);

1. 將程式打包

2. 準備輸入資料

vi  /home/hadoop/test.txt

hello tom

hello jim

hello ketty

hello world

ketty tom

在hdfs上建立輸入資料資料夾:

hadoop   fs  mkdir  -p  /wordcount/input

將words.txt上傳到

hdfs上

3. 將程式jar包上傳到集群的任意一台伺服器上

4. 使用命令啟動執行wordcount程式

jar包

5. 檢視執行結果

集群使用初步

5 集群使用初步1 檢視集群狀態 命令 hdfs dfsadmin report 可以看出,集群共有3個 datanode可用 也可開啟web控制台檢視 hdfs 集群資訊,在瀏覽器開啟 2 上傳檔案到 hdfs 檢視hdfs中的目錄資訊 命令 上傳檔案 命令 hadoop fs put scala...

集群使用初步

5 集群使用初步1 檢視集群狀態 命令 hdfs dfsadmin report 可以看出,集群共有3個 datanode可用 也可開啟web控制台檢視 hdfs 集群資訊,在瀏覽器開啟 2 上傳檔案到 hdfs 檢視hdfs中的目錄資訊 命令 hadoop fs ls 上傳檔案 命令 hadoop...

08 Hadoop集群初步使用

1.hdfs使用 1 檢視集群狀態,命令 hdfs dfsadmin report 可以看出,集群共有3個datanode可用 也可開啟web控制台檢視hdfs集群資訊,在瀏覽器開啟http hdp node 01 50070 2 上傳檔案到hdfs 檢視hdfs中的目錄資訊,命令 hadoop f...