概述
开始之前先看看其基本属性,HDFS(Hadoop Distributed File System)是GFS的开源实现。
特点如下:
- 能够运行在廉价机器上,硬件出错常态,需要具备高容错性
- 流式数据访问,而不是随机读写
- 面向大规模数据集,能够进行批处理、能够横向扩展
- 简单一致性模型,假定文件是一次写入、多次读取
缺点:
- 不支持低延迟数据访问
- 不适合大量小文件存储(因为每条元数据占用空间是一定的)
- 不支持并发写入,一个文件只能有一个写入者
- 不支持文件随机修改,仅支持追加写入
HDFS中的block、packet、chunk
介绍HDFS读写流程上来就直接从文件分块开始,其实,要把读写过程细节搞明白前,了解block、packet与chunk。下面分别讲述。
-
block
这个大家应该知道,文件上传前需要分块,这个块就是block,一般为128MB,当然你可以去改,不顾不推荐。因为块太小:寻址时间占比过高。块太大:Map任务数太少,作业执行速度变慢。它是最大的一个单位。 -
packet
packet是第二大的单位,它是client端向DataNode,或DataNode的PipLine之间传数据的基本单位,默认64KB。