您好,登錄后才能下訂單哦!
Hadoop的I/O 操作是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
檢測數據是否損壞
在數據第一次引入系統時計算校驗和并在數據通過一個不可靠的通道進行傳輸時再次計算校驗和
校驗和也是可能損壞的
錯誤檢測碼CRC-32 HDFS 使用的是一個更有效的變體CRC-32C
HDFS 的數據完整性
對寫入的所有數據計算校驗和,并在讀取數據時驗證校驗和
hadoop fs -checksum 檢查一個文件的校驗和
LocalFileSystem 執行客戶端的校驗和驗證
ChecksumFileSystem
優勢:減少存儲文件所需要的磁盤空間,并加速數據在網絡和磁盤上的傳輸
壓縮格式 | 工具 | 算法 | 文件擴展名 | 是否可切分 |
---|---|---|---|---|
DEFLATE | 無 | DEFLATE | .deflate | 否 |
gzip | gzip | DEFLATE | .gz | 否 |
bzip2 | bzip2 | bzip2 | .bz2 | 是 |
LZO | lzop | LZO | .lzo | 否 |
LZ4 | 無 | LZ$ | .lz4 | 否 |
Snappy | 無 | Snappy | .snappy | 否 |
所有壓縮算法都需要權衡空間/時間
bzip2的壓縮能力強于gzip,但速度慢
codec
壓縮格式 | HadoopCompressionCodeC |
---|---|
gzip | org.apache.hadoop.io.compress.GzipCodeC |
bzip2 | org.apache.hadoop.io.compress.BZip2Codec |
最好使用原生類庫,而不是Java實現
大量壓縮和解壓縮,可以考慮使用CodecPool
壓縮和輸入分片
在MapReduce 中使用壓縮
public static void main(String[] args) throws Exception { if (args.length != 2) { System.err.println("Usage: MaxTemperatureWithCompression <input path> <output path>"); System.exit(-1); } Job job = new Job(); job.setJarByClass(MaxTemperature.class); job.setJobName("Max Temperature"); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileOutputFormat.setCompressOutput(job, true); FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class); job.setMapperClass(MaxTemperatureMapper.class); job.setCombinerClass(MaxTemperatureReducer.class); //減少 map 跟reducer 之間的數據傳輸 job.setReducerClass(MaxTemperatureReducer.class); System.exit(job.waitForCompletion(true) ? 0 : 1); }
對map任務輸出進行壓縮
定義:序列化是指將結構化對象轉化為字節流以便在網絡上傳輸或寫到磁盤進行永久存儲的過程,反序列化是指將字節流轉回結構化對象的逆過程
序列化用于分布式數據處理的兩大領域:進程間通信和永久存儲
Writable 接口
void write(DataOutput out) throws IOException; void readFields(DataInput in) throws IOException;
IntWritable
WritableComparable
org.apache.hadoop.io
VIntWritable VLongWritable (變長格式會更節省空間)
Text 最大2GB
關于SequenceFile
適合二進制類型的數據
hadoop fs -text numbers.seq|head
關于MapFile
MapFile 是已經排過序的SequenceFile,它有索引,所以可以按鍵查找。索引自身就是一個SequenceFile,包含了map中的一小部分健
Avro 數據文件
以上幾個都是面向行的數據格式,還有面向列的格式 RCFile
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。