Hadoop学习后的简单梳理

hadoop 学习后的简单梳理,也是为后面复习能更好的寻回做索引

Hadoop 主要就是用来解决大数据的存储和计算问题的!

那么什么是大数据那

数据量级很大的应用处理,数据集在TB及以上,或日增量在/G的数据!

所以大数据的特点便是4v,何为4v?

1 Vomule(大量):数据量大至少为TB或日增GB以上的
2 Variety (多样):数据多样,结构化数据,非结构化数据,半结构化数据!
3 Velocity(快速):相对来说处理的速度是快的!
4 Value(价值):在海量没有价值的数据中挖掘出有价值的数据来!
注意:大数据的核心处理类型通常为文本类型

大数据目前面临的问题便是

1,存储
如何解决大数据,大量数据的储存问题那!Hadoop 提供了HDFS (Hadoop的文件分布式储存系统)
2,统计计算
如何解决现有大规模的数据集中统计和计算的问题!Hadoop 提供了MapReduce (对HDFS中的数据进行做统计和计算)

HDFS

HDFS (Hadoop Distribute File System):Hadoop 的分布式文件储存系统,它核心的解决了大数据的存储问题!

HDFS的基础架构图

主要是有NameNode 和 DataNode
NameNode 是HDFS的入口,管理者,它不储存真正的数据,只存储元数据1

NameNode 的持久化机制

利用了FsImage(类式于快照,记录当前的数据状态)和Edits(日志)文件来保证数据的高可用!

MapReduce

MapReduce 是Hadoop下的一种计算模型,主要是对HDFS中的数据进行统计计算的!
MapReduce 其实是一个整体的叫法,它分为Map 和 Reduce !
Map (局部统计/计算)
Reduce (汇总统计/计算)
在运用MapReduce 时有一个Yarn 的概念
Yarn 也是一个整体的叫法,它又分为两个部分
ResourceMapper(统一资源调度器):为了提高效率,用来整合Hadoop 中的所有资源(内存,CPU…) 统一进行调度!
NodeMapper (任务监控器)监控Map和Reduce 的任务执行情况。
Job作业:一组MapReduce 又称为一次Job作业!在Hadoop 可以有很多Job作业!

Job 作业的总流程

0,先创建Job作业
1,设置InputFormat给Map 传送数据
2,设置Map(自己根据需求写代码来实现想要的局部统计计算)
3,Shuffle这个不用自己设置,是自动的
4,设置Redice (自己根据需求写代码来实现想要的汇总统计计算)
5,设置OutputFormat将弄好的数据存放到HDFS!
~,关闭job作业
Map 任务的个数程序员是无法确定的,是和切片的个数一一对应的,切片是一种逻辑切片,和文件的大小有关,当文件大于128*1.1=140.8M时便会进行切片,剩余不大于140.8便是一片,大于则会再切!
Reduce 任务的个数是有程序员来确定的,可以有0-n个,比如做数据清洗便不需要进行汇总计算Reduce的个数便可以设置为0,如果设置多个Reduce任务的话会所得到的数据也会存在不同的Reduce 分区文件里! 可以自定义分区将数据按需求放到不同文件里去!
多个Reduce 是可以提高汇总计算的效率的!

合并 Combiner

合并又被称为Map 端的Reduce ,主要是对map 局部端的数据先进行一次Reduce,从而减少map 端输出数据频繁发送给Reduce 处理时所带来的网络压力问题!
通过这种在Map 端提前对输出的数据进行一次reduce,既可以减少网络压力,又可以提高效率!不过Combiner在MapReduce 编程模型里是默认关闭的!

Shuffle 分析

shuffle 又被分为Map 端shuffle 和 Reduce 端shuffle !
Map 端的shuffle ,每一个Map 输出的数据都会进入环形缓冲区(默认100m)当数据达到80%的缓冲区占比时,便会进行溢写操作(写入到磁盘)形成一个个的小文件,之后会对这些小文件进行分区合并到一起(没开Combiner的话只是简单的物理合并)(混洗)!
Reduce 端的shuffle,会将Map 端shuffle 传来的数据进行按区分到各个Reduce 任务上去,在将这一个个同区的文件和并成一个大的文件(混洗),发送给Reduce 来进行统计计算


  1. 元数据是指用来储存真正数据信息的数据!比如真正数据存储的位置,大小名称时间戳等!
    DataNode 真正用来储存真正数据的节点!存储的是一个个的数据块[^2],代表着一个真实的物理机!
    [^2]:数据块Hadoop 为了通过多个节点储存大的数据集,HDFS会将大的数据集切分成一块块的数据块,在现有的Hadoop 2版本中,默认一块的大小为128M。 ↩︎

发布了8 篇原创文章 · 获赞 4 · 访问量 218

猜你喜欢

转载自blog.csdn.net/weixin_46001623/article/details/104037229
今日推荐