天天看點

《Hadoop海量資料處理:技術詳解與項目實戰(第2版)》一1.2 Hadoop和大資料

本節書摘來異步社群《hadoop海量資料處理:技術詳解與項目實戰(第2版)》一書中的第1章,第1.2節,作者: 範東來 責編: 楊海玲,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

在人們對雲計算這個詞彙耳熟能詳之後,大資料這個詞彙又在最短時間内進入大衆視野。雲計算對于普通人來說就像雲一樣,一直沒有機會能夠真正感受到,而大資料則更加實際,是确确實實能夠改變人們生活的事物。hadoop從某個方面來說,與大資料結合得更加緊密,它就是為大資料而生的。

“大資料”(big data),一個看似通俗直白、簡單樸實的名詞,卻無疑成為了時下it界最炙手可熱的名詞,在全球引領了新一輪資料技術革命的浪潮。通過2012年的蓄勢待發,2013年被稱為世界大資料元年,标志着世界正式步入了大資料時代。

現在來看看我們如何被資料包圍着。在現實的生活中,一分鐘或許微不足道,或許連200字也打不了,但是資料的産生卻是一刻也不停歇的。來看看一分鐘到底會有多少資料産生:youtube使用者上傳48小時的新視訊,電子郵件使用者發送204 166 677條資訊,google收到超過2 000 000個搜尋查詢,facebook使用者分享684 478條内容,消費者在網購上花費272 070美元,twitter使用者發送超過100 000條微網誌,蘋果公司收到大約47 000個應用下載下傳請求,facebook上的品牌和企業收到34 722個“贊”,tumblr部落格使用者釋出27 778個新文章,instagram使用者分享36 000張新照片,flicker使用者添加3 125張新照片,foursquare使用者執行2 083次簽到,571個新網站誕生,wordpress使用者釋出347篇新博文,移動網際網路獲得217個新使用者。

資料還在增長着,沒有慢下來的迹象,并且随着移動智能裝置的普及,一些新興的與位置有關的大資料也越來越呈迸發的趨勢。

那麼大資料究竟是什麼?我們來看看權威機構對大資料給出的定義。國際頂級權威咨詢機構麥肯錫說:“大資料指的是所涉及的資料集規模已經超過了傳統資料庫軟體擷取、存儲、管理和分析的能力。這是一個被故意設計成主觀性的定義,并且是一個關于多大的資料集才能被認為是大資料的可變定義,即并不定義大于一個特定數字的tb才叫大資料。因為随着技術的不斷發展,符合大資料标準的資料集容量也會增長;并且定義随不同行業也有變化,這依賴于在一個特定行業通常使用何種軟體和資料集有多大。是以,大資料在今天不同行業中的範圍可以從幾十tb到幾pb。”

從上面的定義我們可以看出以下幾點。

(1)多大的資料才算大資料,這并沒有一個明确的界定,且不同行業有不同的标準。

(2)大資料不僅僅隻是大,它還包含了資料集規模已經超過了傳統資料庫軟體擷取、存儲、分析和管理能力這一層意思。

(3)大資料不一定永遠是大資料,大資料的标準是可變的,在20年前1 gb的資料也可以叫大資料,可見,随着計算機軟硬體技術的發展,符合大資料标準的資料集容量也會增長。

ibm說:“可以用三個特征相結合來定義大資料:資料量(volume)、多樣性(variety)和速度(velocity),或者就是簡單的3 v,即龐大容量、極快速度和種類豐富的資料。”[1]

(1)資料量:如今存儲的數量正在急劇增長,毫無疑問我們正深陷在資料之中。我們存儲所有事物——環境資料、财務資料、醫療資料、監控資料等。有關資料量的對話已從tb級别轉向pb級别,并且不可避免地轉向zb級别。現在經常聽到一些企業使用存儲叢集來儲存數pb的資料。随着可供企業使用的資料量不斷增長,可處理、了解和分析的資料比例卻不斷下降。

(2)資料的多樣性:與大資料現象有關的資料量為嘗試處理它的資料中心帶來了新的挑戰:它多樣的種類,随着傳感器、智能裝置以及社交協作技術的激增,企業中的資料也變得更加複雜,因為它不僅包含傳統的關系型資料,還包含來自網頁、網際網路日志檔案(包括點選流資料),搜尋索引、社交媒體論壇、電子郵件、文檔、主動和被動的傳感器資料等原始、半結構化和非結構化資料。簡言之,種類表示所有資料類型。

(3)資料的速度:就像我們收集和存儲的資料量和種類發生了變化一樣,生成和需要處理資料的速度也在變化。不要将速度的概念限定為與資料存儲庫相關的增長速率,應動态地将此定義應用到資料——資料流動的速度。有效處理大資料要求在資料變化的過程中對它的數量和種類執行分析,而不隻是在它靜止後執行分析。

最近,ibm在以上3 v的基礎上歸納總結了第4個v——veracity(真實性和準确性)。“隻有真實而準确的資料才能讓對資料的管控和治理真正有意義。随着社交資料、企業内容、交易與應用資料等新資料源的興起,傳統資料源的局限性被打破,企業愈發需要有效的資訊治理以確定其真實性及安全性。”

接下來讓我們來剖析下大資料突出的特征:多樣性。圖1-7顯示了幾種不同結構類型資料的增長趨勢,從圖中可以看到,未來資料增長的80%~90%将來自于不是結構化的資料類型(半結構化資料、準結構化資料或非結構化資料)。

《Hadoop海量資料處理:技術詳解與項目實戰(第2版)》一1.2 Hadoop和大資料

結構化資料:包括預定義的資料類型、格式和結構的資料,例如,事務性資料和聯機分析處理,如表1-1所示。

《Hadoop海量資料處理:技術詳解與項目實戰(第2版)》一1.2 Hadoop和大資料

半結構化資料:具有可識别的模式并可以解析的文本資料檔案,例如自描述和具有定義模式的xml資料檔案,如代碼清單1-1所示。

代碼清單1-1 半結構化資料示例

非結構化資料是沒有固定結構的資料,通常儲存為不同的類型檔案,如文本文檔、pdf文檔、圖像和視訊。

雖然上面顯示了4種不同的、互相分離的資料類型,但實際上,有時這些資料類型是可以被混合在一起的。例如,一個傳統的關系型資料庫管理系統儲存着一個軟體支援呼叫中心的通話日志。這裡有典型的結構化資料,比如日期/時間戳、機器類型、問題類型、作業系統,這些都是線上支援人員通過圖形使用者界面上的下拉式菜單輸入的。另外,還有非結構化資料或半結構化資料,比如自由形式的通話日志資訊,這些可能來自包含問題的電子郵件,或者技術問題和解決方案的實際通話描述,最重要的資訊通常是藏在這裡的。另外一種可能是與結構化資料有關的實際通話的語音日志或者音頻文字實錄。即使是現在,大多數分析人員還無法分析這種通話日志曆史資料庫中的最普通和高度結構化的資料。因為挖掘文本資訊是一項工作強度很大的工作,并且無法實作簡單的自動化。人們通常最熟悉結構化資料的分析,然而,半結構化資料(xml)、準結構化資料(網站位址字元串)和非結構化資料帶來了不同的挑戰,需要使用不同的技術來分析。

先來看一則《紐約時報》報道的新聞。一位憤怒的父親跑到美國target超市投訴他近期收到超市寄給他大量嬰兒用品廣告,而他的女兒還隻不過是個高中生,但一周以後這位憤怒的父親再次光臨并向超市道歉,因為target發來的嬰兒用品促銷廣告并不是誤發,他的女兒的确懷孕了。《紐約時報》的這則故事讓很多人第一次感受到了變革,這次變革和人類經曆過的若幹次變革最大的不同在于:它發生得悄無聲息,但它确确實實改變了我們的生活。各行各業的先知先覺者已經從與資料共舞中嘗到了甜頭,而越來越多的後來者和新進者都希望借助雲計算和大資料這波浪潮去撬動原有市場格局或開辟新的商業領域。這也難怪麥肯錫稱大資料将會是傳統四大生産要素之後的第五大生産要素。

1.你能一直赢嗎?

風靡全球的網絡遊戲《英雄聯盟》擁有數以千萬計的使用者群體。每天深夜,當大多數玩家已經奮戰一天,呼呼大睡的時候,資料伺服器正緊張地勞作着。世界各地的營運商會把當日的資料發送到位于美洲的資料中心。随即一個巨大的資料分析引擎轉動起來,需要執行上千個資料分析的任務。當日所有的比賽都會被分析,資料分析師會發現,某一個英雄機關太強或太弱,在接下來的2~3周内,會推出一個新更新檔,及時調整所有的平衡性問題,并加入一個新機關。整個遊戲被保持在一個快速更新,并且良好平衡的狀态。正是靠着大資料的魔力,《英雄聯盟》才能成為這個時代最受歡迎的遊戲之一。

2.你喜歡這個嗎?

産品推薦是amazon的發明,它為amazon等電子商務公司赢得了近三分之一的新增商品交易。産品推薦的一個重要方面是基于客戶交易行為分析的交叉銷售。根據客戶資訊、客戶交易曆史、客戶購買過程的行為軌迹等客戶行為資料,以及同一商品其他通路或成交客戶的客戶行為資料,進行客戶行為的相似性分析,為客戶推薦産品,包括浏覽這一産品的客戶還浏覽了哪些産品、購買這一産品的客戶還購買了哪些産品、預測客戶還喜歡哪些産品等。對于領先的b2c網站如京東、亞馬遜等,這些資料是海量存在的。

産品推薦的另一個重要方面是基于客戶社交行為分析的社群營銷。通過分析客戶在微網誌、微信、社群裡的興趣、關注、愛好和觀點等資料,投其所好,為客戶推薦他本人喜歡的、或者是他的圈子流行的、或推薦給他朋友的相關産品。

通過對客戶行為資料的分析,産品推薦将更加精準、個性化。傳統企業既可以依賴大型電子商務公司和社群網絡的産品推薦系統提升銷售量,也可以依靠企業内部的客戶交易資料、公司自有的電子商務網站等直銷管道、企業社群等進行客戶行為資料的采集和分析,實作企業直銷管道的産品推薦。

基于大資料應用的行業執行個體數不勝數,并且都為各個行業帶來可觀的效益,甚至可以改變遊戲規則。對于未來,我們會發現在電影中出現的預測犯罪、智慧城市等情景都會由于大資料處理技術的進步一一實作,這完全不是遙遠的夢想。

首先,簡單概括一下雲計算和大資料之間的關系。在很大程度上它們是相輔相成的,最大的不同在于:雲計算是你在做的事情,而大資料是你所擁有的東西。以雲計算為基礎的資訊存儲、分享和挖掘手段為知識生産提供了工具,而通過對大資料分析、預測會使得決策更加精準,兩者相得益彰。從另一個角度講,雲計算是一種it理念、技術架構和标準,而雲計算不可避免地會産生大量的資料。大資料技術與雲計算的發展密切相關,大型的雲計算應用不可或缺的就是資料中心的建設,是以大資料技術是雲計算技術的延伸。

作為雲計算paas層技術的代表,hadoop可以以一種可靠、高效、可擴充的方式存儲、管理“大資料”,如圖1-8所示。hadoop及其生态圈為管理、挖掘大資料提供了一整套成熟可靠的解決方案。從功能上說,hadoop可以稱作一個“大資料管理和分析平台”。下面我們先對hadoop的核心元件做一個簡單的介紹,讓讀者對hadoop有個初步的認識。

1.海量資料的搖籃——hdfs

作為hadoop分布式檔案系統,hdfs處于hadoop生态圈的最下層,存儲着所有的資料,支援着hadoop的所有服務。它的理論基礎源于google的the google file system這篇論文,它是gfs的開源實作。

《Hadoop海量資料處理:技術詳解與項目實戰(第2版)》一1.2 Hadoop和大資料

hdfs的設計理念是以流式資料通路模式,存儲超大檔案,運作于廉價硬體叢集之上。

2.處理海量資料的利器——mapreduce

mapreduce是一種程式設計模型,hadoop根據google的mapreduce論文将其實作,作為hadoop的分布式計算模型,是hadoop的核心。基于這個架構,分布式并行程式的編寫變得異常簡單。綜合了hdfs的分布式存儲和mapreduce的分布式計算,hadoop在處理海量資料時,性能橫向擴充變得非常容易。

3.列族存儲——hbase

hbase是對google的bigtable的開源實作,但又和bigtable存在許多不同之處。hbase是一個基于hdfs的分布式資料庫,擅長實時地随機讀/寫超大規模資料集。它也是hadoop非常重要的元件。

簡言之,由于hadoop可以基于分布式存儲進行分布式計算,橫向擴充能力非常優秀,是以hadoop非常适合并且能夠勝任存儲、管理、挖掘“大資料”的任務。

1.storm

在現實生活中,有很多資料是屬于流式資料,即計算的輸入并不是一個檔案,而是源源不斷的資料流,如網上實時交易所産生的資料。使用者需要對這些資料進行分析,否則資料的價值會随着時間的流逝而消失。流式資料有以下特點。

(1)資料實時到達,需要實時處理。

(2)資料是流式源源不斷的,大小可能無窮無盡。

(3)系統無法控制将要處理的新到達資料元素的順序,無論這些資料元素是在同一個資料流中還是跨多個資料流。

(4)一旦資料流中的某個資料經過處理,要麼被丢棄或者無狀态。

storm也是一個成熟的分布式的流計算平台,擅長流處理(stream processing)或者複雜事件處理(complex event processing,cep),storm有以下幾個關鍵特性。

(1)适用場景廣泛。

(2)良好的伸縮性。

(3)保證資料無丢失。

(4)異常健壯。

(5)良好的容錯性。

(6)支援多語言程式設計。

值得一提的是,storm采用的計算模型并不是mapreduce,并且mapreduce也已經被證明不适合做流處理。另外,storm也運作在yarn之上,從這個角度上來說,它也是屬于hadoop生态圈。

2.apache spark

apache spark由加州大學伯克利分校amp實驗室開發。由于使用的開發語言為scala,spark在并行計算有很大的優勢,且spark十分小巧玲珑,其中核心部分隻有63個檔案。apache spark引入了彈性分布資料集(rdd)的概念,基于記憶體計算,速度在特定場景下大幅領先mapreduce。spark的主要優勢包括以下幾個方面。

(1)提供了一套支援dag的分布式并行計算的程式設計架構,減少多次計算之間中間結果寫到hdfs的開銷。

(2)提供cache機制來支援需要反複疊代計算或者多次資料共享,減少資料讀取的i/o開銷。

(3)使用多線程池模型來減少任務啟動開銷,減少shuffle過程中不必要的sort操作以及減少磁盤i/o操作。

(4)廣泛的資料集操作類型。

目前spark的發展勢頭十分迅猛,生态圈已初具規模,如圖1-9所示。其中spark sql為支援sql的結構化查詢工具,spark streaming是spark的流計算架構,mllib內建了主流機器學習算法,graphx則是spark的圖計算架構。從圖1-9可以看出spark在多個領域和mapreduce展開正面交鋒,并且具有很多mapreduce所沒有的特性,潛力巨大。

《Hadoop海量資料處理:技術詳解與項目實戰(第2版)》一1.2 Hadoop和大資料

繼續閱讀