大数据平台/大数据技术与原理-实验报告--MapReduce编程

news2024/11/24 20:45:28

实验名称

 MapReduce编程

实验性质

(必修、选修)

必修

实验类型(验证、设计、创新、综合)

综合

实验课时

2

实验日期

2023.10.30-2023.11.03

实验仪器设备以及实验软硬件要求

专业实验室(配有centos7.5系统的linux虚拟机三台

实验目的

1. 理解MapReduce编程思想。

2. 理解MapReduce作业执行流程。

3. 理解MR-App编写步骤,掌握使用MapReduce Java API进行MapReduce基本编程,熟练掌握如何在Hadoop集群上运行MR-App并查看运行结果。

4. 熟练掌握MapReduce Web界面的使用。

5. 掌握MapReduce Shell常用命令的使用。

实验内容(实验原理、运用的理论知识、算法、程序、步骤和方法)

实验原理概述

一、MapReduce编程思想

MapReduce是Hadoop生态中的一款分布式计算框架,它采用“分而治之”的核心思想,将大型任务拆分为若干子任务,由独立节点处理后再汇总结果。这使得开发人员能够专注于业务逻辑,而不必深入了解分布式计算细节。

早期的MapReduce(MapReduce 1.0)采用Master/Slave结构,但存在单点故障等问题。后来,MapReduce进行了升级,采用ResourceManager、ApplicationMaster和NodeManager等进程构建MapReduce 2.0体系架构。

二、MapReduce作业执行流程

MapReduce作业执行流程包括InputFormat、Map、Shuffle、Reduce、OutputFormat五个阶段。在InputFormat阶段,数据预处理并切分为逻辑上的InputSplit;Map阶段按用户定义的映射规则输出<key, value>中间结果;Shuffle阶段对Map输出进行排序、分区、合并等操作;Reduce阶段接收<key, List(value)>中间结果,执行用户定义逻辑,输出<key, value>结果;OutputFormat阶段将Reduce结果输出到分布式文件系统。

 三、MapReduce Web UI

MapReduce Web UI提供管理员接口,用于查看已完成的MR-App执行过程的统计信息。地址为http://JobHistoryServerIP:19888,可查看MapReduce的历史运行情况。

 四、MapReduce Shell

MapReduce Shell提供用户和管理员命令,例如archive、classpath、distcp、job、pipes等。管理员命令包括historyserver和hsadmin。Shell命令的详细说明可参考[官方文档]

五、MapReduce Java API

MapReduce Java API面向Java开发工程师,用于编写MR-App。编写步骤包括确定<key, value>对、定制输入格式、编写Mapper和Reducer类、定制输出格式。主要类有Job、Mapper、Reducer、InputFormat、OutputFormat等。详细说明可在[官方文档](https://hadoop.apache.org/docs/r2.9.2/api/index.html)查看。

实验步骤:

  1. 启动全分布模式Hadoop集群,守护进程包括NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager和JobHistoryServer。

主节点:

从节点:

在Hadoop集群主节点上搭建MapReduce开发环境Eclipse。

2.查看Hadoop自带的MR-App单词计数源代码WordCount.java,在Eclipse项目MapReduceExample下建立新包com.csh.mapreduce,模仿内置的WordCount示例,自己编写一个WordCount程序,最后打包成JAR形式并在Hadoop集群上运行该MR-App,查看运行结果。 

与运行hadoop-mapreduce-examples-2.9.2.jar中的wordcount程序一样,只需要执行以下命令,就能在Hadoop集群中成功运行自己编写的MapReduce程序了,命令如下所示。

hadoop jar /root/eclipse-workspace/MapReduceExampleWordCountDIY.jar com.csh.mapreduce.WordCountDriver /InputDataTest /OutputDataTest5

上述命令中,/InputDataTest表示输入目录,/OutputDataTest5表示输出目录。执行该命令前,假设HDFS的目录/InputDataTest下已存在待分析词频的3个文件,而输出目录

上述程序执行完毕后,会将结果输出到/OutputDataTest5目录中,可以使用命令“hdfs dfs -ls /OutputDataTest5”来查看。/OutputDataTest5目录下有2个文件,其中/OutputDataTest5/_SUCCESS表示Hadoop程序已执行成功,这个文件大小为0,文件名就告知了Hadoop程序的执行状态;第二个文件/OutputDataTest5/part-r-00000.bz2才是Hadoop程序的运行结果。由于输出结果进行了压缩,所以无法使用命令“hdfs dfs -cat /OutputDataTest4/part-r-00000.bz2”直接查看Hadoop程序的运行结果

4 分别在自编MapReduce程序WordCount运行过程中和运行结束后查看MapReduce Web界面。

5.分别在自编MapReduce程序WordCount运行过程中和运行结束后练习MapReduce Shell常用命令。 

分别在自编MapReduce程序WordCount运行过程中和运行结束后练习MapReduce Shell常用命令。

例如,使用如下命令查看MapReduce作业的状态信息。

mapred job -status <job-id>

如图所示,当前MapReduce作业“job_1568702465801_0002”正处于运行(RUNNING)状态。

6. 关闭Hadoop集群。

实验结果与分析

通过实施“MapReduce编程”实验,我们得到了以下结论:

1. 理解MapReduce编程思想:通过实验,深入理解了MapReduce编程思想,即“分而治之”的核心思想。能够将大型任务划分为独立的子任务,分布式地处理数据,最后将结果汇总。

2. 掌握MapReduce作业执行流程:熟悉了MapReduce作业的执行流程,包括InputFormat、Map、Shuffle、Reduce、OutputFormat五个阶段。能够更好地理解MapReduce作业的内部运行机制。

3. 熟练使用MapReduce Java API进行编程:通过实践掌握了MR-App编写步骤,使用MapReduce Java API进行基本编程。能够确定<key, value>对,定制输入格式,编写Mapper和Reducer类,定制输出格式,最终在Hadoop集群上运行MR-App并查看运行结果。

4. 熟练使用MapReduce Web界面:实验熟悉了MapReduce Web UI的使用,能够在页面上查看已完成的MR-App执行过程中的统计信息。可以更好地监控和理解MapReduce作业的执行情况。

5. 熟练使用MapReduce Shell常用命令:练习了MapReduce Shell常用命令,包括查看作业状态等。提供了在命令行中与MapReduce交互的能力。

6. 成功运行自编MapReduce程序WordCount: 通过在Hadoop集群上运行自己编写的MapReduce程序WordCount,验证了他们对MapReduce编程的理解和应用。通过Hadoop命令成功运行了程序,观察了结果并对运行过程中的各个阶段进行了分析。

7. 分析MapReduce Web界面和MapReduce Shell输出:在实验中通过查看MapReduce Web界面和使用Shell命令,深入了解了MapReduce作业的运行状态和输出结果。更好地理解和调试MapReduce程序提供了实际经验。

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

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

相关文章

burpsuite issue definitions

https://portswigger.net/burp/documentation/scanner/vulnerabilities-list 先从高危的开始学(四十能学剑&#xff0c;时人无此心)&#xff1a; os command injection todo 未完待续

element 的 Notification 通知,自定义内容

通知事件&#xff1a; // 商户后台通知 MerchantBackgroundNotice() {// 禁止消息通知弹出多条if(this.notifyInstance) {this.notifyInstance.close();}const h this.$createElement; // 创建文本节点this.notifyInstance this.$notify({showClose: false, // 禁止关闭按钮…

Python语言学习笔记之三(字符编码)

本课程对于有其它语言基础的开发人员可以参考和学习&#xff0c;同时也是记录下来&#xff0c;为个人学习使用&#xff0c;文档中有此不当之处&#xff0c;请谅解。 什么是字符编码 计算机从本质上来说只认识二进制中的0和1&#xff0c;字符编码(Character Encoding) 是一种将…

Java(八)(可变参数,Collections,小案例:斗地主游戏小案例:斗地主游戏,Map集合,Stream流)

目录 可变参数 Collections 小案例:斗地主游戏 Map集合 Map的常用方法 map集合的遍历 键找值 键值对 Lambda 表达式 HashMap底层原理 集合的嵌套 Stream流 获取集合或数组的Stream流 Stream流的方法 可变参数 就是一种特殊的形参,定义在方法和构造器的形参列表中,…

视频没有字幕怎么办,怎么给视频增加字幕

文章目录 视频没有字幕怎么办&#xff0c;怎么给视频增加字幕前言软件准备制作字幕1. 导入视频2. 将视频拖拽到轨道3. 生成字幕4. 导出字幕 字幕实时翻译1. 播放视频2. 显示字幕设置3. 双语字幕显示 总结 视频没有字幕怎么办&#xff0c;怎么给视频增加字幕 前言 有时候下载的…

传音荣获2023首届全国人工智能应用场景创新挑战赛“智能家居专项赛”三等奖

近日&#xff0c;中国人工智能学会与科技部新一代人工智能发展研究中心联合举办2023首届全国人工智能应用场景创新挑战赛&#xff08;2023 1st China’s Innovation Challenge on Artificial Intelligence Application Scene&#xff0c;以下简称CICAS 2023)&#xff0c;吸引了…

10 个例子带你学会 AI 编程(含提示词)

大家好&#xff0c;我是伍六七。 AI 编程是一个程序员群体普遍关注的领域&#xff0c;但是真的使用 AI 编程实现提效的还是少数。 有的人没有大模型资源&#xff0c;有的人不知道可以在哪些方面使用 AI 进行提效&#xff0c;还有的人不相信使用 AI 可以提效。 今天&#xff…

国产Ai大模型和chtgpt3.5的比较

下面是针对国产大模型&#xff0c;腾讯混元&#xff0c;百度文心一言&#xff0c;阿里通义千问和chatgpt的比较&#xff0c;最基础的对一篇文章的单词书进行统计&#xff0c;只有文心一言和chatgpt回答差不多&#xff0c;阿里和腾讯差太多了

【机器学习】迁移学习

迁移学习&#xff1a;给定一个有标记的源域和一个无标记的目标域。这两个领域的数据分布不同。迁移学习的目的就是要借助源域的知识&#xff0c;来学习目标域的知识(标签)。或是指基于源域数据和目标域数据、源任务和目标任务之间的相似性&#xff0c;利用在源领域中学习到的知…

【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角

专栏系列文章如下&#xff1a; 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵 【视觉SLAM十四讲学习笔记】第三讲——Eigen库 本章将介绍视觉SLAM的基本问题之一&#xff1a;如何…

【开源】基于JAVA的天然气工程运维系统

项目编号&#xff1a; S 022 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S022&#xff0c;文末获取源码。} 项目编号&#xff1a;S022&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程…

Win11修改用户名(超详细图文)

新买的电脑一般预装Windows11系统&#xff08;家庭与学生版&#xff09;&#xff0c;新电脑初次开机使用微软邮箱账号登录&#xff0c;则系统将用户名自动设置成邮箱前5位字符。我的用户名便是一串数字【231xx】&#xff08;qq邮箱前5位&#xff09;&#xff0c;看着很不舒服&a…

Docker搭建个人网盘NextCloud并接入雨云对象存储的教程

雨云服务器使用Docker搭建私有云盘NextCloud并接入雨云对象存储ROS的教程。 NextCloud简介 NextCloud由原ownCloud联合创始人Frank Karlitschek创建的&#xff0c;继承原ownCloud的核心技术又有不少的创新。在功能上NextCloud和ownCloud差不多&#xff0c;甚至还要丰富一些&a…

C语言:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数

分析&#xff1a; 在主函数 main 中&#xff0c;程序首先定义一个字符变量 c&#xff0c;以及四个整型变量 letters、k、s 和 o&#xff0c;并初始化它们的值为 0。然后使用 printf 函数输出提示信息&#xff0c;让用户输入一行字符。 接下来&#xff0c;程序通过 while 循环结…

编程难点:常见问题及解决方案

目录 1 前言2 学习成本高2.1 学习成本高的问题2.2 学习成本高的解决方法 3 程序bug多3.1 程序bug多的问题 4 程序的性能调试4.1 程序的性能问题4.1 程序的性能调试方法 5 跨平台兼容性差5.1 跨平台兼容问题5.1 跨平台兼容问题的解决方法 6 解决技术难题的方法总结7 总结 1 前言…

pikachu靶场:php反序列化漏洞

pikachu靶场:php反序列化漏洞 文章目录 pikachu靶场:php反序列化漏洞代码审计漏洞利用 代码审计 像这种反序列化的代码基本都是代码审计出的 // 定义一个名为S的类&#xff0c;该类有一个属性$test和一个构造函数 class S{ var $test "pikachu"; // $test是一个…

大数据平台/大数据技术与原理-实验报告--实战HDFS

实验名称 实战HDFS 实验性质 &#xff08;必修、选修&#xff09; 必修 实验类型&#xff08;验证、设计、创新、综合&#xff09; 综合 实验课时 2 实验日期 2023.10.23-2023.10.27 实验仪器设备以及实验软硬件要求 专业实验室&#xff08;配有centos7.5系统的linu…

SIFT尺度不变特征变换

SIFT(Scale-Invariant Feature Transform)是一种用于图像处理和计算机视觉中的特征提取和匹配的算法。它的主要优点是对图像的尺度、旋转和亮度变化具有较强的鲁棒性。 基本原理: Scale-space peak selection: Potential location for finding features.Keypoint Localizat…

NX二次开发UF_CURVE_ask_parameterization 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_parameterization Defined in: uf_curve.h int UF_CURVE_ask_parameterization(tag_t object, double param_range [ 2 ] , int * periodicity ) overview 概述 Retu…

视频做成二维码的简易教程(收藏)

视频做成二维码的简易教程&#xff0c;由于面向免费用户是5G&#xff0c;普通用户是可以够用的&#xff0c;所以可以推荐给大家&#xff0c;值得一试 以下几点&#xff0c;是您需要了解的&#xff1a; 01.稳定流畅 提供高稳定性&#xff0c;超流畅的企业级视频服务 02.节省成…