大数据处理技术:MapReduce综合实训

目录

1 实验名称

2 实验目的

3 实验内容

4 实验原理

5 实验过程或源代码

5.1 WordCount词频统计

5.2 HDFS文件读写

5.3 倒排索引

5.4 网页排序——PageRank算法

6 实验结果

6.1 WordCount词频统计

6.2 HDFS文件读写

6.3 倒排索引

6.4 网页排序——PageRank算法


1 实验名称

       MapReduce综合实训

2 实验目的

       1.了解什么是MapReduce框架。

       2、理解MapReduce编程思想,学会编写MapReduce版本WordCount,会执行该程序,可以自行分析执行过程。

       3、理解MapReduce编程思想,学会编写MapReduce版本计数器程序,并能执行该程序和分析执行过程

3 实验内容

       (1)WordCount词频统计

       (2)HDFS文件读写

       (3)倒排索引

       (4)网页排序——PageRank算法

4 实验原理

       MapReduce的思想核心是“分而治之”,适用于大量复杂的任务处理场景(大规模数据处理场景)。Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。Reduce负责“合”,即对map阶段的结果进行全局汇总。这两个阶段合起来正是MapReduce思想的体现。

       MapReduce是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和自带默认组件整合成–个完整的分布式运算程序,并发运行在Hadoop集上。既然是做计算的框架,那么表现形式就是有个输入( input ),MapReduce 操作这个输入( input),通过本身定义好的计算模型,得到一个输出(output)。

5 实验过程或源代码

5.1 WordCount词频统计

       1.在主函数main中已初始化hadoop的系统设置,包括hadoop运行环境的连接。补全map函数内容,代码实现如下:

StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {word.set(itr.nextToken());context.write(word, one);
}   

       2.在main函数中,已经设置好了待处理文档路径(即input),以及结果输出路径(即output)。补全reduce对<k2, list(v2)> 进行合计得到list(<k3,v3>)过程,代码实现如下:

int sum = 0;
for (IntWritable val : values) {sum += val.get();
}

       3.在main函数中,已经声明了job对象,程序运行的工作调度已经设定好。将list(<k3,v3>)统计输出,代码实现如下:

result.set(sum);
context.write(key, result);

       4.为job设置类,代码实现如下:

job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);//为job设置Combiner类
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);

5.2 HDFS文件读写

       1.在主函数main中已获取hadoop的系统设置,并在其中创建HDFS文件。在main函数中,指定创建文档路径。根据提示补全文件创建过程,代码实现如下:

Configuration conf = new Configuration();  //实例化设置文件,configuration类实现hadoop各模块之间值的传递FileSystem fs = FileSystem.get(conf);  //是hadoop访问系统的抽象类,获取文件系统, FileSystem的get()方法得到实例fs,然后fs调动create()创建文件,open()打开文件       System.out.println(fs.getUri());Path file = new Path("/user/hadoop/myfile");

       2.添加读取文件输出部分,补全使用文件流将字符写入文件过程,使用outStream.writeUTF()函数,代码实现如下:

FSDataOutputStream outStream = fs.create(file); //获取文件流 
outStream.writeUTF("china cstor cstor cstor china"); //使用文件流写入文件内容

       3.补全读取文件内容,代码实现如下:

FSDataInputStream inStream = fs.open(file);  
String data = inStream.readUTF();

5.3 倒排索引

       1.在主函数main中已初始化hadoop的系统设置,包括hadoop运行环境的连接。用hashmap定义的方法统计每一行中相同单词的个数,key为行值是每一行对应的偏移,代码实现如下:

for(;itr.hasMoreTokens(); )   
{     word=itr.nextToken();  if(hashmap.containsKey(word)){  hashmap.put(word,hashmap.get(word)+1);  
}else{  hashmap.put(word, one);                         }  
}

       2.在main函数中,已经设置好了待处理文档路径(即input),以及结果输出路径(即output)。合并mapper函数的输出,并提取“文件@1”中‘@’后面的词频,以<K2,list(“单词 文件名@出现频次”)>的格式输出,代码实现如下:

String fileName="";  int sum=0;  String num;  String s;  for (Text val : values) {  s= val.toString();  fileName=s.substring(0, val.find("@"));  num=s.substring(val.find("@")+1, val.getLength());      //提取“doc1@1”中‘@’后面的词频  sum+=Integer.parseInt(num);  }  IntWritable frequence=new IntWritable(sum);  context.write(key,new Text(fileName+"@"+frequence.toString()));

       3.在main函数中,已经声明了job对象,程序运行的工作调度已经设定好。输出最终键值对list(K3,“单词", “文件1@频次; 文件2@频次,代码实现如下:

context.write(key, new Text(all.toString()));

       4.为job设置Combiner类,代码实现如下:

job.setCombinerClass(InvertedIndexCombiner.class);

       5.设置输出value的类型,代码实现如下:

job.setOutputValueClass(Text.class);

5.4 网页排序——PageRank算法

       1.通过url判断否则是外链pr,作计算前预处理;补全用完整PageRank计算公式计算输出过程,q取0.85,代码实现如下:

for(Text val:values)  {  //发现_标记则表明是url,否则是外链pr,要参与计算  if(!val.toString().contains("_"))  {  sum=sum+Double.valueOf(val.toString());  }  else  {  url=val.toString();  }  }  pr=0.15+0.85*sum;  String str=String.format("%.3f",pr);  result.set(new Text(str+" "+url));  context.write(key,result);

       2.为job设置Combiner类,代码实现如下:

job.setCombinerClass(MyReducer.class);

6 实验结果

6.1 WordCount词频统计

6.2 HDFS文件读写

6.3 倒排索引

6.4 网页排序——PageRank算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1535776.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Event 业务解耦神器(泛型喔!)

一.前言 又与我一直负责Cocos Creator的开发,我发现在TS领域,是可以自定义事件(有兴趣的大宝可以坐飞机直达:[CocosCreator]自定义事件(订阅/发布)管理器),这样做有什么好处呢?回答:解耦! 于是乎,我就觉得前端能干的事,后端也一样能干!当然,如果后端是TS或JS写的,比如nodeJS,…

『功能项目』切换职业面板【48】

我们打开上一篇47技能冷却蒙版的项目&#xff0c; 本章要做的事情是切换职业UI面板的功能 首先双击打开Canvas预制体在左上主角面板信息中新建一个button按钮 重命名&#xff08;父物体是按钮Button&#xff0c;子物体Image即可&#xff09; 创建一个Image 设计一下布局 复制三…

[进阶]面向对象之 包 final

文章目录 包什么是包包名的规则:什么时候需要导包 final常量 包 什么是包 包就是文件夹。用来管理各种不同功能的Java类&#xff0c;方便后期代码维护。 包名的规则: 公司域名反写包的作用&#xff0c;需要全部英文小写&#xff0c;见名知意。使用其他类时&#xff0c;需要…

上传头像,访问本地图片

文件大坑&#xff1a; web项目&#xff1a;首先不能直接访问本地资源&#xff0c;只能够访问服务器上的资源。 所以我想就储存数据到服务器&#xff0c;但是这样有个问题就是&#xff0c;当重新启动程序时&#xff0c;服务器上的所有文件会被重新编译&#xff0c;导致之前的文…

[数据集][图像分类]痤疮严重程度分级分类数据集999张3类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;999 分类类别数&#xff1a;3 类别名称:["Level_0","Level_…

[论文精读]Graph Neural Network-Based Anomaly Detection in Multivariate Time Series

论文网址&#xff1a;[2106.06947] Graph Neural Network-Based Anomaly Detection in Multivariate Time Series (arxiv.org) 论文代码&#xff1a;https://github.com/d-ailin/GDN 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的…

java的内存分配和回收机制

Java 与 C之间有一堵由内存动态分配和垃圾收集技术所围成的高墙&#xff0c;墙外面的人想进去&#xff0c;墙里面的人却想出来。 概述 垃圾收集&#xff08;GC&#xff09;需要完成的三件事情&#xff1a; 哪些内存需要回收&#xff1f;什么时候回收&#xff1f;如何回收&am…

4个方法教你图片转PDF怎么弄。

我们有时候会接触了一些重要的图片文件或者资料&#xff0c;想要装换成可编辑的PDF格式&#xff0c;更方便自己管理。这时候就会需要转换的工具&#xff0c;我这里就有&#xff14;款可以完成这种转换的高效工具可以分享给大家。 1、365PDF转换软件 直通车&#xff1a;www.pdf…

速通LLaMA1:《LLaMA: Open and Efficient Foundation Language Models》全文解读

文章目录 论文总览1. 创新点和突破点2. 技术实现与算法创新3. 架构升级4. 概念补充SwiGLU激活函数AdamW 5. 总结 AbstractIntroductionApproachPre-training DataArchitecture&#xff08;架构&#xff09;Optimizer&#xff08;优化器&#xff09;Efficient implementation&am…

[网络]https的概念及加密过程

文章目录 一. HTTPS二. https加密过程 一. HTTPS https本质上就是http的基础上增加了一个加密层, 抛开加密之后, 剩下的就是个http是一样的 s > SSL HTTPS HTTP SSL 这个过程, 涉及到密码学的几个核心概念 明文 要传输的真正意思是啥 2)密文 加密之后得到的数据 这个密文…

循环练习 案例

swich新特性 jdk12 穿透 逢七过 //含有七和被七整除舍去 public class test1 {public static void main(String[] args){for (int i 1; i <100 ; i) {if(i%70||i%107||i/107){continue;}System.out.println(i);}} } 求平方根 //输入大于2的整数&#xff0c;求平方根&…

linux---压缩打包

linux打包和压缩文件和目录&#xff1a; 归档(打包)命令&#xff1a;tar 归档就是将多个文件或者目录打包成为一个文件&#xff0c;存放再磁盘中&#xff0c;方便文件或者目录丢失时&#xff0c;可以恢复。 归档文件名使用相对路径 &#xff08;注意区分归档文件和被归档文…

LAMP+WordPress

一、简介 LAMP&#xff1a; L&#xff1a;linux——操作系统&#xff0c;提供服务器运行的基础环境。A&#xff1a;apache&#xff08;httpd&#xff09;——网页服务器软件&#xff0c;负责处理HTTP请求和提供网页内容。M&#xff1a;mysql&#xff0c;mariadb——数据库管理…

【网络安全的神秘世界】攻防环境搭建及漏洞原理学习

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 Kali安装docker 安装教程 PHP攻防环境搭建 中间件 介于应用系统和系统软件之间的软件。 能为多种应用程序合作互通、资源…

JavaScript高级——作用域和作用链

1、概念理解&#xff1a; —— 就是一块“地盘”&#xff0c;一个代码所在的区域 —— 静态的&#xff08;相对于上下文对象&#xff09;&#xff0c;在编写代码时就确定了 2、分类 ① 全局作用域 ② 函数作用域 ③ 没有块作用域&#xff08;ES6有了&#xff09; 3、作用 …

828华为云征文 | 云服务器Flexus X实例:多智能体对话框架 AutoGen 部署和实例运行

目录 一、什么是多智能体&#xff1f; 二、什么是 AutoGen&#xff1f; 三、部署 AutoGen 3.1 更新 apt 软件源 3.2 安装 python 3.10 3.3 安装 AutoGen 3.4 安装 AutoGen Studio 四、运行 AutoGen Studio 五、实例展示 5.1 构建实例 5.2 运行 六、总结 在体验了华为…

第 13 章 兵马未动,粮草先行——InnoDB 统计数据是如何收集的

表的统计数据&#xff1a;SHOW TABLE STATUS LIKE table_name; 索引的统计数据&#xff1a;SHOW INDEX FROM table_name; 13.1 两种不同的统计数据存储方式 InnoDB 提供了两种存储统计数据的方式&#xff1a; 永久性的统计数据。存储在磁盘上&#xff0c;服务器重启之后还在…

上图为是否色发

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

利士策分享,深耕一事:解锁专注秘诀

利士策分享&#xff0c;深耕一事&#xff1a;解锁专注秘诀 在信息洪流与诱惑交织的时代&#xff0c;专注成为稀缺能力。 我们常被社交媒体、工作邮件和琐事分散注意力&#xff0c;难以集中。 然而&#xff0c;专注是实现个人成长、职业发展和生活目标的基石。 要提升专注力&…

SSM网上书店管理系统---附源码72542

目 录 摘要 1 绪论 1.1 研究背景及意义 1.2国内外研究现状 1.3系统开发的目标 1.4论文结构与章节安排 2 网上书店管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非…