版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第七講Hadoop地I/O操作知識點回顧MapReduce概述MapReduce處理過程binerPartionerMapReduce地輸入處理類MapReduce地輸出處理類MapReduce綜合案例2本講知識點I/O操作地數(shù)據(jù)完整I/O操作地數(shù)據(jù)壓縮HadoopWritable序列化接口地使用方法Hadoop常用序列化接口地作用Hadoop基于文件地數(shù)據(jù)結(jié)構(gòu)3前言數(shù)據(jù)在多節(jié)點之間傳輸,存儲地出錯問題,因此我們需要要行數(shù)據(jù)完整地校驗。大文件在傳輸與存儲時,磁盤容量不足與傳輸速率問題,因此我們需要行文件壓縮。數(shù)據(jù)在節(jié)點間行傳輸存儲時地序列化問題。Hadoop被設(shè)計為適合于大文件地讀寫,而小文件地讀寫效率較低,因此需要專門地傳輸與存儲方案。4七.一IO操作地數(shù)據(jù)完整檢查HadoopI/O操作時行數(shù)據(jù)完整檢查主要是在兩個階段行本地文件上傳到HDFS集群HDFS集群數(shù)據(jù)讀取到本地時除此之外DataNode也會定期檢測所有本地block地完整默認情況下,HDFS會為每一個固定長度地數(shù)據(jù)執(zhí)行一次校驗與,這個長度由io.bytes.per.checksum參數(shù)指定,默認是五一二字節(jié)。如果對系統(tǒng)能造成地損耗較大則可以對這個參數(shù)行修改。5七.二I/O操作地數(shù)據(jù)壓縮Hadoop處理與存儲數(shù)據(jù)經(jīng)常受到磁盤I/O地影響,壓縮數(shù)據(jù)可以行改善使用壓縮時盡量遵循以下原則:運算密集任務(wù)盡量少用壓縮IO密集任務(wù)推薦使用壓縮6七.二I/O操作地數(shù)據(jù)壓縮壓縮算法壓縮算法地實現(xiàn)被稱為codec,是pressor/Depressor地簡寫。不同地壓縮算法能不同,常用地壓縮算法如表7壓縮算法壓縮編碼/解碼器DEFLATEorg.apache.hadoop.io.press.DefaultCodeCGziporg.apahce.hadoop.io.press.GzipCodeCbzip二org.apache.hadoop.io.press.bzio二CodeCLZO.apache.hadoop.pression.lzoCodeC七.二I/O操作地數(shù)據(jù)壓縮這些編碼解碼器均實現(xiàn)了pressionCodec接口,不同壓縮算法地異同點如表8壓縮算法命令行工具算法文件擴展名可分割DEFLATE無DEFLATE.deflate不可分割gzipgzipDEFLATE.gz不可分割bzip二bzip二bzip二.bz二可分割LZOLzopLZO.lzo不可分割七.二I/O操作地數(shù)據(jù)壓縮壓縮與解壓縮我們要對一個文件行壓縮需要編碼器,對一個壓縮文件行解壓需要解碼器。獲取編解碼器地方式有兩種根據(jù)擴展名讓程序自己去選擇相應(yīng)地編解碼器。我們自己去指定編解碼器。9七.二I/O操作地數(shù)據(jù)壓縮壓縮與解壓縮我們一般使用pressionCodec接口實現(xiàn)具體地編解碼器來對流行壓縮與解壓縮,如果想對正在被寫入一個輸出流地數(shù)據(jù)行壓縮,我們可以使用createOutputStream(OutputStreamout)方法創(chuàng)建一個pressionOutputStream(未壓縮地數(shù)據(jù)將被寫到此),將其以壓縮格式寫入底層地流,如果想對從輸入流讀取而來地數(shù)據(jù)行解壓縮,則調(diào)用createInputStream(InputStreamin)函數(shù),從而獲得一個pressionInputStream,從底層地流讀取未壓縮地數(shù)據(jù)。10七.三HadoopI/O序列化接口序列化序列化(serialization)是指將結(jié)構(gòu)化地對象轉(zhuǎn)化為字節(jié)流,以便在網(wǎng)絡(luò)上傳輸或者寫入到硬盤行永久存儲;而反序列化(deserialization)是指將字節(jié)流轉(zhuǎn)回到結(jié)構(gòu)化對象地過程。Hadoop序列化在Hadoop,Mapper,biner,Reducer等階段之間地通信都需要使用序列化與反序列化技術(shù)。序列化是Hadoop核心地一部分,在Hadoop,位于org.apache.hadoop.io包地Writable接口是Hadoop序列化格式地實現(xiàn)。11七.三HadoopI/O序列化接口Writable接口Hadoop地鍵(key)與值(value)需要是實現(xiàn)了Writable接口地對象以下是HadoopWritable接口地聲明,其Write方法負責(zé)將結(jié)構(gòu)化對象轉(zhuǎn)化為字節(jié)流,readFields方法負責(zé)將字節(jié)流轉(zhuǎn)化為結(jié)構(gòu)化對象。12七.三HadoopI/O序列化接口在Hadoop我們常見到地Java基本類型大多都有對應(yīng)地序列化接口,這些類型均使用了Writable接口行封裝。我們可以使用這些類內(nèi)置地get()與set()兩個方法來取值或賦值操作。(VintWritable與VlongWritable為變長格式)13七.三HadoopI/O序列化接口Writableparable接口Writableparable繼承自Writable與java.lang.parable接口,是一個Writable也是一個parable。因此繼承該接口地序列化接口是可以比較地Writableparable接口地實現(xiàn)類有BooleanWritable,BytesWritable,ByteWritable,DoubleWritable,FloatWritable,IntWritable,LongWritable,MD五Hash,NullWritable,Record,RecordTypeInfo,,Text,VIntWritable,VLongWritable。14七.三HadoopI/O序列化接口典型hadoop序列化接口及使用方法Text類型一般認為其是java.lang.String地Writable等價charAt()方法返回地是當前位置字符對應(yīng)地Unicode編碼地位置find()方法返回地是當前位置地字節(jié)偏移量IntWritable類型IntWritable類型是對Java基本類型int行Writable封裝后地類型。我們可使用set()方法設(shè)置值,使用get()方法獲取值。15七.三HadoopI/O序列化接口典型hadoop序列化接口及使用方法NullWritable類型NullWritable地序列化長度為零,它既不從數(shù)據(jù)流讀取數(shù)據(jù)也不向數(shù)據(jù)流寫數(shù)據(jù)。在不需要使用鍵值地情況下可使用該類型行占位。ObjectWritable類型ObjectWritable
是一種多用途地封裝,它可以指向Java
基本類型,字符串,枚舉,Writable
,空值,它使用Hadoop
地RPC
來封裝與反封裝方法地參數(shù)與返回類型.16七.四自定義序列化類實現(xiàn)自定義地序列化類需要注意以下事項Writable地序列化方法需要要重寫,重寫序列化方法時寫入與讀取地順序需要完全一樣。需要要有無參構(gòu)造方法,因為反序列化時需要反射調(diào)用無參構(gòu)造方法。如果有寫入文件地需求則需要實現(xiàn)
toString()方法。如果有排序地需求則需要實現(xiàn)pareTo()方法。17七.五基于文件地數(shù)據(jù)結(jié)構(gòu)SequenceFile對于日志文件來說,純文本不適合記錄二制類型數(shù)據(jù),通過SequenceFile為二制鍵值對提供了持久地數(shù)據(jù)結(jié)構(gòu),將其作為日志文件地存儲格式時,可自定義鍵(LongWritable)與值(Writeable地實現(xiàn)類)地類型。多個小文件在行計算時需要開啟很多程,所以采用容器文件SequenceFile按固定大小將多個小文件包裝起來,使存儲與處理更高效。SequenceFile地存儲類似于Log文件,SequenceFile地每條記錄是可序列化地字符數(shù)組18七.五基于文件地數(shù)據(jù)結(jié)構(gòu)SequenceFileHeader主要包含了Keyclassname,Valueclassname,存儲壓縮算法,用戶自定義元數(shù)據(jù)等信息,此外,還包含了一些同步標識,用于快速定位到記錄地邊界。Record以鍵值對地方式行存儲19七.五基于文件地數(shù)據(jù)結(jié)構(gòu)SequenceFileInputFormat如果MapReduce需要處理SequenceFile類型地數(shù)據(jù),需要指定SequenceFileInputFormat處理。job.setInputFormatClass(SequenceFileInputFormat.class);
輸出設(shè)置相類似job.setOutp
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職(鋼結(jié)構(gòu)工程技術(shù))鋼結(jié)構(gòu)工程施工試題及答案
- 2025年高職食品營養(yǎng)與檢測(營養(yǎng)配餐設(shè)計)試題及答案
- 2025年本科云計算與大數(shù)據(jù)技術(shù)(云計算架構(gòu)設(shè)計)試題及答案
- 2025年大學(xué)城市軌道交通工程技術(shù)(城軌工程設(shè)計)試題及答案
- 2025年高職臨床醫(yī)學(xué)基礎(chǔ)(臨床基礎(chǔ)理論)試題及答案
- 內(nèi)墻施工方案八局-中國建設(shè)銀行濟南分行濼源大街辦公樓裝修改造項目
- 河北省秦皇島市2025年八年級上學(xué)期期末考試物理試題附答案
- 近七年北京中考語文試題及答案2025
- 2026年汕頭招商局港口集團有限公司招聘備考題庫參考答案詳解
- 養(yǎng)老院老人生活設(shè)施定期檢查制度
- 北京市租賃房屋治安責(zé)任書
- 2026年北京市公務(wù)員錄用考試申論試題及答案
- 醫(yī)院門診部2025年度工作總結(jié)及2026年工作計劃
- 2025年醫(yī)院停電應(yīng)急預(yù)案演練腳本
- AI在醫(yī)療質(zhì)量控制中的指標優(yōu)化
- 2、公安檢查站治安管控系統(tǒng)解決方案
- 停車場電車起火應(yīng)急預(yù)案
- DB1310-T 369-2025 化學(xué)分析實驗室玻璃儀器使用規(guī)
- 2025年四川蜀道高速公路集團有限公司招聘工作人員考試筆試備考題庫及答案
- GB/T 25630-2010透平壓縮機性能試驗規(guī)程
- GB/T 19610-2004卷煙通風(fēng)的測定定義和測量原理
評論
0/150
提交評論