Hadoop的IO操做

Hadoop的API官網:http://hadoop.apache.org/common/docs/current/api/index.html
 
相關的包
org.apache.hadoop.io
org.apache.hadoop.io.compress
org.apache.hadoop.io.file.tfile
org.apache.hadoop.io.serializer.arvo
 
Apache官網的sort900實驗用了900臺主機
淘寶用了1500臺主機來存儲數據。
Hadoop採用CRC-32來校驗數據。
 
數據完整性:
1:本地文件的IO檢查
校驗和機制的相關的類:org.apache.hadoop.fs.ChecksumFileSystem來讀取相關的類
禁用校驗和機制:修改src/core/core-default.xml中的fs.file.impl的值爲org.apache.hadoop.fs.RawLocalFileSystem
 
 
2:HDFS的文件IO檢查
(1)datanode接收數據後存儲數據前
(2)客戶端讀取datanode上的數據時
(3)datanode後臺守護進程的按期檢測
 
3:數據恢復策略
(1)檢查已恢復標籤
(2)統計各個備份數據的恢復狀態
(3)副本同步
hadoop fs -get [ignoreCrc]  [-crc] <src>  <localdst>
 
數據壓縮:
1:減小存儲空間
2:加快傳送速度
org.apache.hadoop.io.compress包
代碼以下:
conf.setBoolen("mapred.compress.map.output",true)
conf.setBoolen("mapred.output.compress",true)
conf.setBoolen("mapred.output.compression.type","Block")
conf.setClass("mapred.output.compression.codec",GzipCodec.class,CompressionCodec.class)
 
數據序列化
(1)進程間通訊
(2)數據持久化存儲
 
 
org.apache.hadoop.io.Writable類java.lang.Comparable   
 
1.Writable類定義了兩個方法:
序列化輸出數據流:   void     write(Dataoutput out)   throw       IOException
反序列化輸入數據流:void    readFields(Datainput in)throw   IOException
 
2.Comparable類定義了三個方法:
comparreTo方法,hashCode方法,equals方法
 
3.WritableComparablewrite方法,readFields方法,comparreTo方法, hashCode方法, equals方法
 
                                       
java.util.Comparator                            
Comparator類的compare方法
RawComparator類
WritableComparator
 
 

NullWritablehtml

ByteWritable和BytesWritable
 

ObjectWritablejava

ArraryWritable和TwoDArraryWritable
Text
MapWritable和sortedMapWritable
CompressedWritable
GenericWritable
VesiondWritable
 
針對Hadoop的文件類
SequenceFile類和MapFile類
SequenceFile類記錄的是key-value對,是序列化後的二進制文件
有三種類型結構:
1:未壓縮的key-value對
2:記錄壓縮的key-value對,只有value被壓縮
3:block 壓縮的key-value對,key和value分別被壓縮
相關文章
相關標籤/搜索