Hadoop_常用存储与压缩格式
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>