简介
主要记录了Hadoop各个组件的基本原理,处理过程和关键的知识点等,包括HDFS、YARN、MapReduce等。
铺垫
- 人产生数据的速度越来越快,机器则更加快,数据的增长速度通常比算法更快,所以需要另外的一种处理数据的方法。
- 硬盘的容量增加了,但性能没有跟上,解决办法是把数据分到多块硬盘,然后同时读取。但带来一些问题:
硬件问题:复制数据解决(RAID)
分析需要从不同的硬盘读取数据:MapReduce
而Hadoop提供了
1.可靠的共享存储(分布式存储)
2.抽象的分析接口(分布式分析)
大数据
概念
不能使用一台机器 进行处理的数据
大数据的核心是样本 = 总体
特性
- 大量性(volume):一般在大数据里,单个文件的级别至少为几十,几百GB以上
- 快速性(velocity):反映在数据快速产生以及数据变更的频率上
- 多样性(variety):泛指数据类型及其来源的多样性,进一步可以把数据结构归纳为结构化(structured),半结构化(semi-structured),和非结构化(unstructured)
- 易变性:伴随数据快速性的特征,数据流还呈现出一种波动的特征。不稳定的数据会随着日,季节,特定事件的触发出现周期性峰值
- 准确性:又称为数据保证(data assurance),不同方式,收集到的数据会在质量上很大差异,数据分析和输出结果的错误程度和可信度在很大程度上取决于收集到的数据质量的高低
- 复杂性:体现在数据的管理和操作上。如何抽取,转换,加载,连接,关联以把握数据内蕴的有用信息已经变得越来越有挑战性
关键技术
1.数据分布在多台机器
可靠性:每个数据块都复制到多个节点
性能:多个节点同时处理数据
2.计算随数据走
网络IO速度 << 本地磁盘IO速度,大数据系统会尽量地将任务分配到离数据最近的机器上运行(程序运行时,将程序及其依赖包都复制到数据所在的机器运行)
代码向数据迁移,避免大规模数据时,造成大量数据迁移的情况,尽量让一段数据的计算发生在同一台机器上
3.串行IO取代随机IO
传输时间 << 寻道时间,一般数据写入后不再修改
Hadoop简介
Hadoop可运行在 一般的商用服务器上,具有高容错,高可靠性,高扩展性等特点
特别适合 写一次 读多次的场景
适合
- 大规模数据
- 流式数据(写一次,读多次)
- 商用硬件(一般硬件)
不适合
- 低延时的数据访问
- 大量的小文件
- 频繁修改文件(基本就是写1次)
Hadoop架构
- HDFS:分布式文件存储
- YARN:分布式资源管理
- MapReduce:分布式计算
- Others:利用YARN的资源管理功能能实现其他的数据处理方式
内部各个节点基本都是采用Master-Woker架构
Hadoop HDFS
简介
Hadoop Distributed File System,分布式文件系统
架构
- Block 数据块
1:基本存储单位,一般大小为64M(配置大的块主要是因为:
1)减少搜寻时间,一般硬盘传输速率比寻道时间要快,大的块可以减少寻道时间;
2)减少管理数据块的开销,每个块都需要NameNode上有对应的记录;
3)对数据块进行读写,减少建立网络的连接成本。
2:一个大文件会被拆分为一个个的块,然后存储于不同的机器,如果文件的大小 小于 Block的大小,那么实际的占用空间就为文件的大小。
3:基本的读写单位,类似于磁盘的页,每次都是读写一个块
4:每个块都会被复制到对台机器,默认三份
HDFS2.x以后的block默认128M
- NameNode
1:存储文件的metadata,运行时所有数据都保存在内存,整个HDFS可存储的文件大小受限于NameNode的内存大小
2:一个Block在NameNode中对应一条记录(一般一个Block占用15字节),如果是大量的小文件,会消耗大量的内存,