日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

eclipse远程连接hadoop_1个文件,3个类,mapreduce就是这么简单,动手搭建Hadoop(8)...

發(fā)布時間:2024/9/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 eclipse远程连接hadoop_1个文件,3个类,mapreduce就是这么简单,动手搭建Hadoop(8)... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

01 ssh免密安裝

02 jdk安裝

03 hadoop偽分布式安裝

04 hadoop全分布式

05 hadoop高可用

06 用hadoop的sdk進行開發(fā)

07 搭建yarn

上次在hdfs上面搭建了yarn對于不同客戶端的計算要求可以通過resource manager 和nodemanger協(xié)調(diào)在每個datenode節(jié)點上進行計算。理論的東西這里不展開了,直接開始動手,大家可以也動手試試,真正能夠解決技術(shù)問題才能有提高對吧。如果條件有限的兄弟也可以看看,增加一些體驗的東西。遇到類似的問題也好有個思路。接下來我們在yarn的基礎(chǔ)上寫一個mapreduce的程序。

準(zhǔn)備

這里準(zhǔn)備了一個txt文檔里面有很多單詞,我們要計算這些單詞出現(xiàn)的次數(shù)。

這個文檔內(nèi)主要是“hello”,“world”組成,我們來統(tǒng)計這兩個單詞出現(xiàn)的次數(shù)。這里我們提前把這個要處理的文件生成并且上傳到對應(yīng)的目錄上去。/user/root/hello.txt

這里我們通過eclipse連接hdfs數(shù)據(jù)庫,并且上傳文件。

編碼

這里我們需要做mapreduce的操作。map 是對單詞做統(tǒng)計,每個單詞出現(xiàn)一次就標(biāo)記一個1,reduce就是對map的結(jié)果進行分類計算,也就是做累加的操作。這里我們建立了一個 叫做“com.test.hadoop.mr”的包,并且建立了三個java 類文件。

MyWC文件,主要負(fù)責(zé)生成mapreduce任務(wù),并且制定輸入輸出文件,并且關(guān)聯(lián)mapper和reducer類。

public class MyWC {

public static void main(String[] args) throws Exception{

Configuration conf = new Configuration(true);

Job job = Job.getInstance(conf);

job.setJarByClass(MyWC.class);

//mapreduce 任務(wù)名字

job.setJobName("myjob01");

//需要處理的文件

Path input = new Path("/user/root/hello.txt");

FileInputFormat.addInputPath(job, input);

//處理以后的輸出文件

Path output = new Path("/data/wc/output");

//為了實驗方便每次運行都刪除之前輸出的文件。

if (output.getFileSystem(conf).exists(output)){

output.getFileSystem(conf).delete(output,true);

}

//把任務(wù)和輸出的文件做綁定

FileOutputFormat.setOutputPath(job, output);

//設(shè)置mapper 類

job.setMapperClass(MyMapper.class);

job.setMapOutputKeyClass(Text.class);

job.setMapOutputValueClass(IntWritable.class);

//設(shè)置reducer類

job.setReducerClass(MyReducer.class);

//執(zhí)行任務(wù)

job.waitForCompletion(true);

}

}

mapper類

public class MyMapper extends Mapper {

private final static IntWritable one = new IntWritable(1);

private Text word = new Text();

public void map(Object key, Text value, Context context) throws IOException, InterruptedException {

StringTokenizer itr = new StringTokenizer(value.toString());

while (itr.hasMoreTokens()) {

word.set(itr.nextToken());

context.write(word, one);

}

}

}

reducer類

public class MyReducer extends Reducer {

private IntWritable result = new IntWritable();

public void reduce(Text key, Iterable values,

Context context) throws IOException, InterruptedException {

int sum = 0;

for (IntWritable val : values) {

sum += val.get();

}

result.set(sum);

context.write(key, result);

}

}

打包發(fā)布

針對我們寫的jar包com.test.hadoop.mr 右鍵選擇export,然后選擇JAR file

選擇一個路徑保存起來

然后把這個jar包上傳到hdfs的服務(wù)器上面。我這里用xftp上傳的,上傳的目錄是/opt/的。

在節(jié)點node01上運行這mapreduce jar

hadoop jar mywc.jar com.test.hadoop.mr.MyWC

操作完成以后可以去看處理以后的文件

hdfs dfs -ls /data/wc/output

同時我們通過elclipse的插件也可以看到hdfs上有一個mapreduce之后生成的文件

并且可以看到"hello"和"world"各自出現(xiàn)了多少次。

由于我這里配置了node03和node04作為resourcemanager,這個時候node03作為主節(jié)點,所以可以通過后臺看到這個運行的job

注意配置

整個過程比較簡單,建議大家動手做一下。我這里遇到兩個配置上的坑和大家分享一下。如果沒有遇到類似的問題可以直接跳過了。

mapreduce 需要配置運行的路徑這里如果沒有配置運行程序會報錯

node01配置如下

vi /usr/hadoop-3.1.2/etc/hadoop/mapred-site.xml

yarn.app.mapreduce.am.env

HADOOP_MAPRED_HOME=/usr/hadoop-3.1.2

mapreduce.map.env

HADOOP_MAPRED_HOME=/usr/hadoop-3.1.2

mapreduce.reduce.env

HADOOP_MAPRED_HOME=/usr/hadoop-3.1.2

mapreduce.application.classpath

/usr/hadoop-3.1.2/share/hadoop/mapreduce/*, /usr/hadoop-3.1.2/share/hadoop/mapreduce/lib/*

配置完畢以后分發(fā)到node02,node03,node04上去。

針對yarn-site.xml文件的配置,這里我們使用node03和node04作為兩個resourcemanager,互為主備所以需要指定兩個服務(wù)器的通訊端口,當(dāng)接到mapreduce的請求之后,resourcemanager 會把他們分發(fā)到對應(yīng)的datenode上面由nodemanager協(xié)助計算。所以這里需要配置端口,以及classpath。

在node01運行

vi /usr/hadoop-3.1.2/etc/hadoop/yarn-site.xml

yarn.application.classpath

/usr/hadoop-3.1.2/etc/hadoop/, /usr/hadoop-3.1.2/share/hadoop/common/*, /usr/hadoop-3.1.2/share/hadoop/common/lib/*, /usr/hadoop-3.1.2/share/hadoop/hdfs/*, /usr/hadoop-3.1.2/share/hadoop/hdfs/lib/*, /usr/hadoop-3.1.2/share/hadoop/yarn/*, /usr/hadoop-3.1.2/share/hadoop/yarn/lib/*

yarn.resourcemanager.address.rm1

node03:8032

yarn.resourcemanager.scheduler.address.rm1

node03:8030

yarn.resourcemanager.webapp.address.rm1

node03:8088

yarn.resourcemanager.resource-tracker.address.rm1

node03:8031

yarn.resourcemanager.admin.address.rm1

node03:8033

yarn.resourcemanager.ha.admin.address.rm1

node03:23142

yarn.resourcemanager.address.rm2

node04:8032

yarn.resourcemanager.scheduler.address.rm2

node04:8030

yarn.resourcemanager.webapp.address.rm2

node04:8088

yarn.resourcemanager.resource-tracker.address.rm2

node04:8031

yarn.resourcemanager.admin.address.rm2

node04:8033

yarn.resourcemanager.ha.admin.address.rm2

node04:23142

完成配置以后將此文件分發(fā)到node02,node03,node04三個服務(wù)器上。

這里的配置問題困擾了我很久,希望大家到這里的時候能夠順利通過。

喜歡的點個關(guān)注,謝謝各位。

總結(jié)

以上是生活随笔為你收集整理的eclipse远程连接hadoop_1个文件,3个类,mapreduce就是这么简单,动手搭建Hadoop(8)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。