分布式并行计算MapReduce

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

HDFS功能:是一种被设计成适合运行在通用硬件上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。它能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

HDFS的工作原理:
HDFS按照Master和Slave的结构。分NameNode、SecondaryNameNode、DataNode这几个角色。
NameNode:是Master节点,是大领导。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间;
SecondaryNameNode:是一个小弟,分担大哥namenode的工作量;是NameNode的冷备份;合并fsimage和fsedits然后再发给namenode。
DataNode:Slave节点,奴隶,干活的。负责存储client发来的数据块block;执行数据块的读写操作。

HDFS的工作过程:
过程包括写操作,读操作:
1.写1T文件写操作,需要3T的存储,3T的网络流量贷款。
2.在执行读或写的过程中,NameNode和DataNode通过HeartBeat进行保存通信,确定DataNode活着。如果发现DataNode死掉了,就将死掉的DataNode上的数据,放到其他节点去。读取时,要读其他节点去。
3.挂掉一个节点,没关系,还有其他节点可以备份;甚至,挂掉某一个机架,也没关系;其他机架上,也有备份。

 

 MapReduce功能:

是一个分布式计算框。可以通过mapreduce很容易在hadoop平台上进行分布式的计算编程。

MapReduce工作原理:
MapReduce就是"任务的分解与结果的汇总"。把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。

MapReduce工作过程:
在Hadoop中,用于执行MapReduce任务的机器角色有两个:一个是JobTracker;另一个是TaskTracker,JobTracker是用于调度工作的,TaskTracker是用于执行工作的。一个Hadoop集群中只有一台JobTracker。在分布式计算中,MapReduce框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,把处理过程高度抽象为两个函数:map和reduce,map负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果汇总起来。

 

2.HDFS上运行MapReduce

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

 分布式并行计算MapReduce

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

分布式并行计算MapReduce

3)启动Hadoop:HDFS, JobTracker, TaskTracker

分布式并行计算MapReduce

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

分布式并行计算MapReduce

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

分布式并行计算MapReduce

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

 分布式并行计算MapReduce

7)source run.sh来执行mapreduce

分布式并行计算MapReduce

8)查看运行结果

分布式并行计算MapReduce