当前位置: 首页 > news >正文

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

实验名称

 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程序提供了实际经验。

相关文章:

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

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

linux磁盘清理

目录 排查过程1、查看磁盘占用情况2. 按照占用大小进行倒排-当前目录及其子目录3.当前目录磁盘占用情况 清理命令 排查过程 1、查看磁盘占用情况 df -hdf -h 命令用于显示磁盘空间的使用情况&#xff0c;以人类可读的方式呈现&#xff0c;其中&#xff1a;df 是 “disk free”…...

万宾科技第四代可燃气体监测仪的作用

燃气作为一种重要的能源已在居民生活、工业生产和商业活动等领域得到了广泛的应用。但是与之而来的便是各种各样的燃气管网的安全问题&#xff0c;其中燃气管网泄漏成为了城市生命线建设中亟待解决的安全隐患。因此采取切实有效的措施来保障燃气管网的安全运行&#xff0c;应用…...

【Linux】探索进程的父与子

目录 1.获取进程PID1.1进程PPID 2.通过系统调用创建进程-fork初识2.1为什么fork函数要给子进程返回0&#xff0c;给父进程返回pid&#xff1f;fork函数如何做到返回两次的&#xff1f;fork干了什么事情&#xff1f;怎么理解一个变量为什么有两个不同的值&#xff1f;如果父子进…...

蚁剑低版本反制

蚁剑低版本反制 漏洞概述 中国蚁剑是一款开源的跨平台网站管理工具&#xff0c;它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。影响范围 AntSword <2.0.7 蚁剑实验版本&#xff1a;2.0.7 环境搭建&#xff1a; 172.16.1.233&#xff08;蓝队服…...

Arthas 监听 Docker 部署的java项目CPU占比高的信息

1、Linux上安装Arthas wget https://alibaba.github.io/arthas/arthas-boot.jar2、docker ps 查看目标项目的容器ID 3、copy Arthas 到目标容器中 (注意有 &#x1f615; ) docker cp arthas-boot.jar d97e8666666:/4、进入到目标容器目录中 docker exec -it d97e8666666 /b…...

Node.js入门指南(二)

目录 http模块 创建http服务端 浏览器查看 HTTP 报文 获取 HTTP 请求报文 设置响应报文 网页资源的基本加载过程 静态资源服务 hello,大家好&#xff01;上一篇文章我们对Node.js进行了初步的了解&#xff0c;并介绍了Node.js的Buffer、fs模块以及path模块。这一篇文章主…...

解锁Jira本地部署的数据中心版高级功能,打造高效、智能、精细化的项目管理

近日&#xff0c;在龙智携手Atlassian与JFrog共同举办的“大规模开发创新&#xff1a;如何提升企业级开发效率与质量”的线下研讨会中&#xff0c;龙智高级咨询顾问、Atlassian认证专家叶燕秀为大家带来了精彩演讲&#xff0c;解锁Jira Data Center版的诸多高级功能&#xff0c…...

java线程三种方式

1.继承Thread类 线程1.2交替执行 public class MyThread extends Thread {Overridepublic void run() {for (int i 0; i < 100; i) {System.out.println(getName()"------""HelloWorld");}} } /*** desc 继承Thread类&#xff0c;线程1 2 交替执行* …...

关于mysql的lower_case_table_names引发的思考

lower_case_table_names设置大小写敏感的三个值0、1、2的区别&#xff1f; lower_case_table_names参数详解 1.参数说明&#xff1a; lower_case_table_names 0 表名 存储为给定的大小和比较是区分大小写的lower_case_table_names 1 表名 存储在磁盘是小写的 &#xff0c;但…...

springboot+vue实现websocket通信实例,进入页面建立连接

springbootvue实现websocket通信实例 进入页面建立连接 前端代码&#xff1a; <template><div class"app-container"><el-form :model"queryParams" ref"queryForm" size"small" :inline"true" v-show&qu…...

【个人记录】同步Linux服务器时间和时区

修改时区 timedatectl set-timezone Asia/Shanghai时间同步 使用ntp进行同步&#xff0c;时间服务器使用阿里云NTP服务器 安装NTP服务 yum install -y ntp写入NTP配置文件 cat > /etc/ntp.conf <<EOF driftfile /var/lib/ntp/drift restrict default nomodify no…...

面试常问-如何判断链表有环、?

如何判断链表有环 题目&#xff1a;解决方案一&#xff1a;解决方案二&#xff1a;解决方案三&#xff1a; 题目&#xff1a; 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;…...

基于springboot实现农机电招平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现农机电招平台系统演示 摘要 随着农机电招行业的不断发展&#xff0c;农机电招在现实生活中的使用和普及&#xff0c;农机电招行业成为近年内出现的一个新行业&#xff0c;并且能够成为大群众广为认可和接受的行为和选择。设计农机电招平台的目的就是借助计算…...

森林无人机高效解决巡查难题,林区防火掀新篇

山东省某市为了强化森林火灾防范&#xff0c;采用了一项新兴手段——复亚智能无人机森林火情监测系统。这套系统在AI飞行大脑的指挥下&#xff0c;让无人机在空中巡逻&#xff0c;实现了无人机森林防火系统的实施落地。 一、AI大脑如何引领森林无人机高空巡逻&#xff1f; 在山…...

python 爬虫之 爬取网站信息并保存到文件

文章目录 前期准备探索该网页的HTML码的特点开始编写代码存入文件总的程序文件存储效果 前期准备 随便找个网站进行爬取&#xff0c;这里我选择的是(一个卖书的网站&#xff09; https://www.bookschina.com/24hour/62700000/ 我的目的是爬取这个网站的这个页面的书籍的名称以…...

kubelet漏洞CVE-2020-8559复现与分析

首先下载源码 git clone --branch v1.17.1 --single-branch https://github.com/kubernetes/kubernetes.git 参考 移花接木&#xff1a;看CVE-2020-8559如何逆袭获取集群权限-腾讯云开发者社区-腾讯云...

基于C#实现奇偶排序

这篇就从简单一点的一个“奇偶排序”说起吧&#xff0c;不过这个排序还是蛮有意思的&#xff0c;严格来说复杂度是 O(N2)&#xff0c;不过在多核的情况下&#xff0c;可以做到 N2 /(m/2)的效率&#xff0c;这里的 m 就是待排序的个数&#xff0c;当 m100&#xff0c;复杂度为 N…...

Kibana部署

服务器 安装软件主机名IP地址系统版本配置KibanaElk10.3.145.14centos7.5.18042核4G软件版本&#xff1a;nginx-1.14.2、kibana-7.13.2-linux-x86_64.tar.gz 1. 安装配置Kibana &#xff08;1&#xff09;安装 [rootelk ~]# tar zxf kibana-7.13.2-linux-x86_64.tar.gz -C…...

【Linux】了解进程的基础知识

进程 1. 进程的概念1.1 进程的理解1.2 Linux下的进程1.3 查看进程属性1.4 getpid和getppid 2. 创建进程3. 进程状态4. 进程优先级5. 进程切换6. 环境变量7. 本地变量与内建命令 1. 进程的概念 一个已经加载到内存中的程序&#xff0c;叫做进程&#xff08;也叫任务&#xff09…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...