大數(shù)據(jù)及MapReduce編程模型94.ppt_第1頁
大數(shù)據(jù)及MapReduce編程模型94.ppt_第2頁
大數(shù)據(jù)及MapReduce編程模型94.ppt_第3頁
大數(shù)據(jù)及MapReduce編程模型94.ppt_第4頁
大數(shù)據(jù)及MapReduce編程模型94.ppt_第5頁
已閱讀5頁,還剩89頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Hust_ 2014年 8 月,大數(shù)據(jù)及其并行編程模型概述,主 要 內(nèi) 容,一、大數(shù)據(jù)概述 二、應(yīng)對(duì)大數(shù)據(jù)的系統(tǒng)思維 三、MapReduce 并行編程詳解,2,注:本課件前30頁P(yáng)PT來源于國(guó)防科大 李東升教授:“大數(shù)據(jù)時(shí)代的挑戰(zhàn)和探索”,互聯(lián)網(wǎng)應(yīng)用數(shù)據(jù)急劇增長(zhǎng) 互聯(lián)網(wǎng)用戶數(shù)量巨大,日益活躍 微博、論壇、電子商務(wù)網(wǎng)站等 互聯(lián)網(wǎng)上的用戶生成數(shù)據(jù)(User Generated Content, UGC) 淘寶網(wǎng)每天新增數(shù)據(jù)40TB以上 百度每天處理10PB量級(jí)的數(shù)據(jù), 總數(shù)據(jù)量達(dá)1000PB,應(yīng)用背景,注:本課件前30頁P(yáng)PT來源于國(guó)防科大 李東升教授:“大數(shù)據(jù)時(shí)代的挑戰(zhàn)

2、和探索”,一、大數(shù)據(jù)概述, 隨著信息化的推進(jìn),國(guó)民經(jīng)濟(jì)、國(guó)家安全 等領(lǐng)域的數(shù)據(jù)不斷增長(zhǎng) 物聯(lián)網(wǎng)、移動(dòng)通信電話、手機(jī)短信、語音數(shù)據(jù) 遙感、公共安全、醫(yī)療、交通、情報(bào)等很多領(lǐng)域 高分辨率衛(wèi)星(影像)、城市監(jiān)控?cái)z像頭(視頻)、 據(jù)報(bào)道,武漢監(jiān)控?cái)z像頭已超過25萬個(gè),如采用1080P高清攝 像頭(一天產(chǎn)生數(shù)據(jù)量40GB以上),整個(gè)城市每天新增監(jiān)控 數(shù)據(jù)10PB以上,應(yīng)用背景, 科學(xué)實(shí)驗(yàn)數(shù)據(jù)規(guī)模巨大,增長(zhǎng)迅猛 生物工程 氣候監(jiān)測(cè) 高能物理 天文觀測(cè) 生態(tài)環(huán)境 .,氣候研究,華大基因測(cè)序目 前每天產(chǎn)生數(shù)據(jù) 約15TB,一年超 過5PB一,歐洲CERN對(duì)撞 機(jī)每年產(chǎn)生的數(shù) 據(jù)量超過15 PB,基因測(cè)序,應(yīng)用

3、背景,全 球 數(shù) 據(jù) 量, IDC報(bào)告預(yù)測(cè):未來 十年,全球數(shù)據(jù)量繼 續(xù)迅速增長(zhǎng),Amount of digital information created and replicated in a year, ,年均增長(zhǎng)率超過40% 2009年0.8ZB 2020年35ZB 1 ZB 106PB 月球,容量4GB的DVD光 用容量4GB的DVD光盤存儲(chǔ),DVD可從地球排至月球,G-T-P-E-Z-Y, 維基(Wiki)百科的定義 Big data is a collection of data sets so large and complex that it becomes difficul

4、t to process using on-hand database management tools IDC的定義 Big data technologies describe a new generation of technologies and architectures, designed to economically extract value from very large volumes of a wide variety of data, by enabling high-velocity capture, discovery, and/or analysis.,什么是大

5、數(shù)據(jù),大數(shù)據(jù)是超大、復(fù)雜的數(shù)據(jù)集,現(xiàn)有的數(shù)據(jù)庫管理技術(shù)難以應(yīng)對(duì),大數(shù)據(jù)技術(shù)描述了新一代的技術(shù)和架構(gòu),通過高速的數(shù)據(jù)獲取、發(fā)現(xiàn)和分析技術(shù),以經(jīng)濟(jì)的方式從各種超大規(guī)模的數(shù)據(jù)中提取價(jià)值,一、大數(shù)據(jù)概述, Volume:規(guī)模大 從PB級(jí)到ZB級(jí) 1 ZB 106* PB Variety:多樣化 結(jié)構(gòu)化、非結(jié)構(gòu)化 文本、圖像、視頻等 Velocity:變化快 批處理/離線數(shù)據(jù)、流/實(shí)時(shí)/在線數(shù)據(jù)等 Value/ Veracity:價(jià)值稀疏 /數(shù)據(jù)質(zhì)量 噪音和無用信息很多,一、大數(shù)據(jù)概述,大數(shù)據(jù)的特點(diǎn), 大數(shù)據(jù)技術(shù)對(duì)經(jīng)濟(jì)社會(huì)和科研都在產(chǎn)生重 要影響 互聯(lián)網(wǎng)產(chǎn)業(yè)、電子商務(wù)推薦、日常生活,大數(shù)據(jù)的影響,季節(jié)性

6、流感是一個(gè)重要的公共衛(wèi)生問題:WHO估計(jì), 全球每年25萬至50萬人因此死亡 及時(shí)監(jiān)測(cè)到疾病的傳播情況,盡快采取應(yīng)對(duì)措施 2008年,Google通過處理網(wǎng)絡(luò)搜索日志中的幾千億查詢數(shù)據(jù),訓(xùn)練建立流感疾病監(jiān)測(cè)的數(shù)學(xué)模型,比美國(guó)病控制和預(yù)防中心提前1-2周給出流感的傳播情況 論文發(fā)表在Nature (2009.2): Detecting Influenza Epidemics using Search Engine Query Data, 大數(shù)據(jù)技術(shù)對(duì)經(jīng)濟(jì)社會(huì)和科研都在產(chǎn)生重 要影響 科學(xué)研究,三種科研模式:理論、實(shí)驗(yàn)、計(jì)算 第四模式:數(shù)據(jù)密集型的科學(xué)發(fā)現(xiàn) 圖靈獎(jiǎng)獲得者Jim Gray 2007年

7、提出 專輯:Nature (2008.9): ”Big Data”, Science (2011.2): ”Dealing with data”,大數(shù)據(jù)的影響, 2012年3月29日,美國(guó)政府宣布投資2億 美元啟動(dòng)“大數(shù)據(jù)研發(fā)計(jì)劃” ( Big Data R reduce(String output_key, Iterator intermediate_values): / output_key: a word / output_values: a list of counts int result = 0; for each v in intermediate_values: result

8、+= ParseInt(v); Emit(AsString(result);,其他示例,分布式檢索 map函數(shù)挑選出滿足特定模式的行,并將其組裝成元組輸出。 reduce函數(shù)是一個(gè)簡(jiǎn)單的確認(rèn)函數(shù),它完成的工作僅僅是將中間元組拷貝到輸出中。 計(jì)算URL訪問頻率 map函數(shù)處理web網(wǎng)頁的訪問日志,并輸出。 reduce函數(shù)將每個(gè)URL的訪問次數(shù)加起來,輸出,其他示例,翻轉(zhuǎn)web-link圖 在每個(gè)作為源的頁面中,檢查其連接URL,并逐個(gè)輸出元組。 reduce函數(shù)將連接到每個(gè)target的所有source組合起來,形成list列表,輸出 每個(gè)站點(diǎn)的術(shù)語向量 術(shù)語向量表示出在一篇文章中或者一組文章

9、中最重要的單詞,通常以元組的方式。 map函數(shù)輸出每個(gè)文章的 (hostname通過文章的URL分析得到)。 reduce函數(shù)取出不常用的術(shù)語,將其余的相加,得到最終的對(duì),其他示例,倒排索引 map函數(shù)分析每個(gè)文檔,然后產(chǎn)生一個(gè)(詞,文檔號(hào))對(duì)的序列.reduce函數(shù)接受一個(gè)給定詞的所有對(duì),排序相應(yīng)的文檔IDs,并且產(chǎn)生一個(gè)(詞,文檔ID列表)對(duì).所有的輸出對(duì)集形成一個(gè)簡(jiǎn)單的倒排索引 分布式排序 map函數(shù)從每個(gè)記錄提取key,并且產(chǎn)生一個(gè)(key,record)對(duì).reduce函數(shù)不改變?nèi)魏蔚膶?duì).,“實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)”,實(shí)踐證明,MapReduce是出色的分布式計(jì)算模型 Google

10、宣布,其對(duì)分布于1000臺(tái)計(jì)算機(jī)上的1TB數(shù)據(jù)進(jìn)行排序僅僅需要68s 對(duì)4000臺(tái)計(jì)算機(jī)上的1PB數(shù)據(jù)進(jìn)行排序處理僅需要6小時(shí)2分鐘(每次測(cè)試至少會(huì)損壞1塊硬盤) 在08年1月份,Google MapReduce平均每天的數(shù)據(jù)處理量是20PB,相當(dāng)于美國(guó)國(guó)會(huì)圖書館當(dāng)年5月份存檔網(wǎng)絡(luò)數(shù)據(jù)的240倍,Hadoop上的MapReduce,job: 是客戶端程序想要完成的一系列工作的集合。包括輸入數(shù)據(jù),MapReduce程序和配置信息。 task: Hadoop將job分解為tasks 有兩種類型的task: map task和reduce task jobtracker和tasktracker: 用

11、來控制job執(zhí)行的 tasktracker運(yùn)行task,并向jobtracker報(bào)告進(jìn)度信息 jobtracker記錄下每一個(gè)job的進(jìn)度信息,如果一個(gè)task失敗,jobtracker會(huì)將其重新調(diào)度到另外的tasktracker上。,Hadoop-MapReduce工作原理,Hadoop Streaming and Pipes,Hadoop流 允許用Java以外的語言來編寫Map和Reduce函數(shù) Hadoop管道 C+接口,流和管道及子進(jìn)程的關(guān)系,進(jìn)度和狀態(tài)更新,Hadoop-MapReduce,Mapper public static class *Mapper extends Mapp

12、er Reducer public static class *Reducer extends educer Driver Package org.apache.hadoop.mapreduce.Job; org.apache.hadoop.mapreduce.Mapper; org.apache.hadoop.mapreduce.Reducer;,接口描述,public interface Mapper extends JobConfigurable, Closeable void map(K1 key, V1 value, OutputCollector output, Reporter

13、reporter) throws IOException; public interface Reducer extends JobConfigurable, Closeable void reduce(K2 key, Iterator values, OutputCollector output, Reporter reporter) throws IOException; ,Mapper,public static class Map extends Mapper private final static IntWritable one = new IntWritable(1); priv

14、ate Text word = new Text(); public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens() word.set(tokenizer.nextToken(); context.write(wo

15、rd, one); ,Reducer,public static class Reduce extends Reducer public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException int sum = 0; for (IntWritable val : values) sum += val.get(); context.write(key, new IntWritable(sum); ,Driver,public static void main

16、(String args) throws Exception Configuration conf = new Configuration(); Job job = new Job(conf, wordcount); job.setJarByClass(WordCount.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); job.setMapperClass(Map.class); job.setReducerClass(Reduce.class); job.setInp

17、utFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); FileInputFormat.addInputPath(job, new Path(args0); FileOutputFormat.setOutputPath(job, new Path(args1); job.waitForCompletion(true); ,Input Files,輸入文件一般 保存在HDFS中 文件的類型不固定,可能是文本的,也有可能是其它形式的文件 文件經(jīng)常很大,甚至有幾十個(gè)GB Input

18、會(huì)被分成input split,split由record 組成。map處理每一個(gè)record,并且返回key和value的對(duì) MapReduce程序并不需要直接處理InputSplit,由InputFormat創(chuàng)建的,InputSplits,InputSplit定義了輸入到單個(gè)Map任務(wù)的輸入數(shù)據(jù) InputSplit將文件分為64MB的大小 hadoop-site.xml中的mapred.min.split.size參數(shù)控制這個(gè)大小 mapred.tasktracker.map.taks.maximum用來控制某一個(gè)節(jié)點(diǎn)上所有map任務(wù)的最大數(shù)目,RecordReader,InputSpli

19、t定義了一項(xiàng)工作的大小,但是沒有定義如何讀取數(shù)據(jù) RecordReader實(shí)際上定義了如何從數(shù)據(jù)上轉(zhuǎn)化為一個(gè)(key,value)對(duì),從而輸出到Mapper類中 TextInputFormat提供了LineRecordReader,InputFormat,定義了這些文件如何分割,讀取 InputFile提供了以下一些功能 選擇文件或者其它對(duì)象,用來作為輸入 定義InputSplits,將一個(gè)文件分開成為任務(wù) 為RecordReader提供一個(gè)工廠,用來讀取這個(gè)文件 有一個(gè)抽象的類FileInputFormat,所有的輸入格式類都從這個(gè)類繼承這個(gè)類的功能以及特性。當(dāng)啟動(dòng)一個(gè)Hadoop任務(wù)的時(shí)候

20、,一個(gè)輸入文件所在的目錄被輸入到FileInputFormat對(duì)象中。FileInputFormat從這個(gè)目錄中讀取所有文件。然后FileInputFormat將這些文件分割為一個(gè)或者多個(gè)InputSplits。 通過在JobConf對(duì)象上設(shè)置JobConf.setInputFormat設(shè)置文件輸入的格式,預(yù)定義的文件輸入格式,各種InputFormat,TextInputFormat,默認(rèn)的格式,每一行是一個(gè)單獨(dú)的記錄,并且作為value,文件的偏移值作為key KeyValueInputFormat,這個(gè)格式每一行也是一個(gè)單獨(dú)的記錄,但是Key和Value用Tab隔開,是默認(rèn)的Output

21、Format,可以作為中間結(jié)果,作為下一步MapReduce的輸入。 SequenceFileInputFormat 基于塊進(jìn)行壓縮的格式 對(duì)于幾種類型數(shù)據(jù)的序列化和反序列化操作 用來將數(shù)據(jù)快速讀取到Mapper類中,Writable接口,Hadoop使用Writable做序列化 定義了兩個(gè)方法 二進(jìn)制寫入DataOutput流 二進(jìn)制讀取DataInput流 Hadoop自帶一系列Writable實(shí)現(xiàn),可以滿足絕大多數(shù)需要 可以自定義Writable,控制二進(jìn)制表示和排序,實(shí)現(xiàn)Writable接口的例子,publicclassMyWritableimplementsWritable /Som

22、edata privateintcounter; privatelongtimestamp; publicvoidwrite(DataOutputout)throwsIOException out.writeInt(counter); out.writeLong(timestamp); publicvoidreadFields(DataInputin)throwsIOException counter=in.readInt(); timestamp=in.readLong(); publicstaticMyWritableread(DataInputin)throwsIOException M

23、yWritablew=newMyWritable(); w.readFields(in); returnw; ,Writable的Java基本封裝,Mapper,每一個(gè)Mapper類的實(shí)例生成了一個(gè)Java進(jìn)程(在某一個(gè)InputSplit上執(zhí)行) 有兩個(gè)額外的參數(shù)OutputCollector以及Reporter,前者用來收集中間結(jié)果,后者用來獲得環(huán)境參數(shù)以及設(shè)置當(dāng)前執(zhí)行的狀態(tài)。 現(xiàn)在用Mapper.Context提供給每一個(gè)Mapper函數(shù),用來提供上面兩個(gè)對(duì)象的功能 數(shù)據(jù)壓縮,Partition 是在本地執(zhí)行的一個(gè)Reducer,滿足一定的條件才能夠執(zhí)行。,Sort,傳輸?shù)矫恳粋€(gè)節(jié)點(diǎn)上的

24、所有的Reduce函數(shù)接收到得Key,value對(duì)會(huì)被Hadoop自動(dòng)排序(即Map生成的結(jié)果傳送到某一個(gè)節(jié)點(diǎn)的時(shí)候,會(huì)被自動(dòng)排序),Reduce,做用戶定義的Reduce操作 接收到一個(gè)OutputCollector的類作為輸出,OutputFormat,寫入到HDFS的所有OutputFormat都繼承自FileOutputFormat 每一個(gè)Reducer都寫一個(gè)文件到一個(gè)共同的輸出目錄,文件名是part-nnnnn,其中nnnnn是與每一個(gè)reducer相關(guān)的一個(gè)號(hào)(partition id) JobConf.setOutputFormat() RecordWriter 用來指導(dǎo)如何輸

25、出一個(gè)記錄到文件中,Output Format,容錯(cuò),由Hadoop系統(tǒng)自己解決 主要方法是將失敗的任務(wù)進(jìn)行再次執(zhí)行 TaskTracker會(huì)把狀態(tài)信息匯報(bào)給JobTracker,最終由JobTracker決定重新執(zhí)行哪一個(gè)任務(wù) 為了加快執(zhí)行的速度,Hadoop也會(huì)自動(dòng)重復(fù)執(zhí)行同一個(gè)任務(wù),以最先執(zhí)行成功的為準(zhǔn) mapred.map.tasks.speculative.execution mapred.reduce.tasks.speculative.execution,調(diào)優(yōu),部分屬性除了配置文件之外還可以在MapReduce作業(yè)中動(dòng)態(tài)修改 在MapReduce執(zhí)行過程中,特別是Shuffle階

26、段,盡量使用內(nèi)存緩沖區(qū)存儲(chǔ)數(shù)據(jù),減少磁盤溢寫次數(shù);同時(shí)在作業(yè)執(zhí)行過程中增加并行度,都能夠顯著提高系統(tǒng)性能,這也是配置優(yōu)化的一個(gè)重要依據(jù)。 由于每個(gè)Hadoop集群的機(jī)器和硬件之間都存在一定差別,所以Hadoop框架應(yīng)根據(jù)其集群特性做配置優(yōu)化,IO屬性優(yōu)化,主要包括在Shuffle階段中相關(guān)的I/O過程的屬性 io.sort.factor屬性 int類型,Map端和Reduce端使用 該屬性設(shè)置在Map端和Reduce端都使用到的對(duì)文件Sort時(shí)一次合并的最大流,其默認(rèn)值是10,即一次合并10個(gè)流。 在集群中,將其適當(dāng)增大能夠提高并行度以縮短合并所需時(shí)間。將此默認(rèn)值增加到100是比較常見的。 io.sort.mb屬性 int類型,Map端使用,Map輸出進(jìn)行排序時(shí)使用的環(huán)形內(nèi)存緩沖區(qū)的大小,以M字節(jié)為單位,默認(rèn)是100M。如果允許,應(yīng)該增加它的值來減少磁盤溢寫的次數(shù)以提高性能。 io.sort.record.percent屬性 float類型,M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論