分布式并行计算MapReduce

本文深入解析Hadoop分布式文件系统(HDFS)的基本概念,包括Block、NameNode和DataNode的作用,以及MapReduce的批处理计算模型。通过实例说明如何在HDFS上运行MapReduce,实现大规模数据集的并行运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HDFS:

HDFS是Hadoop的分布式文件系统,全名为Hadoop Distributed File System。它有以下三个基本概念:

Block(块),块是默认大小为64MB的逻辑单元。HDFS里面的文件被分成相同大小的数据块来进行存储和管理。当然,文件的备份和查找也是基于数据块进行处理的。

NameNode,NameNode是管理节点(直译名字节点)。它存放着文件与数据块(Block)的映射表,也存放着数据块与数据节点(DataNode)的映射表。这俩被统称为文件元数据。

DataNode,DataNode是工作节点(也就是数据节点),用来存放数据块。比如下图中,每个工作节点就存放了三个数据块。

MapReduce原理

MapReduce的本质是Map-Reduce的批处理计算模型。Map指的是把一个大任务分割成多个小的子任务,Reduce指的是把子任务执行完后的结果合并的规约过程。可以看出,MapReduce也存在着分治法的思想。

比如,我们要从大容量的网络访问日志文件中,找出访问次数最多的IP地址。MapReduce先把日志切分成几个子任务,并统计IP出现的次数。接着任务间互相交换结果,把各个IP地址的访问结果统计出来,最后中间结果合并,排序,就知道了哪个IP地址访问次数最多了。

MapReduce适用于大规模数据集的并行运算。

 

 运行流程:

 

2.HDFS上运行MapReduce

1)准备文本文件,放在本地/home/hadoop/wc

 

2)编写map函数和reduce函数,在本地运行测试通过

编写reducer.py

 编写mapper.py

测试 reducer.py

测试 mapper.py

3)启动Hadoop:HDFS, JobTracker, TaskTracker\

 

 

 

4)把文本文件上传到hdfs文件系统上 user/hadoop/input 

 

 

5)streaming的jar文件的路径写入环境变量,让环境变量生效

 

 

6)建立一个shell脚本文件:streaming接口运行的脚本,名称为run.sh

 

 

7)source run.sh来执行mapreduce

 

 

8)查看运行结果

查看文件

运行结果,是编码的问题,目前还没解决

 

转载于:https://www.cnblogs.com/hongna/p/10966567.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值