




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
章和1.基本組成PigMapReduceCoreChukwaHiveHbaseZooKeeperAvroHDFSHadoop-0.20.0以前Core----一系列分布式文件系統(tǒng)和通用I/O的組件和接口(序列化、JavaRPC和持久化數據結構)Avro----一種提供高效、跨語言PRC的數據序列化系統(tǒng),持久化數據存儲。分布式數據處理模式和執(zhí)行環(huán)境,運行于大型商用機集群;分布式文件系統(tǒng),運行于大型商用機集群;一個分布式的、高可用性的協(xié)調服務;Pig----一種數據流語言和運行環(huán)境,用以檢索非常大的數據集,運行在MapReduce和HDFS集群上;Chukwa------分布式數據收集和分析系統(tǒng);Hive---分布式數據倉庫,Hive管理HDFSSQL的查詢語言用以查詢數據;Hbase----HBase使用HDFS作為底層存儲,同時支持MapReduce的批量式計算和點查詢。2.MapReduce執(zhí)行作業(yè)流程①指定作業(yè)的各種參數;②指定輸入、輸出路徑;③指定Map和Reduce類;④指定Map和Reduce的輸出類型;⑤運行作業(yè)。第3章3-1文件讀取453-2文件寫入第4章的1.讀取存儲在HDFS上的文件時,為了加快速度可以禁用校驗和;2.文件的壓縮支持多種格式,比如zip、gzipbzip2等;3.序列化-----將結構化的對象轉為字節(jié)流以便于通過網絡進行傳輸或者寫入持久存儲的過程。反序列化------將字節(jié)流轉為一系列結構化對象的過程。Hadoop自己的序列化格式為,緊湊、快速,但不易擴展java以外的語言,MapReduce程序使用Writables來序列化key/value對。org.apach.hadoop.ioBooleanWritableDoubleWritableByteWritableIntWritable此外,short和char類型均可存儲在IntWritable中;4.文件的容器SequenceFile類和MapFile類,共同點是兩者都是按key排序的,區(qū)別是后者有索引。第5章1.配置文件和運行環(huán)境的選取,有本地環(huán)境、偽分布式環(huán)境、分布式集群環(huán)境三種運行模式,可以分別配置不同格式的xml文件以初始化一些基本環(huán)境參數;2.編寫完Mapper和Reducer在本地(是否是偽分布式還不確定)運行數據測試,然后再集群上測試;3.后期還涉及到一些調試、作業(yè)調優(yōu)等工作。一些復雜的任務都是由多個MapReduce作業(yè)分階段完成,至于工作流的調度還有待于優(yōu)化。第6章1.運行MapReduce作業(yè)的工作原理MapReduceJobTrackerJobClient程序客戶端節(jié)點JobTracker節(jié)點TasktrackerFileSystemChild流處理Tasktracker節(jié)點2.3.,FairSchedule4.Shffle和排序Map端可以通過調整內存緩沖區(qū)、屬性配置加快patition和針對每個分區(qū)的排序;reduce端類似5.任務的執(zhí)行推測式執(zhí)行,JVM重用,壞記錄的處理。map端詳細流程:第7章幾種MapReduce輸入輸出的類型:文本、二進制、數據庫等輸入文件:文件是MapReduce任務的數據的初始存儲地。正常情況下,輸入文件一般是存在HDFS里。這些文件的格式可以是任意的;我們可以使用基于行的很大數十G或更大。輸入格式:InputFormat類定義了如何分割和讀取輸入文件,它提供有下面的幾個功能:選擇作為輸入的文件或對象;定義把文件劃分到任務的InputSplits;為RecordReader讀取文件提供了一個工廠方法;Hadoop自帶了好幾個輸入格式。其中有一個抽象類叫FileInputFormat,所有操作文件的InputFormat類都是從它那里繼承功能和屬性。當開啟Hadoop作業(yè)時,FileInputFormat會得到一個路徑參數,這個路徑內包含了所需要處理的文件,FileInputFormat會讀取這個文件夾內的所有文件(譯注:默認不包括子文件InputSplit。你可以通過JobConf對象的方法來設定應用到你的作業(yè)輸入文件上的輸入格式。下表給出了一些標準的輸入格式:第一個tab字符前的所有行剩下的內容SequenceFileInputFormatHadoop定義的高性能用戶自定義二進制格式表4.1MapReduce提供的輸入格式默認的輸入格式是,它把輸入文件每一行作為單獨的一個TextInputFormat把整個文件行當做值數據,KeyValueInputFormat則是通過搜尋tab字符來把行拆分為鍵值對。這在把一個MapReduce的作業(yè)輸出作為下一個作業(yè)的輸入時顯得KeyValueInputFormat格式輸出數據。最后來講講SequenceFileInputFormat,它會讀取特殊的特定于HadoopHadoop的mapper快速讀取數據的特性。Sequence文件是塊壓縮的并提供了對幾種數據類型(不僅僅是文本Squence文件可以作為MapReduce任務的輸出數據,并且用它做一個MapReduce作業(yè)到另一個作業(yè)的中間數據是很高效的。InputSplitMapReduce程序中單個map任務的一個單元。把一個MapReduce程序應用到一個數據集上,即是指一個作業(yè),會由幾個(也可能幾百個)任務組成。Map任務可能會讀取整個文件,但一般是讀取文件的一部分。默認情況下,FileInputFormat及其子類會以64MB(與HDFS的BlockHadoop建議Split大小與此相同)為基數來拆分文件。你可以在0.20.*以后是在mapred-default.xmlmapred.min.split.size參數來控制MapReduce作業(yè)的JobConf對象中重寫這個參數。通過以塊形式處理文件,我們可以讓多個map任務并行的操作一個文件。如果Block)組成的文件可能會分散在集群內的好幾個節(jié)點上(譯注:事這種情況,你可以寫一個自定義的InputFormat,這樣你就可以控制你文件是如何被拆分(或不拆分)成文件塊的。自定義的文件格式在第五部分有描述。輸入格式定義了組成mapping階段的map任務列表,每一個任務對應一統(tǒng)節(jié)點上,可能會有多個map任務被分派到同一個節(jié)點上。任務分派好后,節(jié)點開始運行任務,嘗試去最大并行化執(zhí)行。節(jié)點上的最大任務并行數由mapred.tasktracker.map.tasks.maximum參數控制。記錄讀取器(RecordReader):InputSplit定義了如何切分工作,但是沒有描述如何去訪問它。RecordReader類則是實際的用來加載數據并把數據轉換為適合mapper讀取的鍵值對。RecordReader實例是由輸入格式定義的,默認的輸入格式,TextInputFormat,提供了一個LineRecordReader,文件中的字節(jié)偏移量。RecordReader會在輸入塊上被重復的調用直到整個輸RecordReader都會調用Mapper的方法。Mapper:Mapper執(zhí)行了MapReduce程序第一階段中有趣的用戶定義map()被送到Reducer那里。對于整個作業(yè)輸入部分的每一個map任務(輸入塊),每一個新的Mapper實例都會在單獨的Java進程中被初始化,mapper之間不能進行通信。這就使得每一個map任務的可靠性不受其它map任務的影響,只由本地機器的可靠性來決定。map()方法除了鍵值對外還會接收額外的兩個參數(譯注:在0.20.×后的版本,接口已變化,由Context對象代替這兩個參數):OutputCollector對象有一個叫的方法,它可以利用該方法把鍵值對送到作業(yè)的reduce階段。Reporter對象提供當前任務的信息,它的getInputSplit()方法會返回一個描述當前輸入塊的對象,并且還允許map任務提供關于系統(tǒng)執(zhí)行進setStatus()方法允許你生成一個反饋給用戶的狀態(tài)消息,incrCounter()方法允許你遞增共享的高性能計數器,除了默認的計數器mapper都可以遞增計數器,JobTracker會收集由不同處理得到的遞增數據并把它們聚集在一起以供作業(yè)結束后的讀取。Partition&:當第一個map任務完成后,節(jié)點可能還要繼續(xù)執(zhí)行更多的map任務,但這時候也開始把map任務的中間輸出交換到需要它們的reducermap輸出到reducer的過程叫做一個reduce合(被稱為“partitions是reduce任務的輸入數據。每一個map任務生成的鍵值對可能會隸屬于任意的partition,有著相同鍵的數值總是在一起被reduce,不管它是來自那個mapper的。因此,所有的map節(jié)點必須就把不同的中間數據發(fā)往何處達成一致。Partitioner類就是用來決定給定鍵值對的去向,默認的分類器(partitioner)會計算鍵的哈希值并基于這個結果來把鍵賦到相應的partition上,自定義的分類器在第五部分有詳細描述。reduce)關聯(lián)到相同鍵上的所有數值,每一個節(jié)點收到的中間鍵集合在被送到具體的reducer那里前就已經自動被Hadoop排序過了。歸約(Reduce):每個reduce任務都會創(chuàng)建一個Reducer實例,這是個已賦予到reducer的partitionreducer的reduce()方法只會未定義的順序返回關聯(lián)到同一個鍵的值。reducer也要接收一個OutputCollector和Report對象,它們像在方法中那樣被使用。輸出格式:提供給OutputCollector的鍵值對會被寫到輸出文件中,寫入的方式由輸出格式控制。OutputFormat的功能跟前面描述的InputFormat類很像,Hadoop提供的OutputFormat的實例會把文件寫在本地磁盤或HDFS上,它們都是繼承自公共的FileInputFormatreducer會把結果輸出寫在公共文件夾中一個單獨的文件內,這些文件的命名一般是part-nnnnnnnnnn是關聯(lián)到某個reduce任務的partition的id,輸出文件夾通過FileOutputFormat.setOutputPath()來設置。你可以通過具體MapReduce作業(yè)的JobConf對象的setOutputFormat()方法來設置具體用到的輸出格式。下表給出了已提供的輸出格式:默認的輸出格式,以"key\tvalue"的方式輸出行輸出二進制文件,適合于讀取為子MapReduce作業(yè)的輸入忽略收到的數據,即不做輸出NullOutputFormat表4.2:Hadoop提供的輸出格式Hadoop提供了一些OutputFormat實例用于寫入文件,基本的(默認的)實例是TextOutputFormat,它會以一行一個鍵值對的方式把數據寫入一個文本文件里。這樣后面的MapReduce任務就可以通過KeyValueInputFormat于在MapReduce作業(yè)間使用的中間格式,那就是SequenceFileOutputFormat,它可以快速的序列化任意的數據類型到文件中,而對應SequenceFileInputFormat則會把文件反序列化為相同的類型并提交為下一個Mapper的輸入數據,方式和前一個Reducer的生成方式一樣。NullOutputFormat不會生成輸出文件并丟棄任何通過OutputCollector傳遞給它的鍵值對,如果你在要reduce()方法中顯式的寫你自己的輸出文件并且不想Hadoop框架輸出額外的空輸出文件,那這個類是很有用的。RecordWriterInputFormat中通過RecordReader讀取單個記錄的實現很相似,OutputFormat類是RecordWriter對象的工廠方法,用來把單個的記錄寫到文件中,就像是OuputFormat直接寫入的一樣。Reducer輸出的文件會留在HDFS上供你的其它應用使用,比如另外一個MapReduce作業(yè),或一個給人工檢查的單獨程序。第8章聯(lián)接:MapReduce能夠在大型數據集之間進行聯(lián)接(join開始編寫代碼做聯(lián)接。每個節(jié)點,則聯(lián)接可以由一個MapReduce實現;將大數據集放在一起,用小數據集去檢索大數據集的元數據進行聯(lián)接。如果兩個數據集都很大,則可以使用map端聯(lián)接或者reduce端聯(lián)接來實現。map端聯(lián)接map端聯(lián)接是在數據到達map函數之前就執(zhí)行合并的,雖然對于每個map的輸起來像一個嚴格的要求,實際上MapReduce作業(yè)輸出的說明。也就是前期的數據排序如果是MapReduce做的,則是像符合的。InputFormat:Howthese
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030服裝服飾書籍行業(yè)市場發(fā)展分析及前景趨勢與投融資戰(zhàn)略研究報告
- 2025-2030數碼音響市場前景分析及投資策略與風險管理研究報告
- 2025-2030摩托車行業(yè)市場發(fā)展分析及發(fā)展前景與投資機會研究報告
- 2025-2030手機耳機行業(yè)市場發(fā)展現狀分析及競爭格局與投資價值研究報告
- 2025-2030年草酸磷市場市場現狀供需分析及投資評估規(guī)劃分析研究報告
- 精細化采購計劃編制與目標評估合同
- 人工智能財務擔保合同負債人工智能風險控制協(xié)議
- 城市綜合體戶外廣告位租賃合同
- 住宅小區(qū)健身房租賃合同范本及健身服務
- 成都市事業(yè)單位員工勞動合同離職補償合同
- 車庫贈送協(xié)議書范本
- 裝修續(xù)簽協(xié)議合同協(xié)議
- 生產管理-乳業(yè)生產工藝流程
- 2025年度幼兒園教師編制考試全真模擬試題及答案(共五套)
- 新媒體業(yè)務面試題及答案
- 食堂應急預案管理制度
- 中級財務會計-中級財務會計復習學習資料
- 免疫細胞療法在阿爾茨海默病中的應用-全面剖析
- 基于《山海經》神祇形象的青少年解壓文具設計研究
- 教育與美好人生知到智慧樹章節(jié)測試課后答案2024年秋鄭州師范學院
- 2025年新高考歷史預測模擬試卷黑吉遼蒙卷(含答案解析)
評論
0/150
提交評論