大數(shù)據(jù)的研究和分析應(yīng)用-畢業(yè)設(shè)計論文_第1頁
已閱讀1頁,還剩38頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  摘 要</b></p><p>  近幾年來,隨著計算機(jī)和信息技術(shù)的迅猛發(fā)展和普及應(yīng)用,行業(yè)應(yīng)用系統(tǒng)的規(guī)模迅速擴(kuò)大,行業(yè)應(yīng)用所產(chǎn)生的數(shù)據(jù)呈爆炸性增長。動輒達(dá)到數(shù)百TB甚至數(shù)十至數(shù)百 PB規(guī)模的行業(yè)或企業(yè)大數(shù)據(jù)已遠(yuǎn)遠(yuǎn)超出了現(xiàn)有傳統(tǒng)的計算技術(shù)和信息系統(tǒng)的處理能力。因此,尋求有效的大數(shù)據(jù)處理技術(shù)、方法和手段已經(jīng)成為現(xiàn)實(shí)世界的迫切需求。百度目前的總數(shù)據(jù)量已超過1000

2、PB,每天需要處理的網(wǎng)頁數(shù)據(jù)達(dá)到10PB~100PB;淘寶累計的交易數(shù)據(jù)量高達(dá)100PB;Twitter每天發(fā)布超過2億條消息,新浪微博每天發(fā)帖量達(dá)到8000萬條;中國移動一個省的電話通聯(lián)記錄數(shù)據(jù)每月可達(dá) 0.5PB~1PB;一個省會城市公安局道路車輛監(jiān)控數(shù)據(jù)三年可達(dá)200億條、總量120TB。據(jù)世界權(quán)威IT信息咨詢分析公司IDC研究報告預(yù)測:全世界數(shù)據(jù)量未來10年將從2009年的0.8ZB增長到2020年的35ZB(1ZB=1000E

3、B=1000000PB),10年將增長44倍,年均增長 40%。 </p><p>  由于數(shù)據(jù)量的快速增長,對大數(shù)據(jù)的操作和結(jié)構(gòu)化查詢在日常的數(shù)據(jù)處理經(jīng)常用到,聚集查詢也是查詢時使用比較多的查詢。</p><p>  關(guān)鍵詞:聚集查詢;結(jié)構(gòu)化查詢</p><p><b>  ABSTRACT</b></p><p>

4、;  In recent years,  with the rapid development of  computer and information technology,, industry application system has expanded , and the data

5、 generated by the applciations grows fast. The data which always reaches hundreds of TB or tens to hundreds of PB has been far beyond the e

6、xisting traditional  processing capacity of information system. Therefore, to seek effective data processing technology, method and mea

7、ns is in great need in  the real world.Baidu now owns data exceeded 100PB, and it </p><p>  Due to the rapid growth in data volume,  the

8、 operation of the large data structured query is often used in the daily data processing, aggregate query is one of the queri

9、es used mostly in big data processing. </p><p>  Keywords:Aggregate Query; Structured Query</p><p><b>  1 緒論1</b></p><p>  1.1 本文研究的背景和意義1</p><p>  1.2

10、國內(nèi)外研究現(xiàn)狀與熱點(diǎn)4</p><p>  1.2.1大數(shù)據(jù)研究文獻(xiàn)的國別和機(jī)構(gòu)分布4</p><p>  1.2.2大數(shù)據(jù)研究的學(xué)科領(lǐng)域分布5</p><p>  1.2.3大數(shù)據(jù)產(chǎn)業(yè)技術(shù)創(chuàng)新的重點(diǎn)方向5</p><p>  1.3 論文主要研究內(nèi)容6</p><p>  1.3.1 hdfs存儲數(shù)據(jù)概述

11、6</p><p>  1.3.2 mapreduce基本原理介紹7</p><p>  2 相關(guān)理論和技術(shù)9</p><p>  2.1 MapReduce基本理論9</p><p>  2.1.1 MapReduce簡介9</p><p>  2.1.2 MapReduce實(shí)現(xiàn)框架10</p>

12、<p>  2.1.3 MapReduce編程模式10</p><p>  2.1.4 MapReduce控制節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)和容錯機(jī)制11</p><p>  2.1.5 MapReduce的作業(yè)調(diào)度機(jī)制12</p><p>  2.2 數(shù)據(jù)的結(jié)構(gòu)化查詢13</p><p>  2.3 hadoop的hdfs存儲13&

13、lt;/p><p>  3 結(jié)構(gòu)化查詢到mapreduce轉(zhuǎn)化14</p><p>  3.1實(shí)驗(yàn)平臺的搭建14</p><p>  3.1.1 三種環(huán)境介紹14</p><p>  3.1.2偽分布環(huán)境搭建:15</p><p>  3.2結(jié)構(gòu)化聚集查詢分析21</p><p>  3.

14、3分布式存儲和分布式計算介紹23</p><p>  4 實(shí)驗(yàn)驗(yàn)證與程序的運(yùn)行結(jié)果24</p><p>  4.1單機(jī)環(huán)境運(yùn)行結(jié)果24</p><p>  4.2偽分布式環(huán)境的運(yùn)行結(jié)果26</p><p>  4.2.1 大數(shù)據(jù)文件上傳的分布式環(huán)境存儲系統(tǒng)(hdfs)26</p><p>  4.2.2 在偽

15、分布環(huán)境下運(yùn)行mapreduce程序27</p><p>  5 實(shí)驗(yàn)結(jié)果分析31</p><p>  6 重要代碼分析31</p><p><b>  7總結(jié)與展望32</b></p><p><b>  7.1總結(jié)32</b></p><p>  7.1.1 取

16、得的結(jié)果和收獲32</p><p>  7.1.2存在的不足33</p><p>  7.2對大數(shù)據(jù)的展望33</p><p><b>  參考文獻(xiàn)34</b></p><p><b>  致 謝35</b></p><p><b>  1 緒論<

17、/b></p><p>  1.1 本文研究的背景和意義</p><p>  早幾年人們把大規(guī)模數(shù)據(jù)稱為“海量數(shù)據(jù)”,但實(shí)際上,大數(shù)據(jù)(Big Data)這個概念早在2008年就已被提出。2008年,在Google成立10周年之際,著名的《自然》雜志出版了一期???,專門討論未來的大數(shù)據(jù)處理相關(guān)的一系列技術(shù)問題和挑戰(zhàn),其中就提出了“Big Data”的概念。</p>&

18、lt;p>  隨著大數(shù)據(jù)概念的普及,人們常常會問,多大的數(shù)據(jù)才叫大數(shù)據(jù)?其實(shí),關(guān)于大數(shù)據(jù),難以有一個非常定量的定義。維基百科給出了一個定性的描述:大 數(shù)據(jù)是指無法使用傳統(tǒng)和常用的軟件技術(shù)和工具在一定時間內(nèi)完成獲取、管理和處理的數(shù)據(jù)集。進(jìn)一步,當(dāng)今“大數(shù)據(jù)”一詞的重點(diǎn)其實(shí)已經(jīng)不僅在于數(shù)據(jù)規(guī)模的定 義,它更代表著信息技術(shù)發(fā)展進(jìn)入了一個新的時代,代表著爆炸性的數(shù)據(jù)信息給傳統(tǒng)的計算技術(shù)和信息技術(shù)帶來的技術(shù)挑戰(zhàn)和困難,代表著大數(shù)據(jù)處理所需的

19、新的技 術(shù)和方法,也代表著大數(shù)據(jù)分析和應(yīng)用所帶來的新發(fā)明、新服務(wù)和新的發(fā)展機(jī)遇。</p><p>  由于大數(shù)據(jù)處理需求的迫切性和重要性,近年來大數(shù)據(jù)技術(shù)已經(jīng)在全球?qū)W術(shù)界、工業(yè)界和各國政府得到高度關(guān)注和重視,全球掀起了一 個可與20世紀(jì)90年代的信息高速公路相提并論的研究熱潮。美國和歐洲一些發(fā)達(dá)國家政府都從國家科技戰(zhàn)略層面提出了一系列的大數(shù)據(jù)技術(shù)研發(fā)計劃,以推動政 府機(jī)構(gòu)、重大行業(yè)、學(xué)術(shù)界和工業(yè)界對大數(shù)據(jù)技術(shù)的探

20、索研究和應(yīng)用。</p><p>  早在2010年12月,美國總統(tǒng)辦公室下屬的科學(xué)技術(shù)顧問委員會(PCAST)和信息技術(shù)顧問委員會(PITAC)向奧巴馬和國會提交了一份 《規(guī)劃數(shù)字化未來》的戰(zhàn)略報告,把大數(shù)據(jù)收集和使用的工作提升到體現(xiàn)國家意志的戰(zhàn)略高度。報告列舉了5個貫穿各個科技領(lǐng)域的共同挑戰(zhàn),而第一個最重大的挑 戰(zhàn)就是 “數(shù)據(jù)”問題。報告指出:“如何收集、保存、管理、分析、共享正在呈指數(shù)增長的數(shù)據(jù)是我們必須面對

21、的一個重要挑戰(zhàn)”。報告建議:“聯(lián)邦政府的每一個機(jī)構(gòu)和 部門,都需要制定一個‘大數(shù)據(jù)’的戰(zhàn)略”。2012年3月,美國總統(tǒng)奧巴馬簽署并發(fā)布了一個“大數(shù)據(jù)研究發(fā)展創(chuàng)新計劃”(Big Data R & D Initiative),由美國國家自然基金會(NSF)、衛(wèi)生健康總署(NIH)、能源部(DOE)、國防部(DOD)等6大部門聯(lián)合,投資2億美元啟 動大數(shù)據(jù)技術(shù)研發(fā),這是美國政府繼1993年宣布“信息高速公路”計劃后的又一次重大科技發(fā)展

22、部署。美國白宮科技政策辦公室還專門支持建立了一個大數(shù)據(jù)技術(shù)論壇,鼓勵企業(yè)和組織機(jī)構(gòu)間的大數(shù)據(jù)技術(shù)交流與合作。</p><p>  2012年7月,聯(lián)合國在紐約發(fā)布了一本關(guān)于大數(shù)據(jù)政務(wù)的白皮書《大數(shù)據(jù)促發(fā)展:挑戰(zhàn)與機(jī)遇》,全球大數(shù)據(jù)的研究和發(fā)展進(jìn)入了前所未有的高潮。 這本白皮書總結(jié)了各國政府如何利用大數(shù)據(jù)響應(yīng)社會需求,指導(dǎo)經(jīng)濟(jì)運(yùn)行,更好地為人民服務(wù),并建議成員國建立“脈搏實(shí)驗(yàn)室”(Pulse Labs),挖掘大數(shù)據(jù)

23、的潛在價值。由于大數(shù)據(jù)技術(shù)的特點(diǎn)和重要性,目前國內(nèi)外已經(jīng)出現(xiàn)了“數(shù)據(jù)科學(xué)”的概念,即數(shù)據(jù)處理技術(shù)將成為一個與計算科學(xué)并列的新的科學(xué)領(lǐng)域。已故著名圖 靈獎獲得者Jim Gray在2007年的一次演講中提出,“數(shù)據(jù)密集型科學(xué)發(fā)現(xiàn)”(Data-Intensive Scientific Discovery)將成為科學(xué)研究的第四范式,科學(xué)研究將從實(shí)驗(yàn)科學(xué)、理論科學(xué)、計算科學(xué),發(fā)展到目前興起的數(shù)據(jù)科學(xué)。</p><p>  

24、為了緊跟全球大數(shù)據(jù)技術(shù)發(fā)展的浪潮,我國政府、學(xué)術(shù)界和工業(yè)界對大數(shù)據(jù)也予以了高度的關(guān)注。央視著名“對話”節(jié)目2013年4 月14日和21日邀請了《大數(shù)據(jù)時代——生活、工作與思維的大變革》作者維克托·邁爾-舍恩伯格,以及美國大數(shù)據(jù)存儲技術(shù)公司LSI總裁阿比分別做客“對 話”節(jié)目,做了兩期大數(shù)據(jù)專題談話節(jié)目“誰在引爆大數(shù)據(jù)”、“誰在掘金大數(shù)據(jù)”,國家央視媒體對大數(shù)據(jù)的關(guān)注和宣傳體現(xiàn)了大數(shù)據(jù)技術(shù)已經(jīng)成為國家和社會普 遍關(guān)注的焦點(diǎn)。而國

25、內(nèi)的學(xué)術(shù)界和工業(yè)界也都迅速行動,廣泛開展大數(shù)據(jù)技術(shù)的研究和開發(fā)。2013年以來,國家自然科學(xué)基金、973計劃、核高基、863等重大 研究計劃都已經(jīng)把大數(shù)據(jù)研究列為重大的研究課題。為了推動我國大數(shù)據(jù)技術(shù)的研究發(fā)展,2012年中國計算機(jī)學(xué)會(CCF)發(fā)起組織了CCF大數(shù)據(jù)專家委員 會,CCF專家委員會還特別成立了一個“大數(shù)據(jù)技術(shù)發(fā)展戰(zhàn)略報告”撰寫組,并已撰寫發(fā)布了《2013年中國大數(shù)據(jù)技術(shù)與產(chǎn)業(yè)發(fā)展白皮書》。</p><

26、p>  大數(shù)據(jù)在帶來巨大技術(shù)挑戰(zhàn)的同時,也帶來巨大的技術(shù)創(chuàng)新與商業(yè)機(jī)遇。不斷積累的大數(shù)據(jù)包含著很多在小數(shù)據(jù)量時不具備的深度知識和價值,大數(shù)據(jù)分析挖掘?qū)⒛転樾袠I(yè)/企業(yè)帶來巨大的商業(yè)價值,實(shí)現(xiàn)各種高附加值的增值服務(wù),進(jìn)一步提升行業(yè)/企業(yè)的經(jīng)濟(jì)效益和社會效益。由于大數(shù)據(jù)隱含著巨大的深度 價值,美國政府認(rèn)為大數(shù)據(jù)是“未來的新石油”,對未來的科技與經(jīng)濟(jì)發(fā)展將帶來深遠(yuǎn)影響。因此,在未來,一個國家擁有數(shù)據(jù)的規(guī)模和運(yùn)用數(shù)據(jù)的能力將成為綜合 國力的

27、重要組成部分,對數(shù)據(jù)的占有、控制和運(yùn)用也將成為國家間和企業(yè)間新的爭奪焦點(diǎn)。</p><p>  大數(shù)據(jù)的研究和分析應(yīng)用具有十分重大的意義和價值。被譽(yù)為“大數(shù)據(jù)時代預(yù)言家”的維克托·邁爾-舍恩伯格在其《大數(shù)據(jù)時代》一書中列舉了大量詳 實(shí)的大數(shù)據(jù)應(yīng)用案例,并分析預(yù)測了大數(shù)據(jù)的發(fā)展現(xiàn)狀和未來趨勢,提出了很多重要的觀點(diǎn)和發(fā)展思路。他認(rèn)為:“大數(shù)據(jù)開啟了一次重大的時代轉(zhuǎn)型”,指出大數(shù) 據(jù)將帶來巨大的變革,改變我們

28、的生活、工作和思維方式,改變我們的商業(yè)模式,影響我們的經(jīng)濟(jì)、政治、科技和社會等各個層面。</p><p>  由于大數(shù)據(jù)行業(yè)應(yīng)用需求日益增長,未來越來越多的研究和應(yīng)用領(lǐng)域?qū)⑿枰褂么髷?shù)據(jù)并行計算技術(shù),大數(shù)據(jù)技術(shù)將滲透到每個涉及到大規(guī)模數(shù)據(jù)和復(fù)雜計算的應(yīng)用領(lǐng)域。不 僅如此,以大數(shù)據(jù)處理為中心的計算技術(shù)將對傳統(tǒng)計算技術(shù)產(chǎn)生革命性的影響,廣泛影響計算機(jī)體系結(jié)構(gòu)、操作系統(tǒng)、數(shù)據(jù)庫、編譯技術(shù)、程序設(shè)計技術(shù)和方法、軟 件工程

29、技術(shù)、多媒體信息處理技術(shù)、人工智能以及其他計算機(jī)應(yīng)用技術(shù),并與傳統(tǒng)計算技術(shù)相互結(jié)合產(chǎn)生很多新的研究熱點(diǎn)和課題。</p><p>  大數(shù)據(jù)給傳統(tǒng)的計算技術(shù)帶來了很多新的挑戰(zhàn)。大數(shù)據(jù)使得很多在小數(shù)據(jù)集上有效的傳統(tǒng)的串行化算法在面對大數(shù)據(jù)處理時難以在可接受的時間內(nèi)完成計 算;同時大數(shù)據(jù)含有較多噪音、樣本稀疏、樣本不平衡等特點(diǎn)使得現(xiàn)有的很多機(jī)器學(xué)習(xí)算法有效性降低。因此,微軟全球副總裁陸奇博士在2012年全國第一屆 “中

30、國云/移動互聯(lián)網(wǎng)創(chuàng)新大獎賽”頒獎大會主題報告中指出:“大數(shù)據(jù)使得絕大多數(shù)現(xiàn)有的串行化機(jī)器學(xué)習(xí)算法都需要重寫”。</p><p>  大數(shù)據(jù)技術(shù)的發(fā)展將給我們研究計算機(jī)技術(shù)的專業(yè)人員帶來新的挑戰(zhàn)和機(jī)遇。目前,國內(nèi)外IT企業(yè)對大數(shù)據(jù)技術(shù)人才的需求正快速增長,未來5~10 年內(nèi)業(yè)界將需要大量的掌握大數(shù)據(jù)處理技術(shù)的人才。IDC研究報告指出,“下一個10年里,世界范圍的服務(wù)器數(shù)量將增長10倍,而企業(yè)數(shù)據(jù)中心管理的數(shù)據(jù)信 息

31、將增長50倍,企業(yè)數(shù)據(jù)中心需要處理的數(shù)據(jù)文件數(shù)量將至少增長75倍,而世界范圍內(nèi)IT專業(yè)技術(shù)人才的數(shù)量僅能增長1.5倍?!币虼耍磥硎昀锎髷?shù)據(jù) 處理和應(yīng)用需求與能提供的技術(shù)人才數(shù)量之間將存在一個巨大的差距。目前,由于國內(nèi)外高校開展大數(shù)據(jù)技術(shù)人才培養(yǎng)的時間不長,技術(shù)市場上掌握大數(shù)據(jù)處理和應(yīng) 用開發(fā)技術(shù)的人才十分短缺,因而這方面的技術(shù)人才十分搶手,供不應(yīng)求。國內(nèi)幾乎所有著名的IT企業(yè),如百度、騰訊、阿里巴巴和淘寶、奇虎360等,都大量需要大

32、數(shù)據(jù)技術(shù)人才。</p><p>  1.2 國內(nèi)外研究現(xiàn)狀與熱點(diǎn)</p><p>  二十年來,全球大數(shù)據(jù)研究經(jīng)歷了一個從起步到活躍的過程。基于大數(shù)據(jù)相關(guān)的4573篇文獻(xiàn)和8571項(xiàng)專利,對其研究進(jìn)展、分布和前沿進(jìn)行分析,可以得出如下結(jié)論:1、美國是大數(shù)據(jù)研究的中心地帶,技術(shù)創(chuàng)新活躍,國際間合作頻繁。2、我國對大數(shù)據(jù)研究的資助力度較大,學(xué)術(shù)論文較多,但與國外創(chuàng)新合作較少。3、系統(tǒng)、性能和

33、算法是大數(shù)據(jù)研究的重點(diǎn)方向和核心基礎(chǔ)。4、大數(shù)據(jù)產(chǎn)業(yè)創(chuàng)新不僅聚焦軟件技術(shù)研發(fā),還在硬件技術(shù)上重點(diǎn)布局。</p><p>  1.2.1大數(shù)據(jù)研究文獻(xiàn)的國別和機(jī)構(gòu)分布</p><p>  1、美國是大數(shù)據(jù)研究的中心地帶,我國緊隨其后。美國是研究者最多的國家,約占總數(shù)的34%,中國緊隨其后,占23%,美中兩國合計占到總數(shù)的一半以上。其余的前10位國家包括:德國、英國、日本、印度、加拿大、法國、

34、澳大利亞和韓國。</p><p>  2、大數(shù)據(jù)研究文獻(xiàn)發(fā)展的“三階段”特征顯著。第一階段是1994-2001年,年均文獻(xiàn)不超過50篇,研究文獻(xiàn)主要為“美國籍”。第二階段為2002-2010年,年均文獻(xiàn)超過100篇,且以年均20%的幅度穩(wěn)步增長,突出特點(diǎn)是我國文獻(xiàn)開始出現(xiàn),并在2008-2009年超過了美國。第三階段為2011-2013年,研究文獻(xiàn)出現(xiàn)爆發(fā)式增長,3年文獻(xiàn)共達(dá)到2053篇,占20年累計總數(shù)的44.

35、9%;主要原因是美國文獻(xiàn)的再次崛起,3年內(nèi)貢獻(xiàn)了735篇,而我國為489篇。</p><p>  3、我國政府對大數(shù)據(jù)研究的資助力度較大。文獻(xiàn)數(shù)前25位的研究機(jī)構(gòu)中,美國16所大學(xué)上榜,共發(fā)表論文559篇,占美國文獻(xiàn)總數(shù)的36.4%。中國則有6所大學(xué)機(jī)構(gòu)上榜,其中中科院發(fā)表論文數(shù)居世界第一,達(dá)到109篇,之后依次是清華大學(xué)、上海交通大學(xué)、哈爾濱工業(yè)大學(xué)、浙江大學(xué)和華中科技大學(xué)。6所大學(xué)機(jī)構(gòu)共計發(fā)表論文244

36、60;篇,約占我國大數(shù)據(jù)文獻(xiàn)總數(shù)的四分之一。</p><p>  從資助機(jī)構(gòu)上看,資助5以上的機(jī)構(gòu)一共有36家,大多為國家基金組織和政府部門。其中,中國國家自然科學(xué)基金、美國國家科學(xué)基金和國立衛(wèi)生研究院是三家資助發(fā)表文獻(xiàn)最多的機(jī)構(gòu),分別達(dá)到122篇、109篇和57篇。而企業(yè)更多聚焦專利領(lǐng)域進(jìn)行布局,僅有谷歌和微軟兩家公司資助的研究文獻(xiàn)超過5篇。</p><p>  我國大數(shù)據(jù)研究的質(zhì)量有待

37、進(jìn)一步提升。一方面,從合作關(guān)系上看,我國的大數(shù)據(jù)研究與世界聯(lián)系不多,僅與臺灣地區(qū)、德國有少量合作,而美國與韓國、澳大利亞、法國、瑞典、瑞士、土耳其等國家保持著密切的合作關(guān)系,德國、加拿大、英國之間也有不少合作。另一方面,從文獻(xiàn)被引頻次來看,研究文獻(xiàn)的質(zhì)量低于美國,美國1537 篇論文平均引用次數(shù)達(dá)到14.20 次,高引用指數(shù)為66,而我國文獻(xiàn)的高引用指數(shù)僅有20。</p><p>  1.2.

38、2大數(shù)據(jù)研究的學(xué)科領(lǐng)域分布</p><p>  1、大數(shù)據(jù)研究開始滲透進(jìn)入應(yīng)用領(lǐng)域。文獻(xiàn)涉及的學(xué)科領(lǐng)域超過100 個。在排名前15 位的學(xué)科領(lǐng)域中(圖5),除了數(shù)學(xué)、物理學(xué)等基礎(chǔ)學(xué)科外,更是出現(xiàn)了微生物學(xué)、環(huán)境生態(tài)學(xué)、運(yùn)籌學(xué)與管理科學(xué)等應(yīng)用學(xué)科,說明大數(shù)據(jù)技術(shù)已經(jīng)滲透進(jìn)入各個基礎(chǔ)和應(yīng)用學(xué)科領(lǐng)域。</p><p>  2、系統(tǒng)、性能和算法是大數(shù)據(jù)研究的重點(diǎn)方向。從大數(shù)據(jù)涉

39、及的主要學(xué)科領(lǐng)域分布中可以看到,大量文獻(xiàn)集中在數(shù)據(jù)處理的系統(tǒng)、性能和算法上,如數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、主成分分析與分類等方向位于核心層,其次為神經(jīng)網(wǎng)絡(luò)、降維運(yùn)算、數(shù)據(jù)存儲、關(guān)聯(lián)規(guī)則、數(shù)據(jù)集等。</p><p>  3、核心基礎(chǔ)技術(shù)文獻(xiàn)被大量引用。以谷歌公司的Mapreduce 為例,作為大數(shù)據(jù)的基礎(chǔ)技術(shù),該文獻(xiàn)后續(xù)被近700 篇論文所引用,切實(shí)推動了分布式計算、Hadoop 等熱點(diǎn)研究的

40、開展。</p><p>  1.2.3大數(shù)據(jù)產(chǎn)業(yè)技術(shù)創(chuàng)新的重點(diǎn)方向</p><p>  與學(xué)術(shù)文獻(xiàn)研究不同的是,從企業(yè)專利布局角度出發(fā),更有利于分析大數(shù)據(jù)產(chǎn)業(yè)技術(shù)創(chuàng)新的重點(diǎn)方向。為此,基于Orbit 專利數(shù)據(jù)庫和VOSviewer軟件,對14家國際性的IT企業(yè)、互聯(lián)網(wǎng)企業(yè)以及新興大數(shù)據(jù)企業(yè)自2006年以來的8571項(xiàng)專利進(jìn)行分析:</p><p>  1、

41、大數(shù)據(jù)軟件技術(shù)已趨于體系化。在數(shù)據(jù)的基本框架、采集傳輸、存儲、處理分析等各個環(huán)節(jié)上,都有不同于以往抽樣、封閉、小規(guī)模條件的新技術(shù)予以支撐,大數(shù)據(jù)軟件技術(shù)體系逐步趨于完整。在此基礎(chǔ)上,傳統(tǒng)的IT 企業(yè)、互聯(lián)網(wǎng)企業(yè)紛紛開發(fā)了基于大數(shù)據(jù)的行業(yè)解決方案和商業(yè)應(yīng)用平臺,一批新興大數(shù)據(jù)企業(yè)加快發(fā)展并進(jìn)行商業(yè)模式創(chuàng)新,產(chǎn)業(yè)創(chuàng)新生態(tài)系統(tǒng)所需的各項(xiàng)條件日趨完備。</p><p>  2、企業(yè)在大數(shù)據(jù)硬件技術(shù)上的布局不亞于

42、軟件。與學(xué)術(shù)研究側(cè)重于軟件技術(shù)不同,企業(yè)十分重視相關(guān)硬件設(shè)備的技術(shù)布局。一方面,按照國際專利進(jìn)行分類,數(shù)據(jù)處理、存儲和相關(guān)設(shè)備依然是專利較為集中的領(lǐng)域,如大數(shù)據(jù)專利數(shù)量較多的G06F-017、G06F-015、G06F-007、G06F-003、G06F-009、G06F-021 等分類號,均側(cè)重于計算機(jī)數(shù)據(jù)的處理、存儲、控制、接口、安全等硬件電路、設(shè)備和零部件。另一方面,8571 項(xiàng)專利集聚形成幾個較大的專利群,包

43、括采集顯示和傳輸、處理分析、記錄存儲、數(shù)據(jù)管理、共享與協(xié)作等,其中規(guī)模最大的專利群,依然是與采集、顯示和傳輸相關(guān)的外圍信息硬件設(shè)備。</p><p>  值得一提的是14家國際性企業(yè)大數(shù)據(jù)技術(shù)專利的一部分貢獻(xiàn)來自于其在華分公司。857項(xiàng)專利中,公開國為中國的有1757項(xiàng),優(yōu)先權(quán)國在中國的有170項(xiàng),說明了我國研究人員在大數(shù)據(jù)領(lǐng)域研究水平的不斷提升。</p><p>  1.3 論文主要研究

44、內(nèi)容</p><p>  本論文主要研究的基于大數(shù)據(jù)的結(jié)構(gòu)化查詢到MapReduce的轉(zhuǎn)化,在實(shí)際的應(yīng)用中對大數(shù)據(jù)的查詢經(jīng)常用到,所以了解和研究數(shù)據(jù)化的結(jié)構(gòu)化查詢在實(shí)際應(yīng)用中比較方便本文講述了,分布式存儲和分布式計算的基本原理和基本架構(gòu),從底層講述了map函數(shù)和reduce函數(shù)工作的基本過程,對數(shù)據(jù)的研究和挖掘非常簡單。本文主要講述的是Hadoop對處理海量數(shù)據(jù)的處理過程,對海量數(shù)據(jù)的查詢轉(zhuǎn)換到MapReduce

45、的具體流程,以及海量數(shù)據(jù)在hdfs的具體存儲過程。主要研究的是結(jié)構(gòu)化查詢中的聚集查詢,聚集查詢在結(jié)構(gòu)化查詢中是經(jīng)常用到的查詢,在實(shí)際應(yīng)用中用到的也非常廣泛。</p><p>  1.3.1HDFS存儲數(shù)據(jù)概述</p><p>  Hadoop有一個稱為HDFS的分布式系統(tǒng),全稱為Hadoop Distributed Filesystem。HDFS是Hadoop的旗艦級文件系統(tǒng)。</p

46、><p>  HDFS以流式數(shù)據(jù)訪問模式來存儲超大文件,運(yùn)行與商用硬件集群上。</p><p>  1)流式數(shù)據(jù)訪問:HDFS的構(gòu)建思路是"一次寫入,多次讀取是最高效的訪問模式"。讀取整個數(shù)據(jù)集的實(shí)驗(yàn)延遲比讀取第一條記錄的時間延遲要重要。 </p><p>  2)商用集群:Hadoop并不需要運(yùn)行在昂貴且高可靠的硬件上,普通的硬件便可以。</

47、p><p>  每個磁盤都有默認(rèn)的數(shù)據(jù)塊大小,這是磁盤進(jìn)行數(shù)據(jù)讀寫的最小單位。HDFS也有塊的概念,但是大多數(shù),默認(rèn)為64MB。和單一磁盤的文件系統(tǒng)相似,HDFS上的文件也被劃分為塊大小的多個分塊,作為獨(dú)立的存儲單元。但和其它文件系統(tǒng)不同的是,HDFS中小于一個塊大小的文件不會占據(jù)整個塊空間。HDFS的塊設(shè)置的如此大的原因是為了最小化尋址開銷,但是塊也不能設(shè)置的太大,因?yàn)镸apReduce中的map通常一次處理一個塊

48、中的數(shù)據(jù),因此如果任務(wù)數(shù)太少(少于集群的節(jié)點(diǎn)數(shù)),會減慢任務(wù)執(zhí)行的速度。</p><p>  1.3.2 mapreduce基本原理介紹</p><p>  MapReduce正式發(fā)表是在2004年,是在超大集群上進(jìn)行高性能分布式計算的經(jīng)典算法。</p><p>  Map Reduce 執(zhí)行過程:</p><p>  1.Master 把輸

49、入文件分成M 份,通常16M – 64M每份</p><p>  2.Master選擇處于Idle狀態(tài)的worker,assign一份給他,此時worker的角色是map worker,assign的過程很簡單,就</p><p>  是把這個task piece傳輸?shù)絯orker上</p><p>  3.Map worker拿到任務(wù)后讀取task的內(nèi)容,解析出k

50、ey/value pairs,這些中間結(jié)果開始是存在worker的內(nèi)存里面,周</p><p>  期性的寫到map worker的本地磁盤上。但是map worker產(chǎn)生的中間結(jié)果不是寫在一個文件里,而是由partition </p><p>  function分割成R個中間文件,盡量把相同的keykey/value對寫在一個中間文件里。</p><p>  4

51、.當(dāng)map完成task以后,會把這些partition文件在本地磁盤中的位置通知master。(只是通知位置,而不是傳輸文件</p><p>  到master,仔細(xì)想想為什么)</p><p>  5.Master接到任務(wù)完成的消息后,尋找idle狀態(tài)的worker,通知他去reduce,此時的worker就是reduce worker(值得</p><p>  

52、注意的是剛剛完成任務(wù)的 map worker可能會擔(dān)當(dāng)reduce worker的角色),reduce worker通過RPC讀取map worker</p><p>  磁盤上的中間文件到本地磁盤,讀完之后,reduce worker對其進(jìn)行排序,如果中間文件太大,就要用外部排序。</p><p>  Master并不是隨便找一個worker來做reduce的,盡量讓一個reduce w

53、orker做包含同樣key的partition文件。</p><p>  比如:map work1 包含R個partition文件,key為K1,K2.。。。。。KR,master會把所有map works產(chǎn)生的partition文件含有K1的盡量交給同一個reduce worker,當(dāng)然這里面也有個負(fù)載平衡的問題。</p><p>  6.Reduce work把合并后的結(jié)果寫入一個文件

54、,因?yàn)橐粋€reduce worker盡量處理同一個key的partition文件,所以當(dāng)</p><p>  reduce worker合并完成之后,所有包含這個key的結(jié)果都在這個文件里了</p><p>  7.Reduce work把合并的結(jié)果傳回master</p><p>  8.當(dāng)所有的reduce workers都完成之后,master得到了R個結(jié)果文

55、件(每個reduce worker一個),喚醒用戶進(jìn)程,</p><p>  把R個結(jié)果文件交給客戶程序。</p><p><b>  優(yōu)化:</b></p><p><b>  1.合并函數(shù)</b></p><p>  Map往往會產(chǎn)生大量的key/value對,比如1萬個{a,1},這些都要被r

56、educe來合并,可以在reduce工作之前有合并函數(shù)對map中的key/value對進(jìn)行合并??雌饋?,合并函數(shù)和reduce函數(shù)一樣,其實(shí)還是不同的,合并函數(shù)所合并的是map本地的key/value對,產(chǎn)生的結(jié)果寫入map的本地buffer;reduce函數(shù)合并的是來自不同map的partition文件,產(chǎn)生的結(jié)果傳回master。</p><p><b>  2.容錯處理</b><

57、/p><p>  Cluster的龐大集群,機(jī)器出現(xiàn)故障是必然的,所以master要進(jìn)行容錯處理。在master上會記錄所有集群內(nèi)或者子群內(nèi)worker的狀態(tài),定期的ping 正在工作的worker,如果不通,說明這個worker死掉了,那么會把這個worker標(biāo)記為down,把他上面執(zhí)行的任務(wù)重新分配給另外的worker。但是如果master死掉了怎么辦?因?yàn)榧簝?nèi)只有一個master,此時只好通知客戶程序-計算失

58、敗。</p><p><b>  3.集群內(nèi)備份</b></p><p>  如果map worker完成了工作之后,reduce處理之前,map worker死掉了,那么reduce就拿不到結(jié)果了,難道要map重新執(zhí)行一遍嗎?不是的,map完成之后,要把他的結(jié)果向集群內(nèi)備份.</p><p>  分布式計算重點(diǎn)不是計算,而是分布式。云計算(C

59、loud Computing)歸根結(jié)底還是分布式計算,在客戶端看來,他們只需一個簡單的PC,能上網(wǎng)即可。但是在云服務(wù)提供商,為了存儲客戶的數(shù)據(jù),執(zhí)行客戶的計算,顯然是一個分布式的Cluster,也就是“云”。</p><p><b>  2 相關(guān)理論和技術(shù)</b></p><p>  2.1 MapReduce基本理論</p><p>  最近

60、幾年,不管是政府機(jī)構(gòu),還是企業(yè)都需要處理急劇增長的數(shù)據(jù),為了在有限的時間內(nèi)完成對數(shù)據(jù)的處理,只依靠一臺計算機(jī)的計算能力是遠(yuǎn)遠(yuǎn)不夠的,需要將作業(yè)布置在數(shù)以千計的機(jī)器上執(zhí)行分布式并行計算。分布式計算需要考慮許多問題,比如說容錯機(jī)制,這就使得本來并不復(fù)雜的問題變得有些棘手,而MapReduce并行編程模型為這一問題的解決提供給了一個很好的方案。</p><p>  2.1.1 MapReduce簡介</p>

61、<p>  為了在分布式環(huán)境下進(jìn)行海量數(shù)據(jù)的計算,谷歌公司的Jeffery Dean等人提出了MapReduce這一并行編程模型[ls} o MapReduce通過將計算任務(wù)進(jìn)行分解,并且將分解的子任務(wù)布置在相連機(jī)器(節(jié)點(diǎn))的處理器上,然后按照特定的規(guī)則合并每個機(jī)器上的處理結(jié)果,得到最后的計算結(jié)果。這種處理方式與計算機(jī)算法中的動態(tài)規(guī)劃相類似。在MapReduce環(huán)境下,雖然單機(jī)處理能力都很有限,但是利用所有被連接的子節(jié)點(diǎn)進(jìn)

62、行計算卻具有超強(qiáng)的綜合處理能力。執(zhí)行MapReduce算法可以將一個大的任務(wù)自動布置在集群上的每個空閑節(jié)點(diǎn)上,而無需人工干預(yù)。系統(tǒng)會自動的解決數(shù)據(jù)分布問題,處理機(jī)失效問題以及機(jī)器之間如何進(jìn)行通信。這樣使用框架來運(yùn)行MapReduce算法,程序員可以在沒有分布式編程經(jīng)驗(yàn)的情況下,就可以進(jìn)行海量數(shù)據(jù)的并行計算。</p><p>  2.1.2 MapReduce實(shí)現(xiàn)框架</p><p>  根

63、據(jù)不同需要MapReduce接口可以變換執(zhí)行方法。有些方法適用于普通的微型計算機(jī),有些則適用于數(shù)以千計的處理器組成的大型復(fù)雜計算機(jī),甚至于有的適用于超大規(guī)模集群。谷歌的計算環(huán)境通常是利用網(wǎng)絡(luò)將大量的普通計算機(jī)連接起來所形成的具有極高性能的集群。</p><p>  MapReduce中每個節(jié)點(diǎn)都是一臺普通的機(jī)器,一般有工Intel的處理器,并安裝有開源操作系統(tǒng),其內(nèi)存是2-4GB。使用千兆或者更低的百兆帶寬網(wǎng)絡(luò)將

64、普通機(jī)器連接起來,而實(shí)際使用的網(wǎng)絡(luò)帶寬由數(shù)以千計的計算機(jī)組成的集群很容易發(fā)生機(jī)器故障,導(dǎo)致機(jī)器失效。為了將機(jī)器失效時的損失降到最低,在機(jī)器集群中采用冗余技術(shù),這樣即使在機(jī)器失效時,也能保證系統(tǒng)的正常運(yùn)轉(zhuǎn)。而且值得一提的是由于機(jī)器上使用的都是低端硬盤,采用冗余技術(shù)所需的成本并不高。當(dāng)用戶向系統(tǒng)提交作業(yè)時,可以將這個作業(yè)劃分成一組作業(yè),布置在集群中的幾臺計算機(jī)上執(zhí)行。</p><p>  2.1.3 MapReduc

65、e編程模式</p><p>  MapReduce的執(zhí)行流程一般可分成兩個步驟:Map階段、Reduce階段。這兩個階段都以key/value對作為輸入,處理之后的輸出結(jié)果也都是key/value,而具體的數(shù)據(jù)結(jié)構(gòu)可以由用戶自己決定。Map與Reduce這兩個函數(shù)也都需要用戶自己編寫。</p><p>  首先介紹一下Map函數(shù),該函數(shù)對key/value對操作的過程中也會生成key/va

66、lue對。Map會以key值作為參考,將有相同key值key/value對聚合起來,并傳送到下一階段一Reduce階段作為輸入。Reduce函數(shù)也是由程序員編寫,它處理由Map函數(shù)傳送過來的key/value對集合。</p><p>  Reduce函數(shù)對key/value對集合進(jìn)行處理,最終生成更小的key/value對集合。一般來說,Reduce函數(shù)運(yùn)行一次生成的結(jié)果不會多于1個。Reduce函數(shù)利用迭代器獲

67、取中間值,這樣就可以對大量的數(shù)據(jù)進(jìn)行操作。假如在執(zhí)行過程中有不止一個Reduce函數(shù)存在,需要對Map函數(shù)的輸出結(jié)果進(jìn)行分塊,讓任意一個Reduce函數(shù)都能獲得一個分塊,用作執(zhí)行時的輸入。分塊中key/value對中的key值可能不一樣,然而要求同一key值的key/value對必須放在同一個分塊中。分塊函數(shù)可以由程序員自己實(shí)現(xiàn),也可以用框架下自帶的分塊工具。自帶工具利用哈希函數(shù)分塊,執(zhí)行效率也令人滿意。如果執(zhí)行過程中有不止一個Redu

68、ce函數(shù)存在,Map與Reduce階段所需傳送的數(shù)據(jù)被稱作shuffle(洗牌),由于任意一個Reduce函數(shù)都需要Map函數(shù)傳遞過來的數(shù)據(jù),shuffle并不像看起來的那么簡單。shuffle決定了數(shù)據(jù)如何在Reduce函數(shù)之間合理的分配,一旦做了變動就會對系統(tǒng)的整體運(yùn)行重大影響。</p><p>  2.1.4 MapReduce控制節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)和容錯機(jī)制</p><p>  為方便

69、主控程序Master的整體調(diào)度,每個任務(wù)都要存儲自己的狀態(tài)(閑置,執(zhí)行中或者己完成),同時也要能夠識別集群中的其它計算機(jī)的狀態(tài)。主控程序負(fù)責(zé)把Map計算機(jī)產(chǎn)生的中間數(shù)據(jù)信息傳輸至Reduce計算機(jī)上。具體過程如下:當(dāng)Map程序執(zhí)行時,主控程序記錄了Map產(chǎn)生的R個分塊信息,包括所在位置及其分塊的大小,當(dāng)Map任務(wù)執(zhí)行完成后,會將狀態(tài)發(fā)送給主控程序,并且保存處理結(jié)果,然后將文件發(fā)送至Reduce工作機(jī)上。</p><p

70、>  MapReduce環(huán)境通常是將大量的計算機(jī)連接起來所形成的具有極高性能的集群,用以處理大規(guī)模數(shù)據(jù)。由于分布式環(huán)境存在高風(fēng)險,,必須要考慮一旦有機(jī)器出現(xiàn)故障,仍然要能使程序正常運(yùn)行,也就是所謂的容錯處理機(jī)制。MapReduce的兩個階段中都需要考慮容錯機(jī)制。例如:一臺機(jī)器在執(zhí)行程序時出現(xiàn)故障,Master就會將這個未完成的工作進(jìn)行重新分配,布置在其它空閑機(jī)器上。如果Map工作機(jī)己經(jīng)完成了部分工作,但是處理結(jié)果還未傳輸至Redu

71、ce工作機(jī)上,那么這個任務(wù)都需要重新分配實(shí)施。與此不同的是,如果故障發(fā)生在Reduce工作機(jī)上,那么己完成的部分工作不需要重新執(zhí)行,因?yàn)镽educe的中間結(jié)果不是存儲在本地硬盤中,而是保存在全局文件系統(tǒng)中。一般情況下有以下兩種故障需要考慮:</p><p>  1.工作節(jié)點(diǎn)發(fā)生失效情況</p><p>  主控程序Master會定時向每個工作機(jī)發(fā)送信息,檢查其是否連接正常,如果Master

72、在發(fā)送信息后的一定時間內(nèi)沒有收到該機(jī)器的回復(fù)信息,則判定該機(jī)器節(jié)點(diǎn)失效,則這臺計算機(jī)上執(zhí)行的任務(wù)都要被重新分配。</p><p>  當(dāng)工作機(jī)A在執(zhí)行完一個Map任務(wù)后失效,但是此時工作機(jī)B己經(jīng)將工作機(jī)A上的中間結(jié)果拷貝完畢,并且隨后發(fā)覺了這個狀況,那么B會向一切執(zhí)行Reduce程序的工作機(jī)發(fā)送消息,那些還未來得及從A上拷貝數(shù)據(jù)的工作機(jī)都從B上獲取數(shù)據(jù)。</p><p>  MapRedu

73、ce能夠最大限度的容忍工作機(jī)出現(xiàn)故障的意外發(fā)生。比如說,在網(wǎng)絡(luò)維護(hù)時,一個采用MapReduce環(huán)境的集群中,可能會發(fā)生十幾臺甚至于幾十臺計算機(jī)在一段時間內(nèi)同時失效的情況,主控程序只需進(jìn)行簡單的調(diào)控分配,就可以順利的完成既定工作,最復(fù)雜的情況也就是將不能訪問的工作機(jī)上的任務(wù)再執(zhí)行一次。</p><p>  2.主控節(jié)點(diǎn)出現(xiàn)失效故障</p><p>  主控節(jié)點(diǎn)會定時保存其狀態(tài)信息,設(shè)定一個

74、核查點(diǎn)(checkpoint)。假如主控節(jié)點(diǎn)出現(xiàn)故障,可以從最后一個核查點(diǎn)處激活另外的主控程序。不過,由于整個集群中只存在一個主控節(jié)點(diǎn),如果出現(xiàn)故障,帶來的麻煩要遠(yuǎn)比工作節(jié)點(diǎn)出現(xiàn)故障多。當(dāng)前應(yīng)付主控節(jié)點(diǎn)失效的主要方法是如果Master失效,立即停止MapReduce任務(wù)的執(zhí)行??蛻舳税l(fā)現(xiàn)這種狀況,可以再次嘗試MapReduce任務(wù)。</p><p>  2.1.5 MapReduce的作業(yè)調(diào)度機(jī)制</p&g

75、t;<p>  主控節(jié)點(diǎn)在MapReduce的作業(yè)調(diào)度中起著至關(guān)重要的作用,它負(fù)責(zé)整體的作業(yè)調(diào)度和資源分配。MapReduce采用一種稱為主動請求式的調(diào)度機(jī)制,當(dāng)一個工作節(jié)點(diǎn)完成一項(xiàng)任務(wù)后,會主動向主控節(jié)點(diǎn)提出請求,然后主控節(jié)點(diǎn)會為其分配新的任務(wù)。與操作系統(tǒng)中的處理機(jī)調(diào)度算法類似,MapReduce中的調(diào)度算法如下:</p><p>  C1)先來先服務(wù):MapReduce的自身調(diào)度算法是先來先服務(wù)

76、,這種算法實(shí)施起來簡單容易,但是存在很大的局限性,它沒有考慮任務(wù)之間的需求差異。</p><p>  C2)公平算法:公平算法的設(shè)計思想是確保每個任務(wù)都能相對公平的獲得等量資源。當(dāng)整個集群中只存在唯一的任務(wù)時,則其將占用整個系統(tǒng)中的所有資源。如果此時又新提交一個任務(wù),則將會有部分資源被釋放,用于分配給新增的任務(wù)。這既能保證減少作業(yè)的平均等待時間,提高系統(tǒng)吞吐量,又能有效保證長作業(yè)的效率。</p>&

77、lt;p>  (3)高優(yōu)先權(quán)優(yōu)先算法:使用這種調(diào)度算法的MapReduce環(huán)境會首先考慮將優(yōu)先級高的作業(yè)分配給空閑工作機(jī)運(yùn)行。這種調(diào)度算法的主要問題是采用何種優(yōu)先權(quán),是靜態(tài)的,抑或是動態(tài)的,以及作業(yè)的優(yōu)先權(quán)如何計算。</p><p>  (4)計算能力調(diào)度算法:此種調(diào)度策略定義數(shù)個作業(yè)隊列,與公平算法相類似,這種算法試圖在對隊列之間保證公平分配資源。這種算法的關(guān)鍵是需要計算出運(yùn)行各個作業(yè)隊列所需的資源。&l

78、t;/p><p>  MapReduce并行編程模型的提出為大規(guī)模數(shù)據(jù)的計算提供一種有效方法。但是有些特殊情況難以利用MapReduce來處理。MapReduce所能處理的復(fù)雜問題必須能夠劃分為一些等價的子問題,而這些子問題之間沒有相互的依賴關(guān)系,可以同時運(yùn)行。也就是說能夠使用MapReduce解決的問題必須具有三大特點(diǎn):原任務(wù)可以分解;分解后的任務(wù)數(shù)量是有限的;子任務(wù)之間沒有相關(guān)性,能夠并行執(zhí)行,對各個子任務(wù)的推進(jìn)

79、順序沒有要求。</p><p>  2.2 數(shù)據(jù)的結(jié)構(gòu)化查詢</p><p>  結(jié)構(gòu)化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng);同時也是數(shù)據(jù)庫腳本文件的擴(kuò)展名。</p><p>  結(jié)構(gòu)化查詢語言是高級的非過程化編程語言,允許用

80、戶在高層數(shù)據(jù)結(jié)構(gòu)上工作。它不要求用戶指定對數(shù)據(jù)的存放方法,也不需要用戶了解具體的數(shù)據(jù)存放方式,所以具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫系統(tǒng), 可以使用相同的結(jié)構(gòu)化查詢語言作為數(shù)據(jù)輸入與管理的接口。結(jié)構(gòu)化查詢語言語句可以嵌套,這使它具有極大的靈活性和強(qiáng)大的功能</p><p>  2.3 hadoop的hdfs存儲</p><p>  Hadoop有一個稱為HDFS的分布式系統(tǒng),全稱為Hadoo

81、p Distributed Filesystem。HDFS是Hadoop的旗艦級文件系統(tǒng)。</p><p>  HDFS以流式數(shù)據(jù)訪問模式來存儲超大文件,運(yùn)行與商用硬件集群上。</p><p>  1)流式數(shù)據(jù)訪問:HDFS的構(gòu)建思路是"一次寫入,多次讀取是最高效的訪問模式"。讀取整個數(shù)據(jù)集的實(shí)驗(yàn)延遲比讀取第一條記錄的時間延遲要重要。 </p><p

82、>  2)商用集群:Hadoop并不需要運(yùn)行在昂貴且高可靠的硬件上,普通的硬件便可以。</p><p><b>  數(shù)據(jù)塊</b></p><p>  每個磁盤都有默認(rèn)的數(shù)據(jù)塊大小,這是磁盤進(jìn)行數(shù)據(jù)讀寫的最小單位。HDFS也有塊的概念,但是大多數(shù),默認(rèn)為64MB。和單一磁盤的文件系統(tǒng)相似,HDFS上的文件也被劃分為塊大小的多個分塊,作為獨(dú)立的存儲單元。但和其它文

83、件系統(tǒng)不同的是,HDFS中小于一個塊大小的文件不會占據(jù)整個塊空間。</p><p>  HDFS的塊設(shè)置的如此大的原因是為了最小化尋址開銷,但是塊也不能設(shè)置的太大,因?yàn)镸apReduce中的map通常一次處理一個塊中的數(shù)據(jù),因此如果任務(wù)數(shù)太少(少于集群的節(jié)點(diǎn)數(shù)),會減慢任務(wù)執(zhí)行的速度。</p><p>  3 結(jié)構(gòu)化查詢到mapreduce轉(zhuǎn)化</p><p>  

84、3.1實(shí)驗(yàn)平臺的搭建</p><p>  3.1.1 三種環(huán)境介紹</p><p>  啟動Hadoop支持三種模式操作,分別是單機(jī)模式操作、偽分布模式操作和全分布模式操作。</p><p>  單機(jī)模式操作是Hadoop的默認(rèn)操作模式,當(dāng)首次解壓Hadoop的源碼包時,Hadoop無法了解硬件安裝環(huán)境,會保守地選擇最小配置,即單機(jī)模式。該模式主要用于開發(fā)調(diào)試Map

85、Reduce程序的應(yīng)用邏輯,而不會和守護(hù)進(jìn)程交互,避免增加額外的復(fù)雜性。</p><p>  偽分布模式操作是指在“單節(jié)點(diǎn)集群”上運(yùn)行Hadoop,其中所有的守護(hù)進(jìn)程都運(yùn)行在同一臺機(jī)器上。該模式在單機(jī)模式操作之上多了代碼調(diào)試功能,可以查閱內(nèi)存的使用情況、HDFS的輸入輸出以及守護(hù)進(jìn)程之間的交互。</p><p>  全分布模式操作是指一種實(shí)際意義上的Hadoop集群,其規(guī)??蓮膸讉€節(jié)點(diǎn)的小

86、集群到成百上千個節(jié)點(diǎn)的大集群,甚至是成千上萬的超大集群。</p><p>  單機(jī)模式操作和偽分布模式操作均用于開發(fā)與調(diào)試的目的。真實(shí)的Hadoop 集群是全分布模式操作。</p><p>  3.1.2偽分布環(huán)境搭建:</p><p>  1、宿主機(jī)(Windows)與客戶機(jī)(安裝在虛擬機(jī)中的Linux)網(wǎng)絡(luò)連接。</p><p>  a)

87、 Host-only 宿主機(jī)與客戶機(jī)單獨(dú)組網(wǎng);</p><p><b>  好處:網(wǎng)絡(luò)隔離;</b></p><p>  壞處:虛擬機(jī)和其他服務(wù)器之間不能通訊;</p><p>  b) Bridge 橋接 宿主機(jī)與客戶機(jī)在同一個局域網(wǎng)中。</p><p>  好處:竇在同一個局域網(wǎng),可以互相訪問;</p>

88、<p><b>  壞處:不完全。</b></p><p>  2、Hadoop的為分布式安裝步驟</p><p><b>  a) 設(shè)置靜態(tài)IP</b></p><p>  在centos下左面上右上角圖標(biāo)右鍵修改;</p><p>  重啟網(wǎng)卡service network rest

89、art;</p><p>  驗(yàn)證:執(zhí)行命令ifconfig</p><p>  b) 修改主機(jī)名(原名稱casichadoop) hostname查看當(dāng)前名稱</p><p>  修改當(dāng)前會話主機(jī)名:設(shè)置名稱 hostname hadoop</p><p>  修改配置文件中:hostname vi /etc/sysconfig/netw

90、ork 為hadoop</p><p>  c) 把hostname和ip綁定</p><p>  執(zhí)行命令 vi /etc/hosts增加10.10.10.10</p><p><b>  保存退出</b></p><p>  驗(yàn)證:ping hadoop</p><p>  d) 關(guān)閉防火墻

91、 先查看service iptables status</p><p>  Service iptables stop</p><p>  e) 防火墻自動啟動 先查看chkconfig --list | grep iptables</p><p>  關(guān)閉自動啟動防火墻 chkconfig iptables off</p><p>  驗(yàn)

92、證:chkconfig --list | grep iptables</p><p>  f) Ssh(secure shell)的免密碼登錄</p><p>  <1>執(zhí)行命令shh-keygen -t rsa 產(chǎn)生秘鑰,位于~/.ssh</p><p>  <2>執(zhí)行命令cp ~/.ssh/id_rsa.pub ~/.ssh/autho

93、rized_keys</p><p>  驗(yàn)證:ssh localhost</p><p>  g) 安裝JDK </p><p>  l 打開目錄 cd /usr/local </p><p>  l 然后刪除全部文件rm -rf * </p><p>  l 復(fù)制所有的文件到當(dāng)前目錄下cp /root/

94、Downloads/* .</p><p>  l 查看當(dāng)前目錄的權(quán)限 ls -l</p><p>  l 賦予權(quán)限執(zhí)行權(quán)限chmod u+x jdk-6u24-linux-i586.bin</p><p>  l 執(zhí)行安裝JDK ./jdk-6u24-linux-i586.bin </p><p>  l mv jdk1.6.0_24

95、jdk 重命名</p><p>  l 設(shè)置環(huán)境變量vi /etc/profile </p><p>  n Export JAVA_HOME=/usr/local/jdk</p><p>  n Export PATH=./$JAVA_HOME/bin:$PATH</p><p>  n Source /etc/profile</p&

96、gt;<p>  n 驗(yàn)證:java -version</p><p>  h) 安裝HADOOP</p><p>  i. Tar -zxvf hadoop-1.1.2.tar.zip</p><p>  ii. Mv hadoop-1.1.2 hadoop</p><p>  iii. 設(shè)置環(huán)境變量</p&g

97、t;<p>  n Export HADOOP_HOME=/usr/local/hadoop</p><p>  n Export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH</p><p>  iv. 修改四個配置文件</p><p>  1. 修改hadoop-env.sh</p>&l

98、t;p>  export JAVA_HOME=/usr/local/jdk</p><p>  修改core-site.xml</p><p>  修改hdfs-site.xml</p><p>  修改mapred-site.xml</p><p>  v. 執(zhí)行命令 hadoop namenoe

99、0;-format 對hdfs格式化</p><p>  vi. 執(zhí)行命令 start-all.sh</p><p>  vii. 執(zhí)行命令 jps 查看進(jìn)程</p><p>  Mapreduce的管理界面:</p><p>  Hdfs的管理界面:</p><

100、p>  3.2結(jié)構(gòu)化聚集查詢分析</p><p>  本次畢設(shè)的聚集查詢到mapreduce的轉(zhuǎn)換分成以下幾個步驟:</p><p>  接收輸入的sql(結(jié)構(gòu)化查詢命令)</p><p><b>  解析sql</b></p><p>  將解析的sql命令找到對應(yīng)到具體的聚集函數(shù)的mapreduce</p

101、><p><b>  進(jìn)行map過程</b></p><p>  進(jìn)行reduce過程</p><p><b>  輸出結(jié)果</b></p><p>  具體的流程圖如下圖所示:</p><p>  3.3分布式存儲和分布式計算介紹</p><p>  分

102、布式存儲系統(tǒng),是將數(shù)據(jù)分散存儲在多臺獨(dú)立的設(shè)備上。傳統(tǒng)的網(wǎng)絡(luò)存儲系統(tǒng)采用集中的存儲服務(wù)器存放所有數(shù)據(jù),存儲服務(wù)器成為系統(tǒng)性能的瓶頸,也是可靠性和安全性的焦點(diǎn),不能滿足大規(guī)模存儲應(yīng)用的需要。分布式網(wǎng)絡(luò)存儲系統(tǒng)采用可擴(kuò)展的系統(tǒng)結(jié)構(gòu),利用多臺存儲服務(wù)器分擔(dān)存儲負(fù)荷,利用位置服務(wù)器定位存儲信息,它不但提高了系統(tǒng)的可靠性、可用性和存取效率,還易于擴(kuò)展。</p><p>  分布式架構(gòu)的基本框架圖為:</p>

103、<p>  如圖所示,Namenode和datanode用來存儲數(shù)據(jù),一個大數(shù)據(jù)文件通過map分成許多塊(block)文件,namenode通過一定的算法將這些塊分件映射到各個datanode上,為了數(shù)據(jù)的安全性,每個block文件可能存儲多個備份,這就是簡單的hdfs的存儲過程。</p><p>  客戶端(client)將job通過job tracker傳給分布式系統(tǒng),job tracker將任務(wù)調(diào)

104、度分配到各個task tracker,tash tracker通過心跳從name node查找datanode找到要操作的block文件進(jìn)行操作,進(jìn)行mapreduce操作,簡而言之,mapreduce的過程就是分而治之的思想</p><p>  4 實(shí)驗(yàn)驗(yàn)證與程序的運(yùn)行結(jié)果</p><p>  4.1單機(jī)環(huán)境運(yùn)行結(jié)果</p><p>  單機(jī)環(huán)境的運(yùn)行就是本地調(diào)試

105、的過程,因?yàn)閱螜C(jī)的運(yùn)行根本沒有涉及到分布式的概念,只是最簡單的mapreduce的過程,將大數(shù)據(jù)文件轉(zhuǎn)換成小數(shù)據(jù)文件,讓后分而治之,最后將結(jié)果合并。流程如圖所示:</p><p>  調(diào)試結(jié)果和配置的運(yùn)行參數(shù)為:</p><p><b>  如圖紅線所示:</b></p><p>  Runjar是運(yùn)行jar的hadoop命令</p>

106、;<p>  第二個是設(shè)置自己程序打成的jar包,設(shè)置輸入輸出路徑</p><p>  運(yùn)行190M的大數(shù)據(jù)文件控制臺的輸出所示:</p><p>  聚集查詢你求和和求最小值的結(jié)果輸出:</p><p>  4.2偽分布式環(huán)境的運(yùn)行結(jié)果</p><p>  4.2.1 大數(shù)據(jù)文件上傳的分布式環(huán)境存儲系統(tǒng)(hdfs)</p

107、><p>  在hdfs系統(tǒng)的目錄/user/panther/下創(chuàng)建目錄in</p><p>  Hadoop fs -mkdir in</p><p><b>  如圖所示:</b></p><p>  將數(shù)據(jù)文件上傳到hdfs的目錄in下:</p><p>  通過hdfs的管理界面按查看上傳的文

108、件</p><p>  4.2.2 在偽分布環(huán)境下運(yùn)行mapreduce程序</p><p>  將自己所寫的程序通過maven打成jar,在hadoop的環(huán)境下運(yùn)行:</p><p>  此時觀察mapreduce的管理界面就會發(fā)現(xiàn)已經(jīng)有任務(wù)在運(yùn)行:</p><p>  上面紅線顯示job的進(jìn)程,從第二幅圖可以看出mapreduce的過程以

109、及中間過程產(chǎn)生的一些結(jié)果。</p><p>  由上面的統(tǒng)計圖可以看出在進(jìn)行map的過程中,已經(jīng)把中間結(jié)果copy到reduce過程,</p><p>  在map過程完全結(jié)束后,再進(jìn)行sort過程,最后進(jìn)行reduce過程!!</p><p>  由于數(shù)據(jù)量比較大所以需要運(yùn)行一段時間,一段時間后,輸出結(jié)果:</p><p><b>

110、;  5 實(shí)驗(yàn)結(jié)果分析</b></p><p>  通過改變文件塊的大小來查看map過程和reduce過程所用的時間,做了一個簡單的統(tǒng)計圖,如下圖所示</p><p>  上圖所示,在同一個需統(tǒng)計的數(shù)據(jù)文件,分別統(tǒng)計max,min,sum,avg函數(shù)在hdfs設(shè)定的塊大小為8M,64M,256M的時候統(tǒng)計map過程和recude過程所需要的時間,從圖中可以簡單的看出,當(dāng)hdfs

111、的數(shù)據(jù)塊越大,map的個數(shù)就越少,反之,map的個數(shù)越多,但是并不是map個數(shù)越多,效率越高。</p><p><b>  6 重要代碼分析</b></p><p>  一次結(jié)構(gòu)化查詢都是圍繞一次mapreduce過程來計算的,下面就是min的主要map過程和reduce過程:</p><p>  public static class Min

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論