初学MapReduce
发布日期:2022-02-09 20:39:10 浏览次数:7 分类:技术文章

本文共 1631 字,大约阅读时间需要 5 分钟。

推荐系统:

    offline层:对海量数据离线计算。 MapReduce spark

    Nearline层:利用流式处理对海量数据进行实时加工 storm

    online 层:负责在线计算处理,相对简单的逻辑运算。WebPy。

 

一致性hash算法:为了解决因特网中的热点HostPot问题

 

最基本的海量数据思想:分而治之思想:

  1. 按数据量划分。传统的hash:分布式mysql
  2. 按流量划分。    一致性hash算法:新浪网流量例子
  3. 按大计算。   MapReduce。

 

一个Map对应一个split分片

 

MapReduce 是一个处理海量数据的分布式计算框架,该框架解决了:

  1. 数据分布式存储
  2. 容错性
  3. 作业调度
  4. 机器间通信等复杂问题

 

MapReduce 不负责存储数据,数据存储在HDFS上,HDFS的特点:

  1. 可扩展
  2. 可靠行
  3. 并发处理

 

MapReduce 的思想是什么:分而治之的思想,该思想解决了数据可以切割计算的应用问题;

 

Map:分 ,把复杂的问题分解为若干个简单任务

Reduce :合

 

MapReduce计算框架的流程:

 

 

 

InputFormat(MR最基础的类库之一):

  1. 计算框架中的split包含后一个Block中的开头的部分的数据(解决记录跨Block的问题)
  2. recordReader 每读取一条记录,调用一次map函数。

Shuffle :

    包含partion,sort,spill,Meger,Combiner 性能优化大有可为的地方

  1.  Partitioner是整个Shuffle中的一个部分,该部分决定数据又哪个Reducer处理,从而分区,比如采取Hash法,有n个reducer ,数据{“are”,1} 对key “are” 去做hash 即 对n取模生成m 那么生成{m, key,value},该partion就是m,决定去哪个桶
  2. Spill 溢写,每次溢写都会生成文件,溢出的数据到磁盘前对数据进行key排序sort,以及合并combiner。把数据从内存搬到磁盘
  3. Sort 缓冲区数据按照key排序
  4. Combiner 数据合并,相同的key数据,vlaue值合并,减少输出传输量。相当于部分reducer功能在memoryBuffer中做了。不能乱用该功能。

 

MapReduce :

  1. JobTracker 主进程,负责接收客户作业,提供监控工作节点功能,一个MapReduce集群只有一个JobTracker 
  2. TaskTracker 工作节点,由jobtracker提供任务,并周期性向jobtracker提供工作状态,每个工作节点只有一个taskTracker,但是一个集群有多个taskTracker ,只有一个jobTracker

MapReduce 默认先进先出的队列调度模式(FIFO模式):

  1. 先看优先级
  2. 在看开始时间
  3.  最后看JOBid号

 

MapReduce 采用多进程的并发方式,优点:多进程的并发方式这种模型便于每个任务占用资源进行控制调配,进程空间是独享的,缺点:多进程这种方式很大一部分限制了那些低延迟的任务,适合用于批量操作,高吞吐离线的。

 

MapReduce 物理配置:

  1. 合适的slot(map/reducer个数,默认都是2),设置的时候可以设置成cpu核数-1
  2. 磁盘情况 

 

MapReduce Map 注意⚠️:

  1. map的个是split的份数,而split的份数是record的个数
  2. 压缩文件是不需要做split的,不可切分
  3. 非压缩文件和sequence文件可以切分
  4. dfs.block.size决定block的大小

 

对于单个MapReduce

    Map的个数最好为集群slot的倍数

    Reduce的个数最好为集群slot的个数、倍数 

 

MapReduce 和HDFS 同时部署在一个集群中,因为使数据本地化,就近原则

通常一个集群包含三个角色(master,slave,client)

多副本,目的是容错,数据层面做到高可用

转载地址:https://blog.csdn.net/JohneyWu/article/details/81168067 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:多线程之间的通信
下一篇:CentOS7安装Redis并且设置开机启动

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月04日 02时34分36秒