HDFS文件格式
file_format:
TEXTFILE 默认格式
RCFILE hive 0.6.0 和以后的版本
ORC hive 0.11.0 和以后的版本
PARQUET hive 0.13.0 和以后的版本,该数据格式企业中最常用
AVRO hive 0.14.0 和以后的版本
数据存储的方式
1. 按行存储 textfile
2. 按列存储 orc/parqurt
--orcfile
每列数据有类似于元数据的索引信息,可以确定列内容,需要某列信息时可以直接锁定列内容,效率优于按行存储
压缩出来的文件比例最小,以时间换存储
--parquet
比较复杂,支持嵌套数据结构和高效其种类丰富的算法(以应对不同值分布特征的压缩)
压缩率不如orcfile,时间与压缩比适中
压缩率
TEXTFILE(不压缩) RCFILE(14%) parquet(62%) orcfile(78%) 其中ORCFILE是RCFILE一个升级
常见的压缩技术
1. 压缩格式: bzip2,gzip,lzo,lz4,snappy等
2. 压缩比: bzip2>gzip>lzo bzip2最节省存储空间
3. 解压速度: lzo>gzip>bzip2 lzo解压速度最快
4. mapreduce
--> input --> map --> shuffle --> reduce --> output
--> shuffle
--> map shuffle
--> spill
--> partition: 决定map的输出交给那个reduce处理
--> sort: 两种方式,WritableComparable/Comparable
--> combiner: map端的reduce
--> 压缩
--> reduece shuffle
-->merger
--> 分组: 将相同key的value进行合并
5. hadoop中的压缩
--> 减少网络IO
--> 减少了磁盘IO存储
--> 注意压缩必须有可分割性(在map输出经过shuffle到reduce时需要解压缩,保证单个数据还可以被解压)
--> hadoop支持的压缩格式:zlib/gzip/bzip2/lzo/lz4/snappy
6. hadoop中编译snappy压缩
--> Linux安装snappy库
--> 下载hadoop-snappy-master.zip 编译生成支持hadoop的snappy.so
--> 将生成的jar包放到hadoop目录下的lib
--> 添加配置文件
core-site.xml
<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec
</value>
</property>