分布式并行计算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的副本。

 

 

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负责把分解后多任务处理的结果汇总起来。

 

 

 

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

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

尝试运行:

3)启动Hadoop:HDFS, JobTracker, TaskTracker

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

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

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

 

7)source run.sh来执行mapreduce

8)查看运行结果

一、用自己的话阐明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的副本。

 

 

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负责把分解后多任务处理的结果汇总起来。

 

 

 

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

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

尝试运行:

3)启动Hadoop:HDFS, JobTracker, TaskTracker

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

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

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

 

7)source run.sh来执行mapreduce

8)查看运行结果

猜你喜欢

转载自www.cnblogs.com/tysonnnn2/p/11005956.html