Hadoop生态系统及开发 实训手册 实训5 单词计数.docx

上传人:lao****ou 文档编号:855027 上传时间:2024-06-23 格式:DOCX 页数:7 大小:22.04KB
下载 相关 举报
Hadoop生态系统及开发 实训手册 实训5 单词计数.docx_第1页
第1页 / 共7页
Hadoop生态系统及开发 实训手册 实训5 单词计数.docx_第2页
第2页 / 共7页
Hadoop生态系统及开发 实训手册 实训5 单词计数.docx_第3页
第3页 / 共7页
Hadoop生态系统及开发 实训手册 实训5 单词计数.docx_第4页
第4页 / 共7页
Hadoop生态系统及开发 实训手册 实训5 单词计数.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Hadoop生态系统及开发 实训手册 实训5 单词计数.docx》由会员分享,可在线阅读,更多相关《Hadoop生态系统及开发 实训手册 实训5 单词计数.docx(7页珍藏版)》请在第一文库网上搜索。

1、实训3.2单词计数1 .实训I目的基于MapReduce编程思想,编写WordCount程序。2 .实训内容理解MapReduce编程思想,掌握编写MapReduce版本WordCount, 了解该 程序的执行流程,结合执行过程与结果,理解MaPRedUCe的原理。3 .实训要求以小组为单元进行实训,每小组5人,小组自协商选一位组长,由组长安排 和分配实训任务,具体参考实训操作环节。小组成员需要具备HDFS分布式存储 基础相关知识,并确保具备前面的实训环境。4 .准备知识(1) MapReduce 编程编写在Hadoop中依赖YARN框架执行的MapReduce程序,大部分情况下 只需要编写相

2、应的Map处理和Reduce处理过程的业务程序即可,因为大部分的 代码,HadOOP已经帮我们写好了。所以编写一个M叩RedUCe程序并不复杂,关 键点在于掌握分布式的编程思想和方法,主要将计算过程分为以下五个步骤:迭代。遍历输入数据,并将之解析成Key,Value键值对。将输入的Key,Value键值对映射(map)成新的Key,Value键值对。依据Key对中间数据进行分组。以组为单位对数据进行Reduce0迭代。将最终产生的Key,Value键值对保存到输出文件中。(2) JaVaAPl 解析RiputFormat:用于描述输入数据的格式,常用为IbXtl叩UtFoI*mat,其提供 如

3、下两个功能:数据切分:按照某种策略将输入数据切分成若干个数据块,以便确定M叩 Task个数以及对应的数据分片。为MaP任务提供数据:给定某个数据分片,能将其解析成一个个的Key,Value 键值对。OUtPUtForrnat:用于描述输出数据的格式,它能够将用户提供的Key,Value 键值对写入特定格式的文件中。M叩PelyRedUCe门封装了应用程序的数据处理逻辑。Writable: Hadoop自定义的序列化接口,实现该类的接口可以用作 MapReduce过程中的VlIUe数据使用。WritabIeComParable:在 Writable 基础上继承了 Congamble 接口,实现该

4、 类的接口可以用作MaPRedUCe过程中的Key数据使用。因为Key包含了比较和 排序的操作。5 .实训步骤本实训包含四大步骤:准备运行环境、准备统计数据、编写MapReduce程 序、打包并运行代码。查看运行结果这几个步骤,详细如下:(1)准备运行环境启动三台节点,然后在master中启动HDFS和YARN:start-dfs.shstart-yarn, sh(2)准备统计数据新建待统计文件word.txt,并上传数据到HDFS上vim rootdatasword.txt内容如hello hdfs hadoop hivehello mapreducehello spark sparkai

5、bigdata将WOrd.txt文件上传到HDFS集群hdfs dfs -put rootdatasword.txt查看是否上传成功,如图3.所示则表示上传成功。lrootnaster hadoop# root额aster hadoop# rootnaster hadoop# rootnaster hadoop# root额aster hadoop# rootnaster hadoop# Found 5 itemsvim /root/datas/word. txthdfs dfs -put /root/datas/word.txt /hdfs dfs -Isdnx-rootsupergroup

6、drwxr-xr-x-rootsupergroup-rw-r-r-2 rootsupergrouprootnaster hadoop# -rw-r-r-2 root supergroup-rw-r-r-2 root supergroup/4222-l-2719:43/data.txt142022-10-2721:56/test.txt2022-10-2816:02tmp222-10-2816:02/user682022-10-2817:24 /word,txt图3查看上传结果(3)引入编写MaPReduCe程序相关的jar包本次实训继续使用实训2.3的环境,但编写MapReduce程序需要引入

7、相关的 jar 包,此时继续弓I入 hadoop-mapreduce-client-core.jar 包。如图 3-所示。a p。+ 一 后X. . Name: libop-corfo-3.3.4Project Settings Project ModulesK-b+ * V CMieiEJ Select library FilesFacetsAnHactsPhtfom) SettingsSelect files or directories in which library classes, source, documentation OC native libraries arc loca

8、ted W O O HidIe pathSDKs Global IibCarieSProblemsCAUsefssaonyiDesktopKtKdp33.4shrehadpmapreduehdoopmpfeduce-lient*core klhdfe v i mapreduce Mjdiff .Iibecamples Bi sources El hadoop-mapfeduce-client-pp-3.3.4.jar hadoopmapfeducedient-8mmon-334jar&/ H hadoop-mpfeduceliet-hs3.3.4.jar图3-导入MapReduce依赖包(4)

9、编写MapReduce程序编写MapReduce程序主要是编写Map类和Reduce类,其中Map过程需要 继承 org.apache.hadoop.mapreduce 包中 M叩Per 类,并重写其 map 方法;Reduce 过程需要继承org.apache. hadoop. map red uce包中Reducer类,并重写其reduce方 法。在ConLbigdata包(没有则新建)下新建WOrdCoUnt类,添加以下代码:package com.bigdata;import org.apache.hadoop.conf.Configuration;import org. apache

10、. hadoop. fs .Path;import org.apache.hadoop.io.IntWritabIe;unport org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org. apache.hadoop. mapreduce. Mapper;import org.apache.hadoop.mapreduce.Reducer;import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;import org.apache.ha

11、doop.mapreduce.lib.output.TextOutputFormat;import org.apache.hadoop.mapreduce.lib.partition.HashPartitioner;import java. io. I OExc ept ion;import java. Util.StringTokenizer;public class WbrdCount public static class TokenizerMapper extends Mapper private final static IntWritable one = new IntWritab

12、le(I);private Text word = new Text();/map方法,划分一行文本,读一个单词写出一个V单词,1 public void map(Object Key, Text value, Context context)throws IOException,I OterruptedException StringTokenizer itr = new StringTokenizer(ValueJoStringO); while (itr.hasMoreTokens() w ord. set(itr.nextlbken();context.write(word, One)

13、;写出单词,1 )定义reduce类,对相同的单词,把它们中的VLiSt值全部相加 public static class IntSumReducer extends Reducer (private IntWritable result = new IntWritableO; public void reduce(Text Key, Iterable VaIUeS,Context context) throws IOException, InterruptedException int sum = O; for (IntWritable val : values) SUm+= 丫152;/相

14、当于,将两个 1 相加) result.set(sum);context.write(Key, result);写出这个单词,和这个单词出现次数V单词,单 词出现次数 )public static void main(String(l args) throws Exception 主方法,函数入口/ TODO Auto-generated method stubConfiguration conf = new ConfigurationO;实例化配置文件类Job job = new Job(conf, WordCount);实例化 Job 类job.setInputFormatClass(TextInputFormat.class);指定使用默认输入格式类TextlnputFormat-SetInputPaths(job, args0);设置待处理文件的位置job.setJarByClass( WordCount.class);设置主类名job.setMapperClass(TokenizerMapper.c lass);指

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服