天天看点

分布式并行计算MapReduce 分布式并行计算MapReduce

分布式并行计算MapReduce

一、用自己的话阐明Hadoop平台上HDFS和MapReduce的功能、工作原理和工作过程。

1.HDFS: Hadoop Distributed File System Hadoop分布式文件系统

1.1功能:

1.兼容廉价的硬件设备。2.流数据的读写。3.大数据集。4.简单的文件模型。5.强大的夸平台兼容性。

1.2工作原理:客户端要向HDFS写数据,首先要跟namenode通信以确认可以写文件并获得接收文件block的datanode,然后客户端按顺序将文件逐个block传递给相应datanode,并由接收到block的datanode负责向其他datanode复制block的副本。

分布式并行计算MapReduce 分布式并行计算MapReduce

1.3工作过程:

l  hdfs集群分为两大角色:NameNode,DataNode (Secondary NameNode)

l  NameNode负责管理整个文件的元数据(命名空间信息,块信息) 相当于Master

l  DataNode负责管理用户的文件数据块 相当于Salve

l  文件会按照固定的大小(block=128M)切成若干块后分布式存储在若干个datanode节点上

l  每一个文件块有多个副本(默认是三个),存在不同的datanode上

l  DataNode会定期向NameNode汇报自身所保存的文件block信息,而namenode则会负责保持文件副本数量

l  hdfs的内部工作机制会对客户的保持透明,客户端请求方法hdfs都是通过向namenode申请来进行访问

2.MapReduce

2.1功能:MapReduce是一种并行可扩展计算模型,并且有较好的容错性,主要解决海量离线数据的批处理。实现下面目标

易于编程、良好的扩展性、高容错性

2.2工作原理:MapReduce是一种可用于数据处理的编程框架。MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。简单地说,MapReduce就是"任务的分解与结果的汇总"。

在分布式计算中,MapReduce框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,把处理过程高度抽象为两个函数:map和reduce,map负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果汇总起来。

分布式并行计算MapReduce 分布式并行计算MapReduce

2.3工作过程

1,大数据经split划分成大小相等的数据块(数据块的大小一般等于HDFS一个块的大小)以及用户作业程序。

2,系统中有一个负责调度的Master节点和许多的Map工作节点,Reduce工作节点

3,用户作业程序提交给Master节点,Master节点寻找合适的Map节点,并将数据传给Map节点,并且Master也寻找合适的Reduce节点并将数据传给Reduce节点

4,Master节点启动Map节点执行程序,Map节点尽可能的读取本地或本机架上的数据块进行计算。(数据本地化是Mapreduce的核心特征)

5,每个Map节点处理读取的数据块,并做一些数据整理,并且将中间结果放在本地而非HDFS中,同时通知Master节点Map工作完成,并告知中间结果的存储位置。

6,Master节点等所有Map工作完成后,开始启动Reduce节点,Reduce节点通过Master节点掌握的中间结果的存储位置来远程读取中间结果。

7,Reduce节点将中间结果处理后将结果输出到一个文件中。

从用户作业程序角度来看:

一个作业执行过程中有一个Jobtracker和多个Tasktracker,分别对应于HDFS中的namenode和datanode。Jobclient在用户端把已配置参数打包成jar文件存储在HDFS,并把存储路径提交给Jobtracker,然后Jobtracker创建每一个Task,并且分发到Tasktracker服务中去执行。

2.HDFS上运行MapReduce

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

分布式并行计算MapReduce 分布式并行计算MapReduce

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

分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce

尝试运行:

分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce

3)启动Hadoop:HDFS, JobTracker, TaskTracker

分布式并行计算MapReduce 分布式并行计算MapReduce

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

分布式并行计算MapReduce 分布式并行计算MapReduce

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

分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce

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

分布式并行计算MapReduce 分布式并行计算MapReduce

7)source run.sh来执行mapreduce

分布式并行计算MapReduce 分布式并行计算MapReduce

8)查看运行结果

分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce
分布式并行计算MapReduce 分布式并行计算MapReduce