Hdfs文件存储格式
- 从实际操作上面,hadoop可以存储任何格式的数据
- hadoop处理最多的都是文本数据
- orc文件,parquet、avro文件
行式存储和列式存储
- 行式存储
- 同一行的数据存储在一起
- 场景
- select * 查询
- 写入性能高
- 更新操作
- 列式存储
- 同一列的数据存储在一起
- 场景
- 数据计算
- 按列查询(查询部分字段)
丰富的文件存储格式
- text文本
- 纯文本格式,行式存储
- 不支持块级别压缩
- 易读性好
- sequence file
- 序列化文件,以key、value键值对进行序列化存储
- 支持record、block级别压缩,支持文件切分
- 通常作为中间数据存储格式
- avro file
- 基于行存储,文件中包含json格式的schema定义
- 支持切分、块压缩
- 适合于大量频繁写入的宽表数据,序列化和反序列化的性能很好
- RCFile
- 支持压缩、切分
- 行、列存储结合
- 不支持schema扩展,如果需要增加新列,需重写文件
- ORCFile
- 支持多种压缩方式,可切分
- 支持schema扩展
- 以二进制方式存储,不可以直接读取
- parquet File
- 面向分析型业务的列式存储
- 由行组、列块、页组成,支持块压缩
- 以二进制形式存储
- arrow
- 跨语言格式,是一种列式内存数据结构
- 主要用于构建数据系统
- 促进多组件之间的通信,缩减了通信时序列化、反序列化的时间
文件压缩格式
- hadoop支持的压缩格式
-
defile
-
gzip
-
bzip2
- 支持文件切割
-
lzo
-
lz4
-
snappy
-
HDFS异构存储和存储策略
-
冷、热、温、冻数据
-
异构存储
- 根据数据的冷热分区,存储在不同的介质上面
-
内存,ssd,hdd,archive(高密度存储介质)
-
需要修改文件存储路径,设置存储介质类型
<property> <name>Dfs.datanode.data.dir</name> <value>[SSD]file:///path</value> </property> <!--SSD, DISK, ARCHIVE, RAM_DISK-->
-
块存储的类型选择策略
- 对hdfs的数据块副本存储
- 存储策略模式
- HOT
- 所有副本存储在DISK中
- 用于存储和计算
- COLD
- 仅适用于计算量有限的存储,不使用的 数据从热存储放到冷存储中,所有副本都是在archive
- WARM
- 部分冷、部分热数据
- 部分副本在DISK中,其余的在ARCHIVE中
- ALL_SSD
- 所有副本在SSD中
- ONE_SSD
- 一个副本存在SSD,其他的在DISK中
- LAZY_PERSIST
- 首先写入内存,后续延迟保存在DISK中
- HOT
- 设置存储策略