Hadoop MapReduce知识点

为复试所准备,担心老师问到相关的问题。

MapReduce求解步骤

  • Step1:自动对文本进行分割

  • Step2:对每一对键值对用用户定义的map函数进行处理,再生成新的键值对

  • Step3:对输出的结果进行归拢、排序(系统自动完成)

  • Step4:用reduce函数操作生成最后的结果

MapRedeuce在Hadoop上的执行过程

-Map

从磁盘读入数据

执行map函数

Combine结果

将结果写到本地磁盘上

-Reduce

从各个map task的磁盘上读出相应的数据(shuffle)

排序sort

执行reduce函数

将结果写回HDFS

中间结果写回到本地磁盘

提高系统可靠性

降低系统性能

从各个map task的磁盘上读出相应的数据(shuffle)

采用HTTP协议从各个map task上远程拷贝结果

Mapreduce确保每个reducer的输入都按键排序,系统执行排序的过程——将map输出作为输入传给reduer——称为shuffle

Map函数开始产生输出时,并不直接写入磁盘,首先通过缓冲方式写入内存,并进行预排序

缓冲区默认100mb

默认阈值0.80,达到之后写入指定路径

缓冲区被填满,map会阻塞直到写过程完成

Redeuce输出结果直接写入HDFS系统,Hadoop文件缓冲区默认4Kb

调优原则

给shuffle过程尽可能多的内存空间

Map和Redeuce函数尽量少用内存

运行map和reduce任务的JVM内存尽量大

map端尽量估算map输出大小,减少溢出写磁盘的次数

Redece端的中间数据尽可能多的驻留在内存

-Combiner 减少Map传递给单个Reduce的中间结果重复

-Partition 分发策略,把Redece所需计算内容分发到各个节点上

Hadoop

-MapReduce 分布式数据处理模型和执行环境

-HDFS 分布式文件系统

-HBase 分布式、按列存储数据库

HDFS 读文件流程

1、客户端调用DistributeeddFileSystem对象的open()方法

2、DistributeeddFileSystem联系namenode得到数据块的信息,namenode返回数据块所在datanode的地址信息,并根据到客户端的距离进行排序

3、DistributeeddFileSystem类返回一个FSDataInputStream对象给客户端

4、客户端通过调用该对象的read()方法读取数据

5、FSDataInputStream连接距离最近的datanode读取数据,可能并行的读取多个datanode,读取完成调用close()方法关闭

HDFS 写文件流程

1、客户端调用DistributeeddFileSystem对象的create()方法

2、DistributeeddFileSystem联系namenode确保建立的文件不在,且客户端拥有创建该文件的权限,检查通过namenode为新文件产生一条记录,否则抛出IOException

3、DistributeeddFileSystem类返回一个FSDataOutputStream对象给客户端

4、FSDataOutputStream将数据分成数据包并写入内部队列dataqueue,根据datanode列表要求namenode分配合适的新块存储数据备份

5、分配的数据备份datanode形成一个管线,DataStreamer将数据包传输给管线中第一个节点,该节点存储完之后发送给下一个节点,以此类推

Yarn架构

  • 原框架中核心的 JobTracker 和 TaskTracker拆分ResourceManager, ApplicationMaster 与NodeManager 三个部分。

  • ResourceManager 做的事情是调度、启动每一个 Job 所属的 ApplicationMaster、另外监控 ApplicationMaster 的存在情况,负责作业与资源的调度。

  • ApplicationMaster负责一个 Job 生命周期内的所有工作,包括task 的监控、重启等等。类似老的框架中JobTracker。

  • NodeManager 功能是负责 Container 状态的维护,并向 RM 保持心跳。

  • 大大减小了 JobTracker(也就是现在的ResourceManager)的资源消耗,并且让监测每一个Job 子任务 (tasks) 状态的程序分布式化了,更安全。

Hive
  • 将SQL查询语句转换成一系列在Hadoop集群上的MapReduce作业

CAP理论

分布式处理准则

  • 正确性:结果正确
  • 可靠性:各种情况下正常工作
  • 高效性:实现逻辑简单

分布式环境下的CAP理论

  • 一致性:所有数据的备份在同一时刻是否保持一致
  • 可用性:在集群一部分节点故障之后,集群整体是否还能响应客户端的读写请求
  • 分区容忍性:集群中某些节点无法联系后,集群整体是否还能进行服务

通过冗余和纠错机制,保障系统能够继续工作

强一致性VS最终一致性
  • 强一致性

    写复杂

    读简单,直接读取

  • 最终一致性

    写简单

    读复杂,需要从多个节点读取并且进行判定

负载均衡 Hash、Ring算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值