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>