Hadoop是什么?
狭义上来说,hadoop就是单独指代hadoop这个软件。
Hadoop Common:Hadoop 体系最底层的一个模块,是其他模块的基础设施。
Hadoop Distributed File System (HDFS™):Hadoop 分布式文件系统,是 Hadoop 的基石。负责存储数据。
Hadoop YARN:Hadoop 作业调度和资源管理框架。负责资源调度。
Hadoop MapReduce:Hadoop 基于 YARN 的大数据并行处理程序。负责计算
广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件
分布式文件系统架构
FS File System
文件系统是基于硬盘之上的一个文件管理的工具
我们用户操作文件系统可以和硬盘进行解耦
DFS Distributed File System:
分布式文件系统
将我们的数据存放在多台电脑上存储
分布式文件系统有很多,
HDFS是mapreduce计算的基础
文件切分思想;
文件存放在一个磁盘上效率肯定是低的
读取效率低
如果文件特别大会超出单机的存储范围
字节数组
文件在磁盘真实存储文件的抽象概念
数组可以进行拆分和组装,源文件不会受到影响
切分数据
对字节数组进行切分
拼接数据
按照数组的偏移量将数据连接到一起,将字节数组链接到一起
偏移量
当前数据在数组中的相对位置,你可以理解为 下标
数组都有对应的索引(下标),可以快速的定位数据
数据存储的原理:
不管文件的的大小,所有的文件都是由字节数组构成
如果我们要切分文件,就是将一个字节数组分成多份
我们将切分后的数据拼接到一起,数据可以继续使用
我们需要根据数据的偏移量将他们重新拼接到一起
然后说一说Block的拆分标准;
拆分的数据块需要等大
数据计算的时候简化问题的复杂度
进行分布式算法设计的时候,数据不统一,算法很难设计
数据拉取的时候时间相对一致
通过偏移量就知道这个块的位置
相同文件,分成的数据块大小应该相等
数据块 Block
数据被切分后的一个整体称之为块
在H1默认大小为64M,在H2及其以后默认大小为128M
同一个文件中,每个数据块大小要一致除了最后一个节点外
不同文件中,块的大小可以不一致
文件大小不同可以设置不同的块的数量
真实情况下,会根据文件大小和集群节点的数量综合考虑块的大小
数据块的个数 =Ceil( 文件大小 / 每个块的大小)
注意事项
HDFS中一旦文件被存储,数据不允许被修改
修改会影响偏移量
修改会导致数据倾斜
修改数据会导致蝴蝶效益
但是可以被追加,但是不推荐
追加设置需要手动打开
一般HDFS存储的都是历史数据。所以 将来Hadoop的mr都用来进行离线数据的处理
块的大小一旦文件上传之后就不允许被修改
128m -512M
如果数据文件的切割点128M整好是一个单词的中间部分,切分数据如何保证数据的完整性?