大數(shù)據(jù)原理與應(yīng)用_第1頁
大數(shù)據(jù)原理與應(yīng)用_第2頁
大數(shù)據(jù)原理與應(yīng)用_第3頁
大數(shù)據(jù)原理與應(yīng)用_第4頁
大數(shù)據(jù)原理與應(yīng)用_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

緒論大數(shù)據(jù)發(fā)展背景及意義近幾年來,隨著計(jì)算機(jī)和信息技術(shù)的迅猛發(fā)展和普及應(yīng)用,行業(yè)應(yīng)用系統(tǒng)的規(guī)模迅速擴(kuò)大,行業(yè)應(yīng)用所產(chǎn)生的數(shù)據(jù)呈爆炸性增長【1】。動(dòng)輒達(dá)到數(shù)百TB甚至數(shù)十至數(shù)百PB規(guī)模的行業(yè)/企業(yè)大數(shù)據(jù)已遠(yuǎn)遠(yuǎn)超出了現(xiàn)有傳統(tǒng)的計(jì)算技術(shù)和信息系統(tǒng)的處理能力,因此,尋求有效的大數(shù)據(jù)處理技術(shù)、方法和手段已經(jīng)成為現(xiàn)實(shí)世界的迫切需求。百度目前的總數(shù)據(jù)量已超過1000PB,每天需要處理的網(wǎng)頁數(shù)據(jù)達(dá)到10PB~100PB;淘寶累計(jì)的交易數(shù)據(jù)量高達(dá)100PB;Twitter每天發(fā)布超過2億條消息,新浪微博每天發(fā)帖量達(dá)到8000萬條;中國移動(dòng)一個(gè)省的電話通聯(lián)記錄數(shù)據(jù)每月可達(dá)0.5PB~1PB;一個(gè)省會(huì)城市公安局道路車輛監(jiān)控?cái)?shù)據(jù)三年可達(dá)200億條、總量120TB。據(jù)世界權(quán)威IT信息咨詢分析公司IDC研究報(bào)告預(yù)測(cè):全世界數(shù)據(jù)量未來10年將從2009年的0.8ZB增長到2020年的35ZB(1ZB=1000EB=1000000PB),10年將增長44倍,年均增長40%。早幾年人們把大規(guī)模數(shù)據(jù)稱為“海量數(shù)據(jù)”,但實(shí)際上,大數(shù)據(jù)(BigData)這個(gè)概念早在2008年就已被提出。2008年,在Google成立10周年之際,著名的《自然》雜志出版了一期專刊,專門討論未來的大數(shù)據(jù)處理相關(guān)的一系列技術(shù)問題和挑戰(zhàn),其中就提出了“BigData”的概念。隨著大數(shù)據(jù)概念的普及,人們常常會(huì)問,多大的數(shù)據(jù)才叫大數(shù)據(jù)?其實(shí),關(guān)于大數(shù)據(jù),難以有一個(gè)非常定量的定義。維基百科給出了一個(gè)定性的描述:大數(shù)據(jù)是指無法使用傳統(tǒng)和常用的軟件技術(shù)和工具在一定時(shí)間內(nèi)完成獲取、管理和處理的數(shù)據(jù)集。進(jìn)一步,當(dāng)今“大數(shù)據(jù)”一詞的重點(diǎn)其實(shí)已經(jīng)不僅在于數(shù)據(jù)規(guī)模的定義,它更代表著信息技術(shù)發(fā)展進(jìn)入了一個(gè)新的時(shí)代,代表著爆炸性的數(shù)據(jù)信息給傳統(tǒng)的計(jì)算技術(shù)和信息技術(shù)帶來的技術(shù)挑戰(zhàn)和困難,代表著大數(shù)據(jù)處理所需的新的技術(shù)和方法,也代表著大數(shù)據(jù)分析和應(yīng)用所帶來的新發(fā)明、新服務(wù)和新的發(fā)展機(jī)遇。研究現(xiàn)狀由于大數(shù)據(jù)處理需求的迫切性和重要性,近年來大數(shù)據(jù)技術(shù)已經(jīng)在全球?qū)W術(shù)界、工業(yè)界和各國政府得到高度關(guān)注和重視,全球掀起了一個(gè)可與20世紀(jì)90年代的信息高速公路相提并論的研究熱潮。美國和歐洲一些發(fā)達(dá)國家政府都從國家科技戰(zhàn)略層面提出了一系列的大數(shù)據(jù)技術(shù)研發(fā)計(jì)劃,以推動(dòng)政府機(jī)構(gòu)、重大行業(yè)、學(xué)術(shù)界和工業(yè)界對(duì)大數(shù)據(jù)技術(shù)的探索研究和應(yīng)用。早在2010年12月,美國總統(tǒng)辦公室下屬的科學(xué)技術(shù)顧問委員會(huì)(PCAST)和信息技術(shù)顧問委員會(huì)(PITAC)向奧巴馬和國會(huì)提交了一份《規(guī)劃數(shù)字化未來》的戰(zhàn)略報(bào)告,把大數(shù)據(jù)收集和使用的工作提升到體現(xiàn)國家意志的戰(zhàn)略高度。報(bào)告列舉了5個(gè)貫穿各個(gè)科技領(lǐng)域的共同挑戰(zhàn),而第一個(gè)最重大的挑戰(zhàn)就是“數(shù)據(jù)”問題。報(bào)告指出:“如何收集、保存、管理、分析、共享正在呈指數(shù)增長的數(shù)據(jù)是我們必須面對(duì)的一個(gè)重要挑戰(zhàn)”。報(bào)告建議:“聯(lián)邦政府的每一個(gè)機(jī)構(gòu)和部門,都需要制定一個(gè)‘大數(shù)據(jù)’的戰(zhàn)略”。2012年3月,美國總統(tǒng)奧巴馬簽署并發(fā)布了一個(gè)“大數(shù)據(jù)研究發(fā)展創(chuàng)新計(jì)劃”(BigDataR&DInitiative),由美國國家自然基金會(huì)(NSF)、衛(wèi)生健康總署(NIH)、能源部(DOE)、國防部(DOD)等6大部門聯(lián)合,投資2億美元啟動(dòng)大數(shù)據(jù)技術(shù)研發(fā),這是美國政府繼1993年宣布“信息高速公路”計(jì)劃后的又一次重大科技發(fā)展部署。美國白宮科技政策辦公室還專門支持建立了一個(gè)大數(shù)據(jù)技術(shù)論壇,鼓勵(lì)企業(yè)和組織機(jī)構(gòu)間的大數(shù)據(jù)技術(shù)交流與合作。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)社會(huì)需求,指導(dǎo)經(jīng)濟(jì)運(yùn)行,更好地為人民服務(wù),并建議成員國建立“脈搏實(shí)驗(yàn)室”(PulseLabs),挖掘大數(shù)據(jù)的潛在價(jià)值。由于大數(shù)據(jù)技術(shù)的特點(diǎn)和重要性,目前國內(nèi)外已經(jīng)出現(xiàn)了“數(shù)據(jù)科學(xué)”的概念,即數(shù)據(jù)處理技術(shù)將成為一個(gè)與計(jì)算科學(xué)并列的新的科學(xué)領(lǐng)域。已故著名圖靈獎(jiǎng)獲得者JimGray在2007年的一次演講中提出,“數(shù)據(jù)密集型科學(xué)發(fā)現(xiàn)”(Data-IntensiveScientificDiscovery)將成為科學(xué)研究的第四范式,科學(xué)研究將從實(shí)驗(yàn)科學(xué)、理論科學(xué)、計(jì)算科學(xué),發(fā)展到目前興起的數(shù)據(jù)科學(xué)。為了緊跟全球大數(shù)據(jù)技術(shù)發(fā)展的浪潮,我國政府、學(xué)術(shù)界和工業(yè)界對(duì)大數(shù)據(jù)也予以了高度的關(guān)注。央視著名節(jié)目“對(duì)話”2013年4月14日和21日邀請(qǐng)了《大數(shù)據(jù)時(shí)代——生活、工作與思維的大變革》作者維克托·邁爾-舍恩伯格,以及美國大數(shù)據(jù)存儲(chǔ)技術(shù)公司LSI總裁阿比分別做客“對(duì)話”節(jié)目,做了兩期大數(shù)據(jù)專題談話節(jié)目“誰在引爆大數(shù)據(jù)”、“誰在掘金大數(shù)據(jù)”,國家央視媒體對(duì)大數(shù)據(jù)的關(guān)注和宣傳體現(xiàn)了大數(shù)據(jù)技術(shù)已經(jīng)成為國家和社會(huì)普遍關(guān)注的焦點(diǎn)。而國內(nèi)的學(xué)術(shù)界和工業(yè)界也都迅速行動(dòng),廣泛開展大數(shù)據(jù)技術(shù)的研究和開發(fā)。2013年以來,國家自然科學(xué)基金、973計(jì)劃、核高基、863等重大研究計(jì)劃都已經(jīng)把大數(shù)據(jù)研究列為重大的研究課題。為了推動(dòng)我國大數(shù)據(jù)技術(shù)的研究發(fā)展,2012年中國計(jì)算機(jī)學(xué)會(huì)(CCF)發(fā)起組織了CCF大數(shù)據(jù)專家委員會(huì),CCF專家委員會(huì)還特別成立了一個(gè)“大數(shù)據(jù)技術(shù)發(fā)展戰(zhàn)略報(bào)告”撰寫組,并已撰寫發(fā)布了《2013年中國大數(shù)據(jù)技術(shù)與產(chǎn)業(yè)發(fā)展白皮書》。未來展望大數(shù)據(jù)在帶來巨大技術(shù)挑戰(zhàn)的同時(shí),也帶來巨大的技術(shù)創(chuàng)新與商業(yè)機(jī)遇。不斷積累的大數(shù)據(jù)包含著很多在小數(shù)據(jù)量時(shí)不具備的深度知識(shí)和價(jià)值,大數(shù)據(jù)分析挖掘?qū)⒛転樾袠I(yè)/企業(yè)帶來巨大的商業(yè)價(jià)值,實(shí)現(xiàn)各種高附加值的增值服務(wù),進(jìn)一步提升行業(yè)/企業(yè)的經(jīng)濟(jì)效益和社會(huì)效益。由于大數(shù)據(jù)隱含著巨大的深度價(jià)值,美國政府認(rèn)為大數(shù)據(jù)是“未來的新石油”,對(duì)未來的科技與經(jīng)濟(jì)發(fā)展將帶來深遠(yuǎn)影響。因此,在未來,一個(gè)國家擁有數(shù)據(jù)的規(guī)模和運(yùn)用數(shù)據(jù)的能力將成為綜合國力的重要組成部分,對(duì)數(shù)據(jù)的占有、控制和運(yùn)用也將成為國家間和企業(yè)間新的爭奪焦點(diǎn)。大數(shù)據(jù)的研究和分析應(yīng)用具有十分重大的意義和價(jià)值。被譽(yù)為“大數(shù)據(jù)時(shí)代預(yù)言家”的維克托·邁爾-舍恩伯格在其《大數(shù)據(jù)時(shí)代》一書中列舉了大量詳實(shí)的大數(shù)據(jù)應(yīng)用案例,并分析預(yù)測(cè)了大數(shù)據(jù)的發(fā)展現(xiàn)狀和未來趨勢(shì),提出了很多重要的觀點(diǎn)和發(fā)展思路。他認(rèn)為:“大數(shù)據(jù)開啟了一次重大的時(shí)代轉(zhuǎn)型”,指出大數(shù)據(jù)將帶來巨大的變革,改變我們的生活、工作和思維方式,改變我們的商業(yè)模式,影響我們的經(jīng)濟(jì)、政治、科技和社會(huì)等各個(gè)層面。由于大數(shù)據(jù)行業(yè)應(yīng)用需求日益增長,未來越來越多的研究和應(yīng)用領(lǐng)域?qū)⑿枰褂么髷?shù)據(jù)并行計(jì)算技術(shù),大數(shù)據(jù)技術(shù)將滲透到每個(gè)涉及到大規(guī)模數(shù)據(jù)和復(fù)雜計(jì)算的應(yīng)用領(lǐng)域。不僅如此,以大數(shù)據(jù)處理為中心的計(jì)算技術(shù)將對(duì)傳統(tǒng)計(jì)算技術(shù)產(chǎn)生革命性的影響,廣泛影響計(jì)算機(jī)體系結(jié)構(gòu)、操作系統(tǒng)、數(shù)據(jù)庫、編譯技術(shù)、程序設(shè)計(jì)技術(shù)和方法、軟件工程技術(shù)、多媒體信息處理技術(shù)、人工智能以及其他計(jì)算機(jī)應(yīng)用技術(shù),并與傳統(tǒng)計(jì)算技術(shù)相互結(jié)合產(chǎn)生很多新的研究熱點(diǎn)和課題。大數(shù)據(jù)給傳統(tǒng)的計(jì)算技術(shù)帶來了很多新的挑戰(zhàn)。大數(shù)據(jù)使得很多在小數(shù)據(jù)集上有效的傳統(tǒng)的串行化算法在面對(duì)大數(shù)據(jù)處理時(shí)難以在可接受的時(shí)間內(nèi)完成計(jì)算;同時(shí)大數(shù)據(jù)含有較多噪音、樣本稀疏、樣本不平衡等特點(diǎn)使得現(xiàn)有的很多機(jī)器學(xué)習(xí)算法有效性降低。因此,微軟全球副總裁陸奇博士在2012年全國第一屆“中國云/移動(dòng)互聯(lián)網(wǎng)創(chuàng)新大獎(jiǎng)賽”頒獎(jiǎng)大會(huì)主題報(bào)告中指出:“大數(shù)據(jù)使得絕大多數(shù)現(xiàn)有的串行化機(jī)器學(xué)習(xí)算法都需要重寫”。大數(shù)據(jù)技術(shù)的發(fā)展將給我們研究計(jì)算機(jī)技術(shù)的專業(yè)人員帶來新的挑戰(zhàn)和機(jī)遇。目前,國內(nèi)外IT企業(yè)對(duì)大數(shù)據(jù)技術(shù)人才的需求正快速增長,未來5~10年內(nèi)業(yè)界將需要大量的掌握大數(shù)據(jù)處理技術(shù)的人才。IDC研究報(bào)告指出,“下一個(gè)10年里,世界范圍的服務(wù)器數(shù)量將增長10倍,而企業(yè)數(shù)據(jù)中心管理的數(shù)據(jù)信息將增長50倍,企業(yè)數(shù)據(jù)中心需要處理的數(shù)據(jù)文件數(shù)量將至少增長75倍,而世界范圍內(nèi)IT專業(yè)技術(shù)人才的數(shù)量僅能增長1.5倍。”因此,未來十年里大數(shù)據(jù)處理和應(yīng)用需求與能提供的技術(shù)人才數(shù)量之間將存在一個(gè)巨大的差距。目前,由于國內(nèi)外高校開展大數(shù)據(jù)技術(shù)人才培養(yǎng)的時(shí)間不長,技術(shù)市場(chǎng)上掌握大數(shù)據(jù)處理和應(yīng)用開發(fā)技術(shù)的人才十分短缺,因而這方面的技術(shù)人才十分搶手,供不應(yīng)求。國內(nèi)幾乎所有著名的IT企業(yè),如百度、騰訊、阿里巴巴和淘寶、奇虎360等,都大量需要大數(shù)據(jù)技術(shù)人才。大數(shù)據(jù)基礎(chǔ)與技術(shù)盤點(diǎn)4.1大數(shù)據(jù)概念“大數(shù)據(jù)”是需要新處理模式才能具有更強(qiáng)的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的海量、高增長率和多樣化的信息資產(chǎn)【2】。從某種程度上說,大數(shù)據(jù)是數(shù)據(jù)分析的前沿技術(shù)。簡言之,從各種各樣類型的數(shù)據(jù)中,快速獲得有價(jià)值信息的能力,就是大數(shù)據(jù)技術(shù)。大數(shù)據(jù)技術(shù)的戰(zhàn)略意義不在于掌握龐大的數(shù)據(jù)信息,而在于對(duì)這些含有意義的數(shù)據(jù)進(jìn)行專業(yè)化處理。換句話來說,如果把大數(shù)據(jù)比作一種產(chǎn)業(yè),那么這種產(chǎn)業(yè)實(shí)現(xiàn)盈利的關(guān)鍵,在于提高對(duì)數(shù)據(jù)的“加工能力”,通過“加工”實(shí)現(xiàn)數(shù)據(jù)的“增值”【3】。大數(shù)據(jù)分析相比于傳統(tǒng)的數(shù)據(jù)倉庫應(yīng)用,具有數(shù)據(jù)量大、查詢分析復(fù)雜等特點(diǎn)。大數(shù)據(jù)的4個(gè)“V”,或者說特點(diǎn)有四個(gè)層面:第一,數(shù)據(jù)體量巨大。從TB級(jí)別,躍升到PB級(jí)別;第二,數(shù)據(jù)類型繁多。前文提到的網(wǎng)絡(luò)日志、視頻、圖片、地理位置信息等等。第三,處理速度快,1秒定律,可從各種類型的數(shù)據(jù)中快速獲得高價(jià)值的信息,這一點(diǎn)也是和傳統(tǒng)的數(shù)據(jù)挖掘技術(shù)有著本質(zhì)的不同。第四,只要合理利用數(shù)據(jù)并對(duì)其進(jìn)行正確、準(zhǔn)確的分析,將會(huì)帶來很高的價(jià)值回報(bào)。業(yè)界將其歸納為4個(gè)“V”——Volume(數(shù)據(jù)體量大)、Variety(數(shù)據(jù)類型繁多)、Velocity(處理速度快)、Value(價(jià)值密度低)。大數(shù)據(jù)最核心的價(jià)值就是在于對(duì)于海量數(shù)據(jù)進(jìn)行存儲(chǔ)和分析。比起現(xiàn)有的其他技術(shù)而言,大數(shù)據(jù)的“廉價(jià)、迅速、優(yōu)化”這三方面的綜合成本是最優(yōu)的【4】。4.2大數(shù)據(jù)用途意義及弊端大數(shù)據(jù)可分成大數(shù)據(jù)技術(shù)、大數(shù)據(jù)工程、大數(shù)據(jù)科學(xué)和大數(shù)據(jù)應(yīng)用等領(lǐng)域。目前人們談?wù)撟疃嗟氖谴髷?shù)據(jù)技術(shù)和大數(shù)據(jù)應(yīng)用。工程和科學(xué)問題尚未被重視。大數(shù)據(jù)工程指大數(shù)據(jù)的規(guī)劃建設(shè)運(yùn)營管理的系統(tǒng)工程;大數(shù)據(jù)科學(xué)關(guān)注大數(shù)據(jù)網(wǎng)絡(luò)發(fā)展和運(yùn)營過程中發(fā)現(xiàn)和驗(yàn)證大數(shù)據(jù)的規(guī)律及其與自然和社會(huì)活動(dòng)之間的關(guān)系【5】。物聯(lián)網(wǎng)、云計(jì)算、移動(dòng)互聯(lián)網(wǎng)、車聯(lián)網(wǎng)、手機(jī)、平板電腦、PC以及遍布地球各個(gè)角落的各種各樣的傳感器,無一不是數(shù)據(jù)來源或者承載的方式。雖然大數(shù)據(jù)的擁護(hù)者看到了使用大數(shù)據(jù)的巨大潛力,但也有隱私倡導(dǎo)者擔(dān)心,因?yàn)樵絹碓蕉嗟娜碎_始收集相關(guān)數(shù)據(jù),無論是他們是否會(huì)故意透露這些數(shù)據(jù)或通過社交媒體張貼,甚至他們?cè)诓恢挥X中通過分享自己的生活而公布了一些具體的數(shù)字細(xì)節(jié)。正因?yàn)槿绱?,大?shù)據(jù)的隱私問題一直被一些學(xué)者所詬病。4.3大數(shù)據(jù)技術(shù)盤點(diǎn)4.3.1分布式系統(tǒng)基礎(chǔ)架構(gòu)HadoopHadoop是一個(gè)開源的大數(shù)據(jù)分析軟件,或者說編程模式。它是通過分布式的方式處理大數(shù)據(jù)的,因?yàn)殚_源的原因現(xiàn)在很多的企業(yè)或多或少的在運(yùn)用Hadoop的技術(shù)來解決一些大數(shù)據(jù)的問題,在數(shù)據(jù)倉庫方面Hadoop是非常強(qiáng)大的。但在數(shù)據(jù)集市以及實(shí)時(shí)的分析展現(xiàn)層面,Hadoop也有著明顯的不足。目前,Hadoop已經(jīng)成長為包括Hadoopcommon、HDFS、MapReduce、zookeeper、Avro、Chuwak、Hbase、Hive、Mahout、Pig在內(nèi)的十個(gè)子項(xiàng)目。其中,HDFS和MapReduce是這個(gè)框架的核心。HDFS為海量的數(shù)據(jù)提供了存儲(chǔ),而MapReduce為海量的數(shù)據(jù)提供了計(jì)算【6】。4.3.2編程模型MapReduceMapReduce是Hadoop的核心組件之一,Hadoop主要分布式包括兩部分,一是分布式文件系統(tǒng)HDFS,一部是分布式計(jì)算框,就是MapReduce,缺一不可【7】,也就是說,可以通過MapReduce很容易在Hadoop平臺(tái)上進(jìn)行分布式的計(jì)算編程。它極大地方便了編程人員在不會(huì)分布式并行編程的情況下,可以將自己的程序運(yùn)行在分布式系統(tǒng)上。當(dāng)前的軟件實(shí)現(xiàn)是指定一個(gè)Map(映射)函數(shù),用來把一組鍵值對(duì)映射成一組新的鍵值對(duì),指定并發(fā)的Reduce(歸約)函數(shù),用來保證所有映射的鍵值對(duì)中的每一個(gè)共享相同的鍵組【8】。4.3.3分布式數(shù)據(jù)庫HBaseHBase是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫,它是Apache的Hadoop項(xiàng)目的子項(xiàng)目【9】。HBase不同于一般的關(guān)系數(shù)據(jù)庫,它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫。另一個(gè)不同的是HBase基于列的而不是基于行的模式。HBase利用Hadoop-HDFS作為其文件存儲(chǔ)系統(tǒng),利用Hadoop-MapReduce來處理HBase中的海量數(shù)據(jù),利用Zookeeper作為對(duì)應(yīng)的協(xié)同服務(wù)【10】。Hadoop框架的工作機(jī)制 Hadoop是一個(gè)用于構(gòu)建云平臺(tái)的Apache開源項(xiàng)目。使用Hadoop框架有利于我們方便、快速的實(shí)現(xiàn)計(jì)算機(jī)集群。在Hadoop平臺(tái)上,采用了HDFS(分布式文件系統(tǒng))來實(shí)現(xiàn)超大文件的存儲(chǔ)和容錯(cuò),而使用了MapReduce的編程模式來進(jìn)行計(jì)算。將Hadoop運(yùn)用到數(shù)據(jù)挖掘,一個(gè)關(guān)鍵的問題就是如何實(shí)現(xiàn)將傳統(tǒng)的數(shù)據(jù)挖掘算法實(shí)行并行化。對(duì)于傳統(tǒng)的數(shù)據(jù)挖掘算法,結(jié)合算法自身的特點(diǎn),我們可以很容易或者需要深入研究才能發(fā)現(xiàn)它是否能夠并行【11】。對(duì)于能夠并行實(shí)現(xiàn)的算法,結(jié)合MapReduce編程模式,我們可以將其移植到Hadoop平臺(tái)上,高效的、并行的完成數(shù)據(jù)挖掘任務(wù)。本節(jié)將對(duì)HDFS的核心機(jī)制和架構(gòu)作深入的研究和分析。研究內(nèi)容和觀點(diǎn)主要來自Hadoop的官方站點(diǎn)【12】。前提設(shè)計(jì)和目標(biāo)1.1硬件錯(cuò)誤硬件錯(cuò)誤是常態(tài)而不是異常。HDFS可能由成百上千的服務(wù)器所構(gòu)成,每個(gè)服務(wù)器上存儲(chǔ)著文件系統(tǒng)的部分?jǐn)?shù)據(jù)。我們面對(duì)的現(xiàn)實(shí)是構(gòu)成系統(tǒng)的組件數(shù)目是巨大的,而且任意組件都有可能失效,這意味著總是有一部分HDFS的組件是不工作的。因此錯(cuò)誤檢測(cè)和快速、自動(dòng)的恢復(fù)是HDFS最核心的架構(gòu)目標(biāo)。1.2流式數(shù)據(jù)訪問運(yùn)行在HDFS上的應(yīng)用和普通的應(yīng)用不同,需要流式訪問它們的數(shù)據(jù)集。HDFS的設(shè)計(jì)中更多的考慮到了數(shù)據(jù)批處理,而不是用戶交互處理。比之?dāng)?shù)據(jù)訪問的低延遲問題,更關(guān)鍵的在于數(shù)據(jù)訪問的高吞吐量。POSIX標(biāo)準(zhǔn)設(shè)置的很多硬性約束對(duì)HDFS應(yīng)用系統(tǒng)不是必需的。為了提高數(shù)據(jù)的吞吐量,在一些關(guān)鍵方面對(duì)POSIX的語義做了一些修改。1.3大規(guī)模數(shù)據(jù)集運(yùn)行在HDFS上的應(yīng)用具有很大的數(shù)據(jù)集。HDFS上的一個(gè)典型文件大小一般都在G字節(jié)至T字節(jié)。因此,HDFS被調(diào)節(jié)以支持大文件存儲(chǔ)。它應(yīng)該能提供整體上高的數(shù)據(jù)傳輸帶寬,能在一個(gè)集群里擴(kuò)展到數(shù)百個(gè)節(jié)點(diǎn)。一個(gè)單一的HDFS實(shí)例應(yīng)該能支撐數(shù)以千萬計(jì)的文件。1.4簡單的一致性模型HDFS應(yīng)用需要一個(gè)“一次寫入多次讀取”的文件訪問模型。一個(gè)文件經(jīng)過創(chuàng)建、寫入和關(guān)閉之后就不需要改變。這一假設(shè)簡化了數(shù)據(jù)一致性問題,并且使高吞吐量的數(shù)據(jù)訪問成為可能。MapReduce應(yīng)用或者網(wǎng)絡(luò)爬蟲應(yīng)用都非常適合這個(gè)模型。目前還有計(jì)劃在將來擴(kuò)充這個(gè)模型,使之支持文件的附加寫操作。1.5“移動(dòng)計(jì)算比移動(dòng)數(shù)據(jù)更劃算”一個(gè)應(yīng)用請(qǐng)求的計(jì)算,離它操作的數(shù)據(jù)越近就越高效,在數(shù)據(jù)達(dá)到海量級(jí)別的時(shí)候更是如此。因?yàn)檫@樣就能降低網(wǎng)絡(luò)阻塞的影響,提高系統(tǒng)數(shù)據(jù)的吞吐量。將計(jì)算移動(dòng)到數(shù)據(jù)附近,比之將數(shù)據(jù)移動(dòng)到應(yīng)用所在顯然更好。HDFS為應(yīng)用提供了將它們自己移動(dòng)到數(shù)據(jù)附近的接口。1.6異構(gòu)軟硬件平臺(tái)間的可移植性HDFS在設(shè)計(jì)的時(shí)候就考慮到平臺(tái)的可移植性。這種特性方便了HDFS作為大規(guī)模數(shù)據(jù)應(yīng)用平臺(tái)的推廣。Namenode和DatanodeHadoop為應(yīng)用程序透明地提供了一組穩(wěn)定可靠的接口。Hadoop框架的主要組成部分Hadoop分布式文件系統(tǒng)(HDFS)和MapReduce的實(shí)現(xiàn)。HDFS采用Master/Slave架構(gòu),一個(gè)HDFS集群由一個(gè)Namenode節(jié)點(diǎn)和一組DataNode節(jié)點(diǎn)組成。Namenode是一個(gè)中心服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的名字空間(NameSpace)以及客戶端對(duì)文件的訪問。在集群系統(tǒng)中,一般在一個(gè)節(jié)點(diǎn)上運(yùn)行一個(gè)DataNode,負(fù)責(zé)管理它所在節(jié)點(diǎn)上的數(shù)據(jù)存儲(chǔ),并負(fù)責(zé)處理文件系統(tǒng)客戶端的讀寫請(qǐng)求,在Namenode的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)塊的創(chuàng)建、刪除和復(fù)制。Hadoop還實(shí)現(xiàn)了Google的MapReduce分布式計(jì)算模型,MapReduce把應(yīng)用程序的總?cè)蝿?wù)分割成許多子任務(wù),每個(gè)子任務(wù)可以在任何集群節(jié)點(diǎn)(DataNode節(jié)點(diǎn),通常也作為計(jì)算節(jié)點(diǎn))上并行處理。HDFS創(chuàng)建了多份數(shù)據(jù)塊(datablocks)的副本(Replicas),以保證各個(gè)子任務(wù)節(jié)點(diǎn)計(jì)算的可靠性(Reliability)【13】。由于采用了分布式文件系統(tǒng)和MapReduce模型,因此Hadoop框架具有高容錯(cuò)性及對(duì)數(shù)據(jù)讀寫的高吞吐率,能自動(dòng)處理失敗節(jié)點(diǎn)。Namenode和Datanode被設(shè)計(jì)成可以在普通的商用機(jī)器上運(yùn)行。這些機(jī)器一般運(yùn)行著GNU/Linux操作系統(tǒng)(OS)。HDFS采用Java語言開發(fā),因此任何支持Java的機(jī)器都可以部署Namenode或Datanode。由于采用了可移植性極強(qiáng)的Java語言,使得HDFS可以部署到多種類型的機(jī)器上。一個(gè)典型的部署場(chǎng)景是一臺(tái)機(jī)器上只運(yùn)行一個(gè)Namenode實(shí)例,而集群中的其它機(jī)器分別運(yùn)行一個(gè)Datanode實(shí)例。這種架構(gòu)并不排斥在一臺(tái)機(jī)器上運(yùn)行多個(gè)Datanode,只不過這樣的情況比較少見。集群中單一Namenode的結(jié)構(gòu)大大簡化了系統(tǒng)的架構(gòu)。Namenode是所有HDFS元數(shù)據(jù)的仲裁者和管理者,這樣,用戶數(shù)據(jù)永遠(yuǎn)不會(huì)流過Namenode。Namenode上的文件名稱空間信息存儲(chǔ)在FsImage文件中,Namenode上還有一個(gè)事務(wù)日志文件EditLog。這兩個(gè)文件要有備份,以防文件損壞或者Namenode宕機(jī)導(dǎo)致系統(tǒng)不可恢復(fù)。Namenode的作用主要有以下3個(gè):一是文件映射,把一個(gè)文件映射到一批數(shù)據(jù)block,把文件數(shù)據(jù)映射到Namenode上;二是集群的配置管理,數(shù)據(jù)塊的管理和復(fù)制;三是日志處理。文件系統(tǒng)的名字空間(namespace)HDFS支持傳統(tǒng)的層次型文件組織結(jié)構(gòu)。用戶或者應(yīng)用程序可以創(chuàng)建目錄,然后將文件保存在這些目錄里。文件系統(tǒng)名字空間的層次結(jié)構(gòu)和大多數(shù)現(xiàn)有的文件系統(tǒng)類似:用戶可以創(chuàng)建、刪除、移動(dòng)或重命名文件。當(dāng)前,HDFS不支持用戶磁盤配額和訪問權(quán)限控制,也不支持硬鏈接和軟鏈接。但是HDFS架構(gòu)并不妨礙實(shí)現(xiàn)這些特性。Namenode負(fù)責(zé)維護(hù)文件系統(tǒng)的名字空間,任何對(duì)文件系統(tǒng)名字空間或?qū)傩缘男薷亩紝⒈籒amenode記錄下來。應(yīng)用程序可以設(shè)置HDFS保存的文件的副本數(shù)目。文件副本的數(shù)目稱為文件的副本系數(shù),這個(gè)信息也是由Namenode保存的。數(shù)據(jù)復(fù)制HDFS被設(shè)計(jì)成能夠在一個(gè)大集群中跨機(jī)器可靠地存儲(chǔ)超大文件。它將每個(gè)文件存儲(chǔ)成一系列的數(shù)據(jù)塊,除了最后一個(gè),所有的數(shù)據(jù)塊都是同樣大小的。為了容錯(cuò),文件的所有數(shù)據(jù)塊都會(huì)有副本。每個(gè)文件的數(shù)據(jù)塊大小和副本系數(shù)都是可配置的。應(yīng)用程序可以指定某個(gè)文件的副本數(shù)目。副本系數(shù)可以在文件創(chuàng)建的時(shí)候指定,也可以在之后改變。HDFS中的文件都是一次性寫入的,并且嚴(yán)格要求在任何時(shí)候只能有一個(gè)寫入者。Namenode全權(quán)管理數(shù)據(jù)塊的復(fù)制,它周期性地從集群中的每個(gè)Datanode接收心跳信號(hào)和塊狀態(tài)報(bào)告(Blockreport)。接收到心跳信號(hào)意味著該Datanode節(jié)點(diǎn)工作正常。塊狀態(tài)報(bào)告包含了一個(gè)該Datanode上所有數(shù)據(jù)塊的列表。4.1副本存放副本的存放是HDFS可靠性和性能的關(guān)鍵。優(yōu)化的副本存放策略是HDFS區(qū)分于其他大部分分布式文件系統(tǒng)的重要特性。這種特性需要做大量的調(diào)優(yōu),并需要經(jīng)驗(yàn)的積累。HDFS采用一種稱為機(jī)架感知(rack-aware)的策略來改進(jìn)數(shù)據(jù)的可靠性、可用性和網(wǎng)絡(luò)帶寬的利用率。目前實(shí)現(xiàn)的副本存放策略只是在這個(gè)方向上的第一步。實(shí)現(xiàn)這個(gè)策略的短期目標(biāo)是驗(yàn)證它在生產(chǎn)環(huán)境下的有效性,觀察它的行為,為實(shí)現(xiàn)更先進(jìn)的策略打下測(cè)試和研究的基礎(chǔ)。大型HDFS實(shí)例一般運(yùn)行在跨越多個(gè)機(jī)架的計(jì)算機(jī)組成的集群上,不同機(jī)架上的兩臺(tái)機(jī)器之間的通訊需要經(jīng)過交換機(jī)。在大多數(shù)情況下,同一個(gè)機(jī)架內(nèi)的兩臺(tái)機(jī)器間的帶寬會(huì)比不同機(jī)架的兩臺(tái)機(jī)器間的帶寬大。通過一個(gè)機(jī)架感知的過程,Namenode可以確定每個(gè)Datanode所屬的機(jī)架id。一個(gè)簡單但沒有優(yōu)化的策略就是將副本存放在不同的機(jī)架上。這樣可以有效防止當(dāng)整個(gè)機(jī)架失效時(shí)數(shù)據(jù)的丟失,并且允許讀數(shù)據(jù)的時(shí)候充分利用多個(gè)機(jī)架的帶寬。這種策略設(shè)置可以將副本均勻分布在集群中,有利于當(dāng)組件失效情況下的負(fù)載均衡。但是,因?yàn)檫@種策略的一個(gè)寫操作需要傳輸數(shù)據(jù)塊到多個(gè)機(jī)架,這增加了寫的代價(jià)。在大多數(shù)情況下,副本系數(shù)是3,HDFS的存放策略是將一個(gè)副本存放在本地機(jī)架的節(jié)點(diǎn)上,一個(gè)副本放在同一機(jī)架的另一個(gè)節(jié)點(diǎn)上,最后一個(gè)副本放在不同機(jī)架的節(jié)點(diǎn)上。這種策略減少了機(jī)架間的數(shù)據(jù)傳輸,這就提高了寫操作的效率。機(jī)架的錯(cuò)誤遠(yuǎn)遠(yuǎn)比節(jié)點(diǎn)的錯(cuò)誤少,所以這個(gè)策略不會(huì)影響到數(shù)據(jù)的可靠性和可用性。于此同時(shí),因?yàn)閿?shù)據(jù)塊只放在兩個(gè)(不是三個(gè))不同的機(jī)架上,所以此策略減少了讀取數(shù)據(jù)時(shí)需要的網(wǎng)絡(luò)傳輸總帶寬。在這種策略下,副本并不是均勻分布在不同的機(jī)架上。三分之一的副本在一個(gè)節(jié)點(diǎn)上,三分之二的副本在一個(gè)機(jī)架上,其他副本均勻分布在剩下的機(jī)架中,這一策略在不損害數(shù)據(jù)可靠性和讀取性能的情況下改進(jìn)了寫的性能。4.2副本選擇為了降低整體的帶寬消耗和讀取延時(shí),HDFS會(huì)盡量讓讀取程序讀取離它最近的副本。如果在讀取程序的同一個(gè)機(jī)架上有一個(gè)副本,那么就讀取該副本。如果一個(gè)HDFS集群跨越多個(gè)數(shù)據(jù)中心,那么客戶端也將首先讀本地?cái)?shù)據(jù)中心的副本。4.3安全模式Namenode啟動(dòng)后會(huì)進(jìn)入一個(gè)稱為安全模式的特殊狀態(tài)。處于安全模式的Namenode是不會(huì)進(jìn)行數(shù)據(jù)塊的復(fù)制的。Namenode從所有的Datanode接收心跳信號(hào)和塊狀態(tài)報(bào)告。塊狀態(tài)報(bào)告包括了某個(gè)Datanode所有的數(shù)據(jù)塊列表。每個(gè)數(shù)據(jù)塊都有一個(gè)指定的最小副本數(shù)。當(dāng)Namenode檢測(cè)確認(rèn)某個(gè)數(shù)據(jù)塊的副本數(shù)目達(dá)到這個(gè)最小值,那么該數(shù)據(jù)塊就會(huì)被認(rèn)為是副本安全(safelyreplicated)的;在一定百分比(這個(gè)參數(shù)可配置)的數(shù)據(jù)塊被Namenode檢測(cè)確認(rèn)是安全之后(加上一個(gè)額外的30秒等待時(shí)間),Namenode將退出安全模式狀態(tài)。接下來它會(huì)確定還有哪些數(shù)據(jù)塊的副本沒有達(dá)到指定數(shù)目,并將這些數(shù)據(jù)塊復(fù)制到其他Datanode上。文件系統(tǒng)元數(shù)據(jù)的持久化Namenode上保存著HDFS的名字空間。對(duì)于任何對(duì)文件系統(tǒng)元數(shù)據(jù)產(chǎn)生修改的操作,Namenode都會(huì)使用一種稱為EditLog的事務(wù)日志記錄下來。例如,在HDFS中創(chuàng)建一個(gè)文件,Namenode就會(huì)在Editlog中插入一條記錄來表示;同樣地,修改文件的副本系數(shù)也將往Editlog插入一條記錄。Namenode在本地操作系統(tǒng)的文件系統(tǒng)中存儲(chǔ)這個(gè)Editlog。整個(gè)文件系統(tǒng)的名字空間,包括數(shù)據(jù)塊到文件的映射、文件的屬性等,都存儲(chǔ)在一個(gè)稱為FsImage的文件中,這個(gè)文件也是放在Namenode所在的本地文件系統(tǒng)上。Namenode在內(nèi)存中保存著整個(gè)文件系統(tǒng)的名字空間和文件數(shù)據(jù)塊映射(Blockmap)的映像。這個(gè)關(guān)鍵的元數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)得很緊湊,因而一個(gè)有4G內(nèi)存的Namenode足夠支撐大量的文件和目錄。當(dāng)Namenode啟動(dòng)時(shí),它從硬盤中讀取Editlog和FsImage,將所有Editlog中的事務(wù)作用在內(nèi)存中的FsImage上,并將這個(gè)新版本的FsImage從內(nèi)存中保存到本地磁盤上,然后刪除舊的Editlog,因?yàn)檫@個(gè)舊的Editlog的事務(wù)都已經(jīng)作用在FsImage上了。這個(gè)過程稱為一個(gè)檢查點(diǎn)(checkpoint)。在當(dāng)前實(shí)現(xiàn)中,檢查點(diǎn)只發(fā)生在Namenode啟動(dòng)時(shí),在不久的將來將實(shí)現(xiàn)支持周期性的檢查點(diǎn)。Datanode將HDFS數(shù)據(jù)以文件的形式存儲(chǔ)在本地的文件系統(tǒng)中,它并不知道有關(guān)HDFS文件的信息。它把每個(gè)HDFS數(shù)據(jù)塊存儲(chǔ)在本地文件系統(tǒng)的一個(gè)單獨(dú)的文件中。Datanode并不在同一個(gè)目錄創(chuàng)建所有的文件,實(shí)際上,它用試探的方法來確定每個(gè)目錄的最佳文件數(shù)目,并且在適當(dāng)?shù)臅r(shí)候創(chuàng)建子目錄。在同一個(gè)目錄中創(chuàng)建所有的本地文件并不是最優(yōu)的選擇,這是因?yàn)楸镜匚募到y(tǒng)可能無法高效地在單個(gè)目錄中支持大量的文件。當(dāng)一個(gè)Datanode啟動(dòng)時(shí),它會(huì)掃描本地文件系統(tǒng),產(chǎn)生一個(gè)這些本地文件對(duì)應(yīng)的所有HDFS數(shù)據(jù)塊的列表,然后作為報(bào)告發(fā)送到Namenode,這個(gè)報(bào)告就是塊狀態(tài)報(bào)告。通訊協(xié)議所有的HDFS通訊協(xié)議都是建立在TCP/IP協(xié)議之上??蛻舳送ㄟ^一個(gè)可配置的TCP端口連接到Namenode,通過ClientProtocol協(xié)議與Namenode交互。而Datanode使用DatanodeProtocol協(xié)議與Namenode交互。一個(gè)遠(yuǎn)程過程調(diào)用(RPC)模型被抽象出來封裝ClientProtocol和Datanodeprotocol協(xié)議。在設(shè)計(jì)上,Namenode不會(huì)主動(dòng)發(fā)起RPC,而是響應(yīng)來自客戶端或Datanode的RPC請(qǐng)求。健壯性HDFS的主要目標(biāo)就是即使在出錯(cuò)的情況下也要保證數(shù)據(jù)存儲(chǔ)的可靠性。常見的三種出錯(cuò)情況是:Namenode出錯(cuò),Datanode出錯(cuò)和網(wǎng)絡(luò)割裂(networkpartitions)。7.1磁盤數(shù)據(jù)錯(cuò)誤,心跳檢測(cè)和重新復(fù)制每個(gè)Datanode節(jié)點(diǎn)周期性地向Namenode發(fā)送心跳信號(hào)。網(wǎng)絡(luò)割裂可能導(dǎo)致一部分Datanode跟Namenode失去聯(lián)系。Namenode通過心跳信號(hào)的缺失來檢測(cè)這一情況,并將這些近期不再發(fā)送心跳信號(hào)Datanode標(biāo)記為宕機(jī),不會(huì)再將新的IO請(qǐng)求發(fā)給它們。任何存儲(chǔ)在宕機(jī)Datanode上的數(shù)據(jù)將不再有效。Datanode的宕機(jī)可能會(huì)引起一些數(shù)據(jù)塊的副本系數(shù)低于指定值,Namenode不斷地檢測(cè)這些需要復(fù)制的數(shù)據(jù)塊,一旦發(fā)現(xiàn)就啟動(dòng)復(fù)制操作。在下列情況下,可能需要重新復(fù)制:某個(gè)Datanode節(jié)點(diǎn)失效,某個(gè)副本遭到損壞,Datanode上的硬盤錯(cuò)誤,或者文件的副本系數(shù)增大。7.2集群均衡HDFS的架構(gòu)支持?jǐn)?shù)據(jù)均衡策略。如果某個(gè)Datanode節(jié)點(diǎn)上的空閑空間低于特定的臨界點(diǎn),按照均衡策略系統(tǒng)就會(huì)自動(dòng)地將數(shù)據(jù)從這個(gè)Datanode移動(dòng)到其他空閑的Datanode。當(dāng)對(duì)某個(gè)文件的請(qǐng)求突然增加,那么也可能啟動(dòng)一個(gè)計(jì)劃創(chuàng)建該文件新的副本,并且同時(shí)重新平衡集群中的其他數(shù)據(jù)。這些均衡策略目前還沒有實(shí)現(xiàn)。7.3數(shù)據(jù)完整性從某個(gè)Datanode獲取的數(shù)據(jù)塊有可能是損壞的,損壞可能是由Datanode的存儲(chǔ)設(shè)備錯(cuò)誤、網(wǎng)絡(luò)錯(cuò)誤或者軟件bug造成的。HDFS客戶端軟件實(shí)現(xiàn)了對(duì)HDFS文件內(nèi)容的校驗(yàn)和(checksum)檢查。當(dāng)客戶端創(chuàng)建一個(gè)新的HDFS文件,會(huì)計(jì)算這個(gè)文件每個(gè)數(shù)據(jù)塊的校驗(yàn)和,并將校驗(yàn)和作為一個(gè)單獨(dú)的隱藏文件保存在同一個(gè)HDFS名字空間下。當(dāng)客戶端獲取文件內(nèi)容后,它會(huì)檢驗(yàn)從Datanode獲取的數(shù)據(jù)跟相應(yīng)的校驗(yàn)和文件中的校驗(yàn)和是否匹配,如果不匹配,客戶端可以選擇從其他Datanode獲取該數(shù)據(jù)塊的副本。7.4元數(shù)據(jù)磁盤錯(cuò)誤FsImage和Editlog是HDFS的核心數(shù)據(jù)結(jié)構(gòu)。如果這些文件損壞了,整個(gè)HDFS實(shí)例都將失效。因而,Namenode可以配置成支持維護(hù)多個(gè)FsImage和Editlog的副本。任何對(duì)FsImage或者Editlog的修改,都將同步到它們的副本上。這種多副本的同步操作可能會(huì)降低Namenode每秒處理的名字空間事務(wù)數(shù)量。然而這個(gè)代價(jià)是可以接受的,因?yàn)榧词笻DFS的應(yīng)用是數(shù)據(jù)密集的,它們也非元數(shù)據(jù)密集的。當(dāng)Namenode重啟的時(shí)候,它會(huì)選取最近的完整的FsImage和Editlog來使用。Namenode是HDFS集群中的單點(diǎn)故障(singlepointoffailure)所在。如果Namenode機(jī)器故障,需要手工干預(yù)。數(shù)據(jù)組織8.1數(shù)據(jù)塊HDFS被設(shè)計(jì)成支持大文件,適用HDFS的是那些需要處理大規(guī)模的數(shù)據(jù)集的應(yīng)用。這些應(yīng)用都是只寫入數(shù)據(jù)一次,但卻讀取一次或多次,并且讀取速度應(yīng)能滿足流式讀取的需要。HDFS支持文件的“一次寫入多次讀取”語義。一個(gè)典型的數(shù)據(jù)塊大小是64MB。因而,HDFS中的文件總是按照64M被切分成不同的塊,每個(gè)塊盡可能地存儲(chǔ)于不同的Datanode中。8.2Staging客戶端創(chuàng)建文件的請(qǐng)求其實(shí)并沒有立即發(fā)送給Namenode,事實(shí)上,在剛開始階段HDFS客戶端會(huì)先將文件數(shù)據(jù)緩存到本地的一個(gè)臨時(shí)文件。應(yīng)用程序的寫操作被透明地重定向到這個(gè)臨時(shí)文件。當(dāng)這個(gè)臨時(shí)文件累積的數(shù)據(jù)量超過一個(gè)數(shù)據(jù)塊的大小,客戶端才會(huì)聯(lián)系Namenode。Namenode將文件名插入文件系統(tǒng)的層次結(jié)構(gòu)中,并且分配一個(gè)數(shù)據(jù)塊給它。然后返回Datanode的標(biāo)識(shí)符和目標(biāo)數(shù)據(jù)塊給客戶端。接著客戶端將這塊數(shù)據(jù)從本地臨時(shí)文件上傳到指定的Datanode上。當(dāng)文件關(guān)閉時(shí),在臨時(shí)文件中剩余的沒有上傳的數(shù)據(jù)也會(huì)傳輸?shù)街付ǖ腄atanode上。然后客戶端告訴Namenode文件已經(jīng)關(guān)閉。此時(shí)Namenode才將文件創(chuàng)建操作提交到日志里進(jìn)行存儲(chǔ)。如果Namenode在文件關(guān)閉前宕機(jī)了,則該文件將丟失。上述方法是對(duì)在HDFS上運(yùn)行的目標(biāo)應(yīng)用進(jìn)行認(rèn)真考慮后得到的結(jié)果。這些應(yīng)用需要進(jìn)行文件的流式寫入。如果不采用客戶端緩存,由于網(wǎng)絡(luò)速度和網(wǎng)絡(luò)堵塞會(huì)對(duì)吞吐量造成比較大的影響。這種方法并不是沒有先例的,早期的文件系統(tǒng),比如AFS,就用客戶端緩存來提高性能。為了達(dá)到更高的數(shù)據(jù)上傳效率,已經(jīng)放松了POSIX標(biāo)準(zhǔn)的要求。8.3流水線復(fù)制當(dāng)客戶端向HDFS文件寫入數(shù)據(jù)的時(shí)候,一開始是寫到本地臨時(shí)文件中。假設(shè)該文件的副本系數(shù)設(shè)置為3,當(dāng)本地臨時(shí)文件累積到一個(gè)數(shù)據(jù)塊的大小時(shí),客戶端會(huì)從Namenode獲取一個(gè)Datanode列表用于存放副本。然后客戶端開始向第一個(gè)Datanode傳輸數(shù)據(jù),第一個(gè)Datanode一小部分一小部分(4KB)地接收數(shù)據(jù),將每一部分寫入本地倉庫,并同時(shí)傳輸該部分到列表中第二個(gè)Datanode節(jié)點(diǎn)。第二個(gè)Datanode也是這樣,一小部分一小部分地接收數(shù)據(jù),寫入本地倉庫,并同時(shí)傳給第三個(gè)Datanode。最后,第三個(gè)Datanode接收數(shù)據(jù)并存儲(chǔ)在本地。因此,Datanode能流水線式地從前一個(gè)節(jié)點(diǎn)接收數(shù)據(jù),并在同時(shí)轉(zhuǎn)發(fā)給下一個(gè)節(jié)點(diǎn),數(shù)據(jù)以流水線的方式從前一個(gè)Datanode復(fù)制到下一個(gè)。存儲(chǔ)空間回收9.1文件的刪除和恢復(fù)當(dāng)用戶或應(yīng)用程序刪除某個(gè)文件時(shí),這個(gè)文件并沒有立刻從HDFS中刪除。實(shí)際上,HDFS會(huì)將這個(gè)文件重命名轉(zhuǎn)移到/trash目錄。只要文件還在/trash目錄中,該文件就可以被迅速地恢復(fù)。文件在/trash中保存的時(shí)間是可配置的,當(dāng)超過這個(gè)時(shí)間時(shí),Namenode就會(huì)將該文件從名字空間中刪除。刪除文件會(huì)使得該文件相關(guān)的數(shù)據(jù)塊被釋放。注意,從用戶刪除文件到HDFS空閑空間的增加之間會(huì)有一定時(shí)間的延遲。只要被刪除的文件還在/trash目錄中,用戶就可以恢復(fù)這個(gè)文件。如果用戶想恢復(fù)被刪除的文件,他/她可以瀏覽/trash目錄找回該文件。/trash目錄僅僅保存被刪除文件的最后副本。/trash目錄與其他的目錄沒有什么區(qū)別,除了一點(diǎn):在該目錄上HDFS會(huì)應(yīng)用一個(gè)特殊策略來自動(dòng)刪除文件。目前的默認(rèn)策略是刪除/trash中保留時(shí)間超過6小時(shí)的文件。將來,這個(gè)策略可以通過一個(gè)被良好定義的接口配置。9.2減少副本系數(shù)當(dāng)一個(gè)文件的副本系數(shù)被減小后,Namenode會(huì)選擇過剩的副本刪除。下次心跳檢測(cè)時(shí)會(huì)將該信息傳遞給Datanode。Datanode遂即移除相應(yīng)的數(shù)據(jù)塊,集群中的空閑空間加大。同樣,在調(diào)用setReplication

API結(jié)束和集群中空閑空間增加間會(huì)有一定的延遲。MapReduce分布式并行計(jì)算編程模型模型概念MapReduce(映射-歸約算法)模型是由Google公司的JeffreyDean和SanjayGhemawat提出的高階并行函數(shù)的抽象模式,據(jù)報(bào)道每天在Google的集群上有上千個(gè)MapReducejob在執(zhí)行【13】。MapReduce借用了函數(shù)式編程的思想【14】,通過把海量數(shù)據(jù)集的常見操作抽象為Map和Reduce兩種集合操作,大大簡化了程序員編寫分布式并行計(jì)算程序的難度。使用MapReduce,即使是對(duì)那些分布式處理,或者是并行計(jì)算并不熟悉的程序員,也可以很方便的開發(fā)并行應(yīng)用,并且可以減免很多的充分工作。它大大降低了開發(fā)并行應(yīng)用的入門門檻,并且大大減輕了程序員在開發(fā)大規(guī)模數(shù)據(jù)應(yīng)用時(shí)的編程負(fù)擔(dān)【15】。MapReduce的名字源于這個(gè)模型中兩項(xiàng)重要的核心操作:Map和Reduce,即映射和歸約【13】。在整個(gè)運(yùn)算過程中,MapReduce模型都是用(key,value)的鍵值對(duì)形式作為輸出和輸入的。Map把用戶輸入的(key,value)通過用戶自定義的映射過程轉(zhuǎn)變?yōu)橐唤M中間鍵值對(duì)的集合。而Reduce過程則會(huì)對(duì)生成的臨時(shí)中間鍵值對(duì)進(jìn)行歸約處理。這個(gè)歸約的規(guī)則也是用戶自定義的,通過制定的Reduce函數(shù)來實(shí)現(xiàn),最后Reduce會(huì)輸出最終結(jié)果【15】。例如,我們對(duì)一組輸入(1,2),(2,4),(3,6),(4,8)進(jìn)行Map操作,我們規(guī)定對(duì)value進(jìn)行平方映射,那么輸出的中間鍵值對(duì)則為:(1,4),(2,16),(3,36),(4,64),接著我們定義Reduce歸約規(guī)則為計(jì)算所有value的值,并將key相加,那么最終我們會(huì)得到(10,120)。又例如單詞計(jì)數(shù)的例子【16】。假設(shè)有3篇文章paper1:westudyalgorithmpaper2:weshareourthinkingpaper3:thisteamsharesthinkingofthealgorithm根據(jù)MapReduce的模型,將這3篇文章交給3個(gè)不同的處理器處理:map操作:(其中一個(gè)處理器的map操作情況)之后對(duì)中間結(jié)果進(jìn)行分區(qū)處理,將相近的word映射到同一個(gè)臨時(shí)文件中,最后進(jìn)行匯總,即reduce的操作【16】。這樣對(duì)3篇文章的詞頻統(tǒng)計(jì)就結(jié)束了。在MapReduce編程模式中,操作是沒有副作用的。Map函數(shù)在生成新的中間鍵值的過程中,并不改變?cè)瓉淼臄?shù)據(jù),這和函數(shù)式編程是相同的。所有Map函數(shù)是高度并行的。而對(duì)于Reduce函數(shù)來說,雖然它沒有Map函數(shù)并行性如此優(yōu)秀,但是它的計(jì)算結(jié)果總是很簡單的。所以大規(guī)模的計(jì)算也很適合并行。在使用MapReduce編程模式進(jìn)行并行開發(fā)時(shí),我們必須考慮的是怎樣設(shè)計(jì)Map和Reduce的映射和歸約規(guī)則,框架則會(huì)自動(dòng)實(shí)現(xiàn)并行。這些并行能力和函數(shù)式編程有著密不可分的關(guān)系。函數(shù)式編程有著很多突出的優(yōu)點(diǎn),,比如自動(dòng)內(nèi)存管理,動(dòng)態(tài)類型。如今,隨著機(jī)器性能的提高,函數(shù)式編程已被廣泛的應(yīng)用。而對(duì)于程序員來說,MapReduce由于其卓越且簡單的特點(diǎn),是一種用于并行編程的很好的模型。在MapReduce計(jì)算模型中,有兩個(gè)關(guān)鍵過程:映射過程Map和聚集過程Reduce【13】。因此需要用戶提供兩個(gè)關(guān)鍵函數(shù),映射(Map)函數(shù)和聚集(Reduce)函數(shù),這兩個(gè)函數(shù)對(duì)一組輸入的鍵值對(duì)(key/value)進(jìn)行計(jì)算,得出另一組輸出鍵值對(duì)【17】,即有:Map:(kl,v1)→list(k2,v2)Reduce:(k2,list(v2))→list(k3,v3)用戶定義的映射函數(shù)Map接收一組輸入鍵值對(duì)(k1,v1),經(jīng)過處理產(chǎn)生一組中問的(k2,v2)鍵值對(duì)。MapReduce函數(shù)庫聚合所有相同的中間鍵k2的相應(yīng)值,產(chǎn)生關(guān)于k2鍵的值集合list(v2),并且發(fā)送給由用戶提供的歸并函數(shù)Reduce,Reduce再進(jìn)一步處理、合并該中間鍵的值集合,最后形成一個(gè)相對(duì)較小的鍵值對(duì)集合list(k3,v3)。MapReduce模型的實(shí)現(xiàn):MapReduce模型可以有很多種不同的實(shí)現(xiàn)方式。具體取決于具體的應(yīng)用環(huán)境。下面是一種Google內(nèi)部廣泛使用的運(yùn)算環(huán)境實(shí)現(xiàn)【16】:x86架構(gòu),linux操作系統(tǒng),雙處理器,2-4G內(nèi)存的機(jī)器普通的網(wǎng)絡(luò)硬件設(shè)備成千上百的機(jī)器(機(jī)器故障是常態(tài))代價(jià)的IDE硬盤為存儲(chǔ)介質(zhì)。文件系統(tǒng)通過數(shù)據(jù)復(fù)制備份來實(shí)現(xiàn)和保證數(shù)據(jù)的可靠性和有效性MapReduce的執(zhí)行概況:通過調(diào)用MapReduce的庫函數(shù)將輸入的數(shù)據(jù)自動(dòng)的分割成M個(gè)數(shù)據(jù)片段的集合,map調(diào)用被分布到多臺(tái)機(jī)器上執(zhí)行,輸入的數(shù)據(jù)片段能夠在不同的機(jī)器上并行處理【16】。使用分區(qū)函數(shù)將map調(diào)用產(chǎn)生的中間key值分成R個(gè)不同的分區(qū)(分區(qū)函數(shù)默認(rèn)為hash函數(shù)),reduce調(diào)用也被分配到多臺(tái)機(jī)器上執(zhí)行。分區(qū)數(shù)量和分區(qū)函數(shù)由用戶指定。用戶程序首先調(diào)用MapReduce庫將輸入的文件分成M個(gè)數(shù)據(jù)片,每個(gè)數(shù)據(jù)片段大小一般在16M到64M(這個(gè)大小可以通過參數(shù)指定)。然后用戶程序在機(jī)器集群中創(chuàng)建大量的程序副本。這些程序副本中有一個(gè)特殊的程序master,其他的程序是worker程序,由master分配任務(wù),master將一個(gè)map或者reduce的任務(wù)分配給一個(gè)空閑的worker被分配了map任務(wù)的worker程序讀取相關(guān)的輸入數(shù)據(jù)片段,從輸入數(shù)據(jù)片段中解析出key/value,然后把key/value傳遞給用戶自定義的map函數(shù),由map輸出中間的key/value并且緩存在內(nèi)存中。緩存中的key/value通過分區(qū)函數(shù)分成R個(gè)區(qū)域,之后周期性的寫入到本地磁盤上,緩存的key/value在本地的存儲(chǔ)位置返回給master,master負(fù)責(zé)將這些存儲(chǔ)的位置信息再次傳送給Reduceworker當(dāng)Reduceworker接收master傳送過來的中間值key/value的存儲(chǔ)位置時(shí),將這些中間位置從磁盤中讀取這些數(shù)據(jù),通過按照key值進(jìn)行排序,之后把相同的key值的value組合在一起。這個(gè)排序是必要的,如果中間數(shù)據(jù)太大無法進(jìn)行內(nèi)部排序,就調(diào)用外部排序算法。Reduceworker程序遍歷排序后的中間數(shù)據(jù),對(duì)于每個(gè)唯一的中間key,Reduceworker把這個(gè)key和相關(guān)的value值,傳遞給用戶自定義的Reduce函數(shù)。最后輸出當(dāng)所有的map和Reduce任務(wù)都完成后,master喚醒用戶程序。

MapReduce的執(zhí)行流程MapReduce的大體流程是這樣的【18】,如圖所示:由圖片可以看到Mapreduce執(zhí)行下來主要包含這樣幾個(gè)步驟:首先對(duì)輸入數(shù)據(jù)源進(jìn)行切片master調(diào)度worker執(zhí)行map任務(wù)。worker讀取輸入源片段。worker執(zhí)行map任務(wù),將任務(wù)輸出保存在本地。master調(diào)度worker執(zhí)行reduce任務(wù),reduceworker讀取map任務(wù)的輸出文件。執(zhí)行reduce任務(wù),將任務(wù)輸出保存到HDFS。MapReduce模型的容錯(cuò)機(jī)制5.1worker故障master會(huì)周期性的ping每個(gè)worker。在一個(gè)約定的時(shí)間范圍內(nèi)沒有收到worker的返回信息,master標(biāo)記這個(gè)worker已經(jīng)失效。所以由這個(gè)worker執(zhí)行的map任務(wù)被重新設(shè)定為空閑,之后這些任務(wù)會(huì)安排給其他的worker。同樣worker失效時(shí)正在運(yùn)行的map或者Reduce任務(wù)也被重新置為空閑狀態(tài),等待重新調(diào)用【16】。當(dāng)worker故障時(shí),由于已經(jīng)完成的map任務(wù)的輸出放置在該機(jī)器閃,位置變成不可訪問,需要重新執(zhí)行。當(dāng)一個(gè)map任務(wù)首先被分配個(gè)給workA執(zhí)行,之后workerA失效又被調(diào)度到workerB執(zhí)行,會(huì)通知所有還沒從workerA取數(shù)據(jù)的Reduce改從workerB取數(shù)據(jù)5.2master失效一個(gè)程序中只有一個(gè)master,master失效的話處理過程比較復(fù)雜,一個(gè)簡單的解決方法是讓master周期性的將上面描述的數(shù)據(jù)結(jié)構(gòu)寫入到磁盤。一旦這個(gè)master任務(wù)失效,可以從最后一個(gè)檢測(cè)點(diǎn)開始啟動(dòng)另一個(gè)master進(jìn)程。不過一般我們?cè)俪绦蜻\(yùn)行過程中如果master失效,就停止該程序的運(yùn)行,重新執(zhí)行【16】。存儲(chǔ)位置:在計(jì)算機(jī)運(yùn)行環(huán)境中,網(wǎng)絡(luò)帶寬是一個(gè)相當(dāng)匱乏的資源,我們通過盡量把輸入數(shù)據(jù)存儲(chǔ)在本地磁盤來節(jié)省網(wǎng)絡(luò)帶寬【16】。GFS把每個(gè)文件按照64MB一個(gè)block分割,每個(gè)block保存到多臺(tái)計(jì)算機(jī),就是在整個(gè)集成環(huán)境中存放多份拷貝(一般是3份)。MapReduce的master在調(diào)度map任務(wù)時(shí)候會(huì)考慮輸入的文件位置信息,盡量把一個(gè)map任務(wù)調(diào)度到在包含相關(guān)輸入數(shù)據(jù)拷貝的機(jī)器上執(zhí)行。如果上述努力失敗了,master將試著將map任務(wù)分配到存放待輸入數(shù)據(jù)的機(jī)器的鄰居機(jī)器上執(zhí)行。分布式應(yīng)用程序協(xié)調(diào)服務(wù)ZooKeeperZooKeeper分布式服務(wù)框架是ApacheHadoop的一個(gè)子項(xiàng)目,它主要是用來解決分布式應(yīng)用中經(jīng)常遇到的一些數(shù)據(jù)管理問題,如:統(tǒng)一命名服務(wù)、狀態(tài)同步服務(wù)、集群管理、分布式應(yīng)用配置項(xiàng)的管理等【17】。ZooKeeper是一個(gè)分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),它包含一個(gè)簡單的原語集,分布式應(yīng)用程序可以基于它實(shí)現(xiàn)同步服務(wù),配置維護(hù)和命名服務(wù)等。在分布式應(yīng)用中,由于工程師不能很好地使用鎖機(jī)制,以及基于消息的協(xié)調(diào)機(jī)制不適合在某些應(yīng)用中使用,因此需要有一種可靠的、可擴(kuò)展的、分布式的、可配置的協(xié)調(diào)機(jī)制來統(tǒng)一系統(tǒng)的狀態(tài)【18】。ZooKeeper的基本概念ZooKeeper中的角色主要有一下三類:系統(tǒng)模型如圖所示:設(shè)計(jì)目的最終一致性:client不論連接到哪個(gè)Server,展示給它都是同一個(gè)視圖,這是zookeeper最重要的性能??煽啃裕壕哂泻唵?、健壯、良好的性能,如果消息m被到一臺(tái)服務(wù)器接受,那么它將被所有的服務(wù)器接受。實(shí)時(shí)性:Zookeeper保證客戶端將在一個(gè)時(shí)間間隔范圍內(nèi)獲得服務(wù)器的更新信息,或者服務(wù)器失效的信息。但由于網(wǎng)絡(luò)延時(shí)等原因,Zookeeper不能保證兩個(gè)客戶端能同時(shí)得到剛更新的數(shù)據(jù),如果需要最新數(shù)據(jù),應(yīng)該在讀數(shù)據(jù)之前調(diào)用sync()接口。等待無關(guān)(wait-free):慢的或者失效的client不得干預(yù)快速的client的請(qǐng)求,使得每個(gè)client都能有效的等待。原子性:更新只能成功或者失敗,沒有中間狀態(tài)。順序性:包括全局有序和偏序兩種:全局有序是指如果在一臺(tái)服務(wù)器上消息a在消息b前發(fā)布,則在所有Server上消息a都將在消息b前被發(fā)布;偏序是指如果一個(gè)消息b在消息a后被同一個(gè)發(fā)送者發(fā)布,a必將排在b前面。選主流程當(dāng)leader崩潰或者leader失去大多數(shù)的follower,這時(shí)候ZK進(jìn)入恢復(fù)模式,恢復(fù)模式需要重新選舉出一個(gè)新的leader,讓所有的Server都恢復(fù)到一個(gè)正確的狀態(tài)。ZK的選舉算法有兩種:一種是基于basicpaxos實(shí)現(xiàn)的,另外一種是基于fastpaxos算法實(shí)現(xiàn)的。系統(tǒng)默認(rèn)的選舉算法為fastpaxos。先介紹basicpaxos流程:選舉線程由當(dāng)前Server發(fā)起選舉的線程擔(dān)任,其主要功能是對(duì)投票結(jié)果進(jìn)行統(tǒng)計(jì),并選出推薦的Server;選舉線程首先向所有Server發(fā)起一次詢問(包括自己);選舉線程收到回復(fù)后,驗(yàn)證是否是自己發(fā)起的詢問(驗(yàn)證zxid是否一致),然后獲取對(duì)方的id(myid),并存儲(chǔ)到當(dāng)前詢問對(duì)象列表中,最后獲取對(duì)方提議的leader相關(guān)信息(id,zxid),并將這些信息存儲(chǔ)到當(dāng)次選舉的投票記錄表中;收到所有Server回復(fù)以后,就計(jì)算出zxid最大的那個(gè)Server,并將這個(gè)Server相關(guān)信息設(shè)置成下一次要投票的Server;線程將當(dāng)前zxid最大的Server設(shè)置為當(dāng)前Server要推薦的Leader,如果此時(shí)獲勝的Server獲得n/2+1的Server票數(shù),設(shè)置當(dāng)前推薦的leader為獲勝的Server,將根據(jù)獲勝的Server相關(guān)信息設(shè)置自己的狀態(tài),否則,繼續(xù)這個(gè)過程,直到leader被選舉出來。通過流程分析我們可以得出:要使Leader獲得多數(shù)Server的支持,則Server總數(shù)必須是奇數(shù)2n+1,且存活的Server的數(shù)目不得少于n+1.每個(gè)Server啟動(dòng)后都會(huì)重復(fù)以上流程。在恢復(fù)模式下,如果是剛從崩潰狀態(tài)恢復(fù)的或者剛啟動(dòng)的server還會(huì)從磁盤快照中恢復(fù)數(shù)據(jù)和會(huì)話信息,ZK會(huì)記錄事務(wù)日志并定期進(jìn)行快照,方便在恢復(fù)時(shí)進(jìn)行狀態(tài)恢復(fù)。選主流程的具體流程圖如下所示:fastpaxos流程是在選舉過程中,某Server首先向所有Server提議自己要成為leader,當(dāng)其它Server收到提議以后,解決epoch和zxid的沖突,并接受對(duì)方的提議,然后向?qū)Ψ桨l(fā)送接受提議完成的消息,重復(fù)這個(gè)流程,最后一定能選舉出Leader。其流程圖如下所示:大數(shù)據(jù)一體機(jī)一體機(jī)簡介一體機(jī)是指通過標(biāo)準(zhǔn)化的架構(gòu)集成了服務(wù)器、存儲(chǔ)、網(wǎng)絡(luò)、軟件等配置,減化了數(shù)據(jù)中心基礎(chǔ)設(shè)施部署和運(yùn)維管理的復(fù)雜性的一體化設(shè)備。大數(shù)據(jù)一體機(jī)(BigDataAppliance)即通過一體機(jī)的產(chǎn)品形態(tài),解決了大數(shù)據(jù)時(shí)代基礎(chǔ)設(shè)施的持續(xù)擴(kuò)展問題、數(shù)據(jù)處理的個(gè)性化和一體化需求問題、海量數(shù)據(jù)的存儲(chǔ)成本問題。大數(shù)據(jù)一體機(jī)(BigDataAppliance)是一種專為大量數(shù)據(jù)的分析處理而設(shè)計(jì)的軟、硬件結(jié)合的產(chǎn)品,由一組集成的服務(wù)器、存儲(chǔ)設(shè)備、操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)以及一些為數(shù)據(jù)查詢、處理、分析用途而特別預(yù)先安裝及優(yōu)化的軟件組成,為中等至大型的數(shù)據(jù)倉庫市場(chǎng)(通常數(shù)據(jù)量在TB至PB級(jí)別)提供解決方案。技術(shù)特點(diǎn)從技術(shù)特點(diǎn)上看,大數(shù)據(jù)一體機(jī)的主要特征有以下2點(diǎn):采用全分布式新型體系結(jié)構(gòu),突破大數(shù)據(jù)處理的擴(kuò)展瓶頸并保障可用性。采用全分布式大數(shù)據(jù)處理架構(gòu),將硬件、軟件整合在一個(gè)體系中,采用不同的數(shù)據(jù)處理的架構(gòu)來提供對(duì)不同行業(yè)應(yīng)用的支撐。通過全分布式大數(shù)據(jù)處理架構(gòu)和軟硬件優(yōu)化,使得平臺(tái)能夠隨著客戶數(shù)據(jù)的增長和業(yè)務(wù)的擴(kuò)張,可通過縱向擴(kuò)展硬件得到提升,也可通過橫向增加節(jié)點(diǎn)進(jìn)行線性擴(kuò)展,即使在達(dá)到4000個(gè)計(jì)算單元重載節(jié)點(diǎn)情況下,也還能夠?qū)崿F(xiàn)相接近線性的擴(kuò)展性和低延遲、高吞吐量的性能,同時(shí)保證業(yè)務(wù)的連續(xù)性。覆蓋軟硬一體全環(huán)節(jié),滿足個(gè)性化定制需求。采用軟硬件一體的創(chuàng)新數(shù)據(jù)處理平臺(tái),針對(duì)不同應(yīng)用需求融合硬件到軟件的一系列的手段實(shí)現(xiàn)數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理、數(shù)據(jù)分析到數(shù)據(jù)呈現(xiàn)的全環(huán)節(jié)覆蓋,為用戶提供整體方案,用戶可以根據(jù)各自應(yīng)用特點(diǎn)選擇不同系列的產(chǎn)品,實(shí)現(xiàn)按需定制、插電即用。除了以上兩點(diǎn)之外,由于大數(shù)據(jù)產(chǎn)品的專業(yè)性和其不同于傳統(tǒng)的解決方案,需要提供產(chǎn)品的廠商提供全方位的專業(yè)化的服務(wù),幫助用戶跨過應(yīng)用門檻。針對(duì)用戶在整個(gè)數(shù)據(jù)處理環(huán)節(jié)提供全方位的專業(yè)化的服務(wù),幫助用戶明確應(yīng)用需求,選擇適合的軟硬件架構(gòu),提供開發(fā)方面的支持,并幫助客戶把程序從原有的模式移植到大數(shù)據(jù)處理模式下,從調(diào)優(yōu)直至上線應(yīng)用提供整體一條龍的服務(wù)。大數(shù)據(jù)應(yīng)用案例大數(shù)據(jù)應(yīng)用的關(guān)鍵,也是其必要條件,就在于"IT"與"經(jīng)營"的融合,當(dāng)然,這里的經(jīng)營的內(nèi)涵可以非常廣泛,小至一個(gè)零售門店的經(jīng)營,大至一個(gè)城市的經(jīng)營。以下是關(guān)于各行各業(yè),不同的組織機(jī)構(gòu)在大數(shù)據(jù)方面的應(yīng)用的案例。醫(yī)療行業(yè)SetonHealthcare是采用IBM最新沃森技術(shù)醫(yī)療保健內(nèi)容分析預(yù)測(cè)的首個(gè)客戶。該技術(shù)允許企業(yè)找到大量病人相關(guān)的臨床醫(yī)療信息,通過大數(shù)據(jù)處理,更好地分析病人的信息。在加拿大多倫多的一家醫(yī)院,針對(duì)早產(chǎn)嬰兒,每秒鐘有超過3000次的數(shù)據(jù)讀取。通過這些數(shù)據(jù)分析,醫(yī)院能夠提前知道哪些早產(chǎn)兒出現(xiàn)問題并且有針對(duì)性地采取措施,避免早產(chǎn)嬰兒夭折。 它讓更多的創(chuàng)業(yè)者更方便地開發(fā)產(chǎn)品,比如通過社交網(wǎng)絡(luò)來收集數(shù)據(jù)的健康類App。也許未來數(shù)年后,它們搜集的數(shù)據(jù)能讓醫(yī)生給你的診斷變得更為精確,比方說不是通用的成人每日三次一次一片,而是檢測(cè)到你的血液中藥劑已經(jīng)代謝完成會(huì)自動(dòng)提醒你再次服藥。能源行業(yè)智能電網(wǎng)現(xiàn)在歐洲已經(jīng)做到了終端,也就是所謂的智能電表。在德國,為了鼓勵(lì)利用太陽能,會(huì)在家庭安裝太陽能,除了賣電給你,當(dāng)你的太陽能有多余電的時(shí)候還可以買回來。通過電網(wǎng)收集每隔五分鐘或十分鐘收集一次數(shù)據(jù),收集來的這些數(shù)據(jù)可以用來預(yù)測(cè)客戶的用電習(xí)慣等,從而推斷出在未來2~3個(gè)月時(shí)間里,整個(gè)電網(wǎng)大概需要多少電。有了這個(gè)預(yù)測(cè)后,就可以向發(fā)電或者供電企業(yè)購買一定數(shù)量的電。因?yàn)殡娪悬c(diǎn)像期貨一樣,如果提前買就會(huì)比較便宜,買現(xiàn)貨就比較貴。通過這個(gè)預(yù)測(cè)后

溫馨提示

  • 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)論