Hadoop——分布式计算框架MapReduce

MapReduce是一种分布式的离线计算框架,是一种编程模型,用于大规模数据集(大于1TB)的并行运算。将自己的程序运行在分布式系统上。概念是:"Map(射)“和"Reduce(归约)”。设计理念“分与合”,移动计算不是移动数据。
自己理解:各自服务器上取片将数据来映射成map,shuffle是从不同服务器拉去数据将每个服务器上的MAP建值进行归类,reduce将归类好的再次统计,最后返回最终的结果

设计理念

  1. 分布式计算
  2. 移动计算而不是移动数据

计算框架

盗图可耻还是盗了!

Split 大小规则

  • max.split(100M)最大切片可以很大
  • min.split(10M)最小切片大小为1b
  • block(64M)

max(min.split,min(max.split,block))
默认情况下,split实际=block大小

map个数

Map个数=数据总数/切片大小(默认情况下就是block数)

reduce个数

  • Reducer的数目由mapred-site.xml配置文件里的项目mapred.reduce.tasks决定。缺省值为1,用户可以覆盖之。
  • Reduce的数目建议是(实际工作中就是1,2,3…也就是map的键mod1,2,3…)
    0.95/1.75乘(<no. of nodes> mapred.tasktracker.reduce.tasks.maximum)。
    用0.95,所有reduce可以在maps一完成时就立刻启动,开始传输map的输出结果。
    用1.75,速度快的节点可以在完成第一轮reduce任务后,可以开始第二轮,这样可以得到比较好的负载均衡的效果。
    增加reduce的数目会增加整个框架的开销,但可以改善负载均衡,降低由于执行失败带来的负面影响。

shuffle

  • 在mapper和reducer中间的一个步骤
    可以把mapper的输出按照某种key值重新切分和组合成n份,把key值符合某种范围的输出送到特定的reducer那里去处理。
  • 可以简化reducer过程
    Partitoner分区 : hash(key) mod R 决定之后的,也就是说传到下个阶段是传了3个参数:key,vale,p(分区号),这样shuffle就知道这个数据要放到哪个分区

(在这个阶段会有多次排序多次溢写到磁盘中)

  • map阶段,同一个map中可能有相同的键,这个时候,我们可以在map阶段把相同键聚合统计,减少map到reduce之间shuffle的拉去数据量这个操作叫做combiner(慎用,一般用于累加)

MR架构

主多从架构:

  1. 主 JobTracker:(RM)
    负责调度分配每一个子任务task运行于TaskTracker上,如果发现有失败的task就重新分配其任务到其他节点。每一个hadoop集群中只一个 JobTracker, 一般它运行在NN节点上。
  2. 从TaskTracker:(NM)
    TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个MapTask/ReduceTask 任务,为了减少网络带宽TaskTracker最好运行在HDFS的DataNode上。

MapReduce 安装

1

修改配置文件:
mapred-site.xml:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

yarn-site.xml:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

ResourceManager 和NodeManager主从结构
RS存在单点故障问题 所以要对他做HA 通过zk

修改yarn-site.xml配置文件,完整的内容如下:

<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
<property>
   <name>yarn.resourcemanager.ha.enabled</name>
   <value>true</value>
 </property>
 <property>
   <name>yarn.resourcemanager.cluster-id</name>
   <value>mr_shsxt</value>
 </property>
 <property>
   <name>yarn.resourcemanager.ha.rm-ids</name>
   <value>rm1,rm2</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm1</name>
   <value>node03</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>node04</value>
 </property>
 <property>
   <name>yarn.resourcemanager.zk-address</name>
   <value>node01:2181,node02:2181,node03:2181</value>
 </property>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值