HDFS写数据流程(上传文件)
核心概念--Pipeline管道
HDFS在上传文件写数据过程中采用的一种传输方式。
线性传输:客户端将数据写入第一个数据节点,第一个数据节点保存数据之后再将快复制到第二个节点,第二节点复制给第三节点。
ACK应达响应:确认字符
在数据通信中,接受方发给发送方的一种传输类控制字符。表示发来的数据已经确认接受无误。
在HDFS Pipeline管道传输数据过程中,传输的反方向会进行ACK校验,确保数据传输安全。
默认3副本存储策略
默认副本存储策略是由BlockPlacementPolicyDefualt指定
第一块副本:优先客户端本地,否则随机
第二块副本:不同于第一块副本的不同机柜
第三块副本:第二块副本相同机架不同机器
流程
1.HDFS客户端创建实例对象DistributedFileSystem,该对象中封装了与HDFS文件系统操作的相关方法
2.调用DistributedFileSystem对象的Create()方法,通过RPC请求NameNode创建文件。NameNode执行各种检查判断:目标文件是否存在,父目录是否存在,客户端是否具有创建该文件的权限。检查通过,NameNode就会成为本次请求下一条记录,返回FSDataOutPutStream输入流对象给客户端用于写入数据。
3.客户端通过FSDateOutput输入流开始写入数据
4.客户端写入数据时,将数据分成一个个数据包默认64K,内部组件DataStream请求N阿门哦的挑选出合适的存储数据副本DataNode地址,默认是3副本存储。
5.传输的反方向上,会通过ACK机制校验数据数据包传输是否成功;
6.客户端完成写入后,在FSDDataOutPutStream输出流上调用close()方法关闭
7.DistributedFileSystem联系NameNode告知其文件写入完成,等待NameNode确认。
MapReduce的核心思想(先分后合,分而治之)
1.Map表示第一个阶段,负责拆分“拆分”,即把复杂的任务分解成若干个“简单的子任务”来并行处理。可以进行拆分的前提是这些小任务可以进行并行计算,彼此间没有依赖关系。
2.reduce是第二阶段,负责合并:即对map阶段的结果进行全局汇总
3.这两个阶段合起来正是MapReduce的思想
Hadoop MapReduce 的设置构思
Map:对一组数据元素进行某种重复式的处理
Reduce:对Map的中间结果进行某种进一步的结果整理
分布式式计算是一种方法,和集中计算是相对的。
分布式计算是将应用分解成许多晓得部分,分配给多个多台计算机进行处理
MapReduce实例进程
一个完整的MapReduce程序在分布式运行时有三类