当前位置: 首页 > 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…...

Qt 树模型(Tree Model)的增删改查实战解析

1. Qt树模型基础概念解析 第一次接触Qt的树模型时&#xff0c;我完全被那些抽象概念绕晕了。直到做了几个实际项目后才明白&#xff0c;Tree Model本质上就是个数据管家&#xff0c;它帮我们管理树形结构的数据&#xff0c;并让这些数据能通过Qt的视图组件&#xff08;比如QTre…...

GLM-4.1V-9B-Base一键部署教程:Python入门级环境配置指南

GLM-4.1V-9B-Base一键部署教程&#xff1a;Python入门级环境配置指南 1. 开篇&#xff1a;为什么选择GLM-4.1V-9B-Base 如果你刚接触AI开发&#xff0c;想快速体验多模态大模型的能力&#xff0c;GLM-4.1V-9B-Base是个不错的起点。这个开源模型不仅能处理文本&#xff0c;还能…...

告别算法地狱:用XVF3800麦克风阵列,5天搞定智能音箱语音前端

告别算法地狱&#xff1a;用XVF3800麦克风阵列5天打造智能音箱语音前端 当硬件工程师第一次接到"两个月内交付带远场语音交互的智能音箱原型"的需求时&#xff0c;大多数人会陷入算法恐惧——波束成形、回声消除、噪声抑制这些专业术语就像横亘在面前的喜马拉雅山脉。…...

ReadPaper小白入门指南:30天VIP获取+全文翻译避坑技巧

ReadPaper学术新手30天VIP实战指南&#xff1a;从权限获取到翻译功能深度解锁 第一次打开ReadPaper时&#xff0c;我盯着满屏的英文文献摘要手足无措——直到发现那个藏在工具栏角落的"全文翻译"按钮。点击三次后&#xff0c;系统突然弹出"试用次数已用完"…...

避坑指南:用Anaconda装Open Interpreter时Python版本选错的连锁反应

Anaconda环境下Python版本选择对Open Interpreter的影响与解决方案 在数据科学和AI开发领域&#xff0c;Anaconda已经成为Python环境管理的标准工具之一。然而&#xff0c;当它与新兴的Open Interpreter结合使用时&#xff0c;Python版本的选择往往成为初学者容易忽视却至关重要…...

BiliTools终极指南:跨平台B站资源下载与管理完整教程

BiliTools终极指南&#xff1a;跨平台B站资源下载与管理完整教程 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 还…...

千问3.5-9B Java面试题智能辅导:模拟面试与八股文解析

千问3.5-9B Java面试题智能辅导&#xff1a;模拟面试与八股文解析 1. 为什么需要智能面试辅导系统 Java开发岗位的竞争越来越激烈&#xff0c;面试难度也在逐年提升。很多求职者发现&#xff0c;即使技术实力不错&#xff0c;面对面试官的各种"八股文"问题时&#…...

如何快速上手 Ever Gauzy:企业级开源管理平台完整指南

如何快速上手 Ever Gauzy&#xff1a;企业级开源管理平台完整指南 【免费下载链接】ever-gauzy Ever Gauzy™ - Open Business Management Platform (ERP/CRM/HRM/ATS/PM) - https://gauzy.co 项目地址: https://gitcode.com/gh_mirrors/ev/ever-gauzy 想象一下&#xf…...

Cesium中Polylines的3种路径类型详解:直线、球面线与恒向线

Cesium中Polylines的3种路径类型详解&#xff1a;直线、球面线与恒向线 在三维地理可视化领域&#xff0c;Cesium作为领先的开源引擎&#xff0c;其Polylines图元功能为开发者提供了强大的路径绘制能力。今天我们将深入探讨三种核心路径类型——NONE&#xff08;直线&#xff0…...

解密Minecraft源码:DecompilerMC反编译工具完整指南

解密Minecraft源码&#xff1a;DecompilerMC反编译工具完整指南 【免费下载链接】DecompilerMC This repository allows you to decompile any minecraft version that was published after 19w36a without any 3rd party mappings, you just need to execute the script or th…...