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.WritableComparable的write方法,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分別被壓縮