Hadoop总结

概述

HDFS包括DataNode,NameNode,2nn
Yarn包括Resource Manager,NodeManager,ApplicationMaster,Container

Hadoop1.x包括HDFS,MapReduce,Common(辅助工具)
Hadoop2.x包括HDFS,Yarn,MapReduce,Common

HDFS

HDFS(Hadoop Distributed File System),它是一个分布式文件系统,适合一次写入,多次读出的场景。

HDFS优点:高容错性;适合处理大数据;可靠性高。
HDFS缺点:不适合低延时数据访问;无法高效对大量小文件进行存储;一个文件只能有一个写,不支持多线程写入;只支持append,不支持文件的随机修改。

为什么块的大小不能设置太大也不能设置太小
(1)HDFS的块设置太小,会增加寻址时间,程序一直在找块的开始位置;
(2)如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据时,会非常慢。
总结:HDFS块的大小设置主要取决于磁盘传输速率。(寻址时间为传输时间的1%为最佳)

读写流程

MapReduce

优点:MapReduce易于编程;良好的扩展性;高容错率;适合PB以上海量数据的离线处理
缺点:不擅长实时计算;不擅长流式计算;不擅长DAG(有向无环图)计算。

MapReduce运行时有三类实例进程
MrAppMaster:负责整个程序的过程调度及状态协调。
MapTask:负责Map阶段的整个数据处理流程。
ReduceTask:负责Reduce阶段的整个数据处理流程。

分块:这里的分块是HDFS存储系统中的最小单位。
切片:当一个作业提交到Hadoop运行的时候,其中的核心步骤是MapReduce。在这个过程中传输的数据可能会很多,Hadoop会将MapReduce的输入数据划分为等长的小数据块,称为输入切片或者分片。hadoop为每个分片构建一个map任务。

FileInputFormat切片机制
(1)简单的按照文件的内容长度进行切片
(2)切片大小默认等于BlockSize
(3)切片时不考虑数据整体,而是逐个针对每一个文件进行单独切片

源码中计算切片大小的公式:
Math.max(minSize,Math.min(maxSize,blockSize))
minSize = 1,默认值为1(此参数如果调的比blockSize要大,那么就可以让切片变大)
maxSize = Long.MAXValue,默认值为Long.MAXValue(此参数如果调的比blockSize要小,那么就可以让切片变小)
(将最小值调大可以将切片变大,将最大值调小可以将切片变小)

TextInputFormat:是默认的FileInputFormat实现类。按行读取每条记录。一次读一行文本,然后将该行的起始偏移量作为key,行内容作为value返回。

Mapper:用户根据业务需求实现其中三个方法:map() setup() cleanup ()
Reducer:用户根据业务需求实现其中三个方法:reduce() setup() cleanup ()

CombineTextInputFormat切片机制
框架默认的TextInputFormat切片机制是对任务按文件规划切片,不管文件多小,都会是一个单独的切片,都会交给一个MapTask,这样如果有大量小文件,就会产生大量的MapTask,处理效率极其低下。
CombineTextInputFormat用于小文件过多的场景,它可以将多个小文件从逻辑上规划到一个切片中,这样,多个小文件就可以交给一个MapTask处理。

MapReduce工作流程

shuffle机制

Combiner合并
统计过程中对每一个MapTask的输出进行局部汇总,以减小网络传输量即采用Combiner功能。
(1)Combiner是MR程序中Mapper和Reducer之外的一种组件。
(2)Combiner组件的父类就是Reducer。
(3)Combiner和Reducer的区别在于运行的位置
Combiner是在每一个MapTask所在的节点运行;Reducer是接收全局所有Mapper的输出结果;
(4)Combiner的意义就是对每一个MapTask的输出进行局部汇总,以减小网络传输量。
(5)Combiner能够应用的前提是不能影响最终的业务逻辑,而且,Combiner的输出kv应该跟Reducer的输入kv类型要对应起来。

ReduceTask并行度
ReduceTask的并行度同样影响整个Job的执行并发度和执行效率,但与MapTask的并发数由切片数决定不同,ReduceTask数量的决定是可以直接手动设置:

// 默认值是1,手动设置为4
job.setNumReduceTasks(4);

Hadoop数据压缩

  1. 优缺点
    优点:以减少磁盘IO、减少磁盘存储空间。
    缺点:增加CPU开销。
  2. 压缩原则
    运行密集的Job,少用压缩
    IO密集的Job,多用压缩
  3. 压缩方式选择
    重点考虑:压缩/解压缩速度、压缩率(压缩后存储大小)、压缩后是否可以支持切片。
  4. 压缩算法
    • Gzip压缩
      优点:压缩率比较高;
      缺点:不支持Split;压缩/解压速度一般;
    • Bzip2压缩
      优点:压缩率高;支持Split;
      缺点:压缩/解压速度慢。
    • Lzo压缩
      优点:压缩/解压速度比较快;支持Split;
      缺点:压缩率一般;想支持切片需要额外创建索引。
    • Snappy压缩
      优点:压缩和解压缩速度快;
      缺点:不支持Split;压缩率一般;

Yarn

Yarn工作机制

作业提交全过程

调度器
先进先出调度器(FIFO)
容量调度器(Capacity Scheduler)
公平调度器(Fair Scheduler)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值