iThome

美國國會圖書館是全球最大的圖書館,自1800年設立至今,收藏了超過1.5億個實體物件,包括書籍、影音、老地圖、膠卷等,數位資料量也達到了235TB,但美國eBay拍賣網站,8千萬名用戶每天產生的資料量就有50TB,五天就相當於1座美國國會圖書館的容量。

在國外,不只eBay這種跨國電子商務業者感受到巨量資料的衝擊,其他如美國連鎖超市龍頭Wal-Mart、發行信用卡的Visa公司等許多產業都面臨處理巨量資料的頭痛問題。

在臺灣如台灣積體電路(台積電)、中華電信等手上擁有大量顧客資料的企業,都紛紛感受到這股如海嘯般來襲的Big Data巨量資料浪潮。這樣的巨量資料並非是沒有價值的資料,其中潛藏了許多使用者親身經驗的第一手原始資料,不少企業更是從中嗅到了商機。

這些企業紛紛向最早面臨Big Data挑戰的搜尋引擎業者Google、Yahoo取經,學習處理巨量資料的技術和經驗,其中,最受這些企業青睞,用來解決巨量資料難題的技術就是Apache基金會的分散式運算技術,Hadoop專案。

Wal-Mart分析顧客搜尋行為,找出超越競爭對手的商機

全球最大連鎖超市業者Wal-Mart就是善用Hadoop來挖掘出更多商機,甚至能超越競爭對手。Wal-Mart雖然十年前就投入線上電子商務,但線上銷售的營收遠遠落後於Amazon。後來,Wal-Mart決定採用Hadoop來分析顧客搜尋商品的行為,以及用戶透過搜尋引擎尋找到Wal-Mart網站的關鍵字,利用這些關鍵詞的分析結果發掘顧客需求,以規畫下一季商品的促銷策略。

他們並進一步打算要分析顧客在Facebook、Twitter等社交網站上對商品的討論,甚至Wal-Mart能比父親更快知道女兒懷孕的消息,並且主動寄送相關商品的促銷郵件,可說是比競爭對手提前一步發現顧客。

eBay用Hadoop拆解非結構性巨量資料,降低資料倉儲負載

經營拍賣業務的eBay則是用Hadoop來分析買賣雙方在網站上的行為。eBay擁有全世界最大的資料倉儲系統,每天增加的資料量有50TB,光是儲存就是一大挑戰,更遑論要分析這些資料,而且更困難的挑戰是這些資料包括了結構化的資料和非結構化的資料,如照片、影片、電子郵件、使用者的網站瀏覽Log記錄等。

eBay分析平臺高級總監Oliver Ratzesberger也坦言,資料分析最大的挑戰就是要同時處理結構化以及非結構化的資料。

eBay在5年多前就另外建置了一個軟硬體整合的平臺Singularity,搭配壓縮技術來解決結構化資料和半結構化資料的分析問題,3年前更在這個平臺整合了Hadoop來處理非結構化資料,透過Hadoop來進行資料預先處理,將大塊結構的非結構化資料拆解成小型資料,再放入資料倉儲系統的資料模型中分析,來加快分析速度,也減輕對資料倉儲系統的分析負載。

Visa快速發現可疑交易,1個月分析時間縮短成13分鐘

Visa公司則是擁有一個全球最大的付費網路系統VisaNet,作為信用卡付款驗證之用。2009年時,每天就要處理1.3億次授權交易和140萬臺ATM的連線存取。

為了降低信用卡各種詐騙、盜領事件的損失,Visa公司得分析每一筆交易資料,來找出可疑的交易。雖然每筆交易的資料記錄只有短短200位元,但每天VisaNet要處理全球上億筆交易,2年累積的資料多達36TB,過去光是要分析5億個用戶帳號之間的關聯,得等1個月才能得到結果,所以,Visa也在2009年時導入了Hadoop,建置了2套Hadoop叢集(每套不到50個節點),讓分析時間從1個月縮短到13分鐘,更快速地找出了可疑交易,也能更快對銀行提出預警,甚至能及時阻止詐騙交易。

台積電派員考取Hadoop證照,尋找影響良率的製程關鍵

而在臺灣,半導體龍頭業者台積電也遇到了類似的BigData難題。隨著晶圓製程進入奈米時代,晶圓生產技術越精細,產線各種機臺設備功能就越複雜,MES製程管理系統搜集到的各種製程資料量也越龐大。為了要深入分析龐大的製程資訊,找出提高生產良率的關鍵,台積電派員學習Hadoop分析技術,甚至不惜到美國取得Hadoop專業證照,來強化分析製程Log資訊的運算能力。

中華電信打造BigData運算平臺,分析一尾式巨量資料

而中華電信則是串連了168臺伺服器組成電腦叢集,以Hadoop技術打造了一個「大資料運算平臺」系統,可儲存600TB的資料量。中華電信嘗試用此平臺來分析訊務資料、MOD每日收視率分析、影音資料等傳統關聯式資料難以處理的非結構化資料。

中華電信研究所寬網室研究員蕭毅戲稱這種非結構化的資料為「一尾式」的資料,因為一個檔案的大小可能多達數十GB甚至是TB,就像是一整篇超大型的文章,而不是像傳統資料庫因為具有一定結構的資料欄位而容易取用。但是,透過Hadoop平臺,還是可以先找出這些資料中的特徵,將「一尾式」大型資料拆解成一段段長度相同,具有資料結構的小型資料,以便放入資料庫中進行結構化分析。

這套被眾多企業賴以解決Big Data難題的Hadoop技術,其實並不是一項全新的技術,早在2006年就出現了,而且Hadoop的核心技術原理,更是源自Google打造搜尋引擎的關鍵技術,後來由Yahoo支持的開源開發團隊發展成一套Hadoop分散式運算平臺,也成為Yahoo內部打造搜尋引擎的關鍵技術。

2002年時,Hadoop專案的共同創始人Doug Cutting 原本要打造一個開源的搜尋引擎Nutch,遇到了儲存大量網站資料的難題,剛好Google在2003到2006年間,對外公開了內部搜尋引擎的3大關鍵技術,分別是Google的GFS檔案系統,大規模叢集上的運算技術MapReduce,以及分散式檔案系統Bigtable,這些正是Google打造出全球性網路服務的核心技術,可以用分散式架構來儲存和處理超大規模的資料。

Doug Cutting 參考了Google這3項技術的原理,利用Java語言,發展出自家的DFS檔案系統和MapReduce程式,來解決Nutch搜尋引擎的大量資料擴充需求。Yahoo則是為了開發自家的搜尋引擎,看上Nutch專案的搜尋引擎,在2006年1月聘僱了Doug Cutting 。

不過,Yahoo當時不需要DFS檔案系統和MapReduce程式,因此,Doug Cutting也在2006年1月將這些程式碼從Nutch專案中獨立出來,另外成立了開源專案來維護,並且以兒子的玩具大象名稱Hadoop,來命名這項後來聞名世界的專案,這正是Hadoop以黃色大象為Logo的由來。

後來,Yahoo看到了Hadoop可以運用在大量資料運算的價值,也開始支援Hadoop專案,並投入不少人力參與開發,也開始在內部運用Hadoop,Yahoo甚至在2008年建置了一個當時全球最大規模的Hadoop叢集,利用4千多臺伺服器,使用超過3萬個處理器核心,來索引容量超過16PB的網頁資料。

Google也參與了Hadoop專案的開發,並利用此專案作為教材,在世界各地培訓雲端運算的開發人才,Hadoop逐漸被視為是雲端運算的關鍵技術。因為重要性日增,Hadoop也在2008年成為Apache的頂級專案,位階等同於全球最多伺服器採用的 Apache HTTP Server。

新興社交網站如Facebook、Twitter,因為用戶資料量暴增,而且資料類型大多是非結構化資料,如照片、影片、網站瀏覽記錄等,也開始採用Hadoop來處理資料。例如Facebook就曾利用Hadoop打造了一個資料倉儲平臺,來整理和縮減龐大的用戶資料,資料量減量後再放入甲骨文資料庫中進行分析。

幾年前,不少跨國企業,也因為巨量資料的問題,而找上Hadoop專案,Visa、eBay都是這時期率先採用的企業。另有軟體業者如趨勢科技也利用Hadoop來儲存和分析防毒軟體回傳的大量病毒記錄檔。

到了近兩年,社交網站和行動裝置風行,使用者瘋狂透過手機、平板電腦、電腦等,在社交網站上大量分享各種資訊,許多熱門網站擁有的資料量都上看PB等級,而大企業擁有的資料量也逐漸從TB等級,進入了PB等級。Big Data時代,宣告來臨了。

首當其衝的就是傳統的關聯式資料庫系統,原本企業資料庫需要的容量大多是MB、GB等級,但是到了Big Data時代,企業對資料容量的需求則暴增到了數10TB,甚至會出現相當於1,000TB的PB級資料。

一般來說,傳統資料庫系統對TB級資料量的處理相當得心應手,開發人員也很容易運用SQL指令來進行各項分析,各種商業智慧工具也相當成熟。但是對於超過 TB等級的資料量就顯得效能不足,或是企業得投資重金採購效能更好也更昂貴的專屬IT硬體設備,才能提供足夠的處理效能。

參與中華電信Hadoop平臺建置的中華電信資訊處第四科科長楊秀一,他一語道出了巨量資料對企業真正的難題,「最大的問題在於沒有便宜的儲存方式。」他說。

資料達TB級,Hadoop平均儲存成本和NAS、SAN相當

不過,若用Hadoop來儲存和處理大規模資料量,擁有多年Hadoop建置經驗的精誠資訊雲中心Big Data事業發展首席顧問陳昭宇估算,只要資料量超過TB等級,Hadoop平臺的平均單位儲存成本,幾乎和一般企業儲存系統,如NAS、SAN等系統的平均單位儲存成本相當,遠低於資料庫系統的建置成本。

這正是Hadoop獲得許多先行企業青睞的其中一項關鍵原因,正是因為只要使用一般商用等級的伺服器,就可以大規模地擴充儲存容量和運算效能。Hadoop的系統架構設計,採用所謂的水平式擴充架構(Scale Out),只要在叢集中增加更多設備,就可以提高整套運算叢集的效能,像Yahoo就用4,000多臺伺服器來組成一個Hadoop運算叢集。Hadoop不需要像採用垂直式擴充架構的傳統IT設備,遇到效能不足時,得整套汰換才能提高效能和容量。

不過,2009年時,企業要自行建置Hadoop仍舊不是一件容易的事,當時許多建置部署工具還未成熟。再加上,Hadoop為了提供分散式運算,內建的資料庫系統採用一種Key-Value形式的Column-oriented架構資料庫,和傳統關聯式資料庫截然不同,不僅沒有關聯式資料庫那樣的Schema資料庫架構,而且也無法使用開發人員熟知的SQL語法來管理資料庫。企業在當時要建置Hadoop,得投入不少專門人力才行。

但是BigData的浪潮,使得企業對Hadoop的需求日益增加,許多大型軟硬體公司也開始看到Hadoop的效益。近兩年來不少知名軟硬體公司,如甲骨文、微軟、EMC、Dell、NetApp、Teradata、Dell、IBM等都紛紛擁抱Hadoop,有的是直接併購具備Hadoop技術的新創軟體公司,有的則是增加自家產品對Hadoop的支援機制,也有些業者是推出內建Hadoop的整套設備產品。

主流資料庫系統如甲骨文資料庫、微軟SQL Server、IBM的DB 2,還有開源的MySQL紛紛支援Hadoop,資料倉儲產品如Teradata的EDW、EMC的Greenplum、IBM的Netezza也不例外紛紛擁抱Hadoop,只是各家支援作法不同。

另外,也出現了專門推廣和發行Hadoop套件的軟體公司,例如Hadoop創始人Doug Cutting加入的Cloudera公司,或是由Yahoo內部Hadoop團隊獨立出來的Hortonworks 公司。這些模式就像發行Linux套件一樣,Cloudera也推出了Hadoop的發行套件,稱為CDH(Cloudera's Distribution Including Apache Hadoop ),將部署和維護Hadoop所需的工具,打包到一個發行套件中,讓企業用一張光碟就可以快速安裝Hadoop平臺。在臺灣,SI公司精誠資訊也自行發展出一個Hadoop軟硬體整合的套裝產品。相較於過去,企業部署Hadoop的難度越來越低。

Hadoop人才培育也開始受到重視,除了像有需求的軟體、網路業者,如Google與學校合作培訓人才,在臺灣像國家實驗研究院高速網路與計算中心也有提供Hadoop實驗環境,供有興趣的企業免費試用,並能提供Hadoop訓練課程。

而戮力推廣Hadoop的Cloudera也推出了Hadoop專業認證,包括了Hadoop程式開發和系統管理兩種證照。目前起碼臺灣有14個人取得Hadoop專業證照,這些人分別來自國網中心、工研院、趨勢科技、精誠資訊、中華電信,特別的是台積電也有2名員工取得Hadoop證照,這群人正是臺灣少數的Hadoop技術專家,也反映出不論是研究機構、軟體公司或是企業,都想要善用Hadoop的企圖心。

Apache基金會也在2011年12月27日正式發布了Hadoop專案第一個1.0版正式版,包括如資安模式強化,底層檔案系統對資料Append的支援、HDFS支援HTTP的存取,以及多項效能優化等。陳昭宇表示,1.0版已經具備了企業應用需要的重要功能。只剩下Master Node的HA備援還未內建,但Master Node負擔不重,當機機率不高,也可透過第三方機制或硬體備援來提高可用性。

而Hadoop專案下還有許多次專案,發展了各種Hadoop相關套件來滿足企業不同的需求,而且也越來越成熟,這些相關套件組合成了所謂的Hadoop生態體系(Hadoop Ecosystem),內有許多重要的必備套件,例如PIG是一個Script角本語言套件,可讓不懂Java的人也能透過簡單的Script語法,來撰寫MapReduce分散運算程式。

另外還有一個Hive專案,可以透過類似SQL語法的指令來查詢和存取Hadoop中的資料。甚至微軟和Hortonworks合作開發一個Hive的ODBC驅動程式,可以讓Excel程式存取Hadoop上的資料,就像是Excel可以透過ODBC驅動程式來存取SQL Server上的資料庫系統一樣。

未來微軟還打算在Windows Azure雲端平臺上提供Hadoop租用服務,透過Hive ODBC讓Excel直接調度Azure上的Hadoop服務,來處理Big Data分析,並將運算結果輸出到Excel中呈現。

換句話說,可能有一天,不需要高深的Java開發能力,也不用了解分散式運算的邏輯,只要懂得操作Excel,再連結到雲端業者提供的Hadoop服務環境,任何人都可能擁有分析Big Data巨量資料的能力。

Hadoop關鍵概念

在Hadoop平臺中,核心用途是儲存空間的資源管理,以及記憶體空間和程式排程的安排。透過分散式架構的HDFS檔案系統、搭配可分散運算的MapReduce程式演算方法,可以將多臺一般商用等級的伺服器組合成分散式的運算和儲存叢集,來提供巨量資料的儲存和處理能力。要了解Hadoop,首先必須先了解MapReduce和HDFS技術的運作原理。

MapReduce是一種解決問題的程式開發模式,開發人員需要先分析待處理問題的解決流程,找出資料可以平行處理的部分,也就是那些能夠被切成小段分開來處理的資料,再將這些能夠採用平行處理的需求寫成Map程式。

然後就可以使用大量伺服器來執行Map程式,並將待處理的龐大資料切割成很多的小份資料,由每臺伺服器分別執行Map程式來處理分配到的那一小段資料,接著再將每一個Map程式分析出來的結果,透過Reduce程式進行合併,最後則彙整出完整的結果。

先拆解任務,分工處理再彙總結果

MapReduce的運作方式就像是大家熟知的全國性選舉開票,中選會事先將開票任務分配給各地投票所,每個投票所各自負責所屬的票箱,完成計票作業後將開票結果回報給中選會,由中選會統一彙整出全國的開票結果,這樣就不需要把幾百萬張選票都集中到中選會處理,而是透過分散處理的方式來加快開票作業。

開票任務就像是Map程式,每一個投票所都執行相同的開票作業程序,也只負責處理少量的局部資料,而Reduce程式就是彙總票數的工作。

在Hadoop運算叢集架構中,這些伺服器依據用途可分成Master節點和Worker節點,Master節點負責分配任務,而Worker節點負責執行任務,如負責分派任務的中選會,角色就像是Master節點。

另外在系統的運作架構上,最簡單的Hadoop架構,可以分成上層的MapReduce運算層以及下層的HDFS資料層。

在Master節點的伺服器中會執行兩套程式,一個是負責安排MapReduce運算層任務的JobTracker,以及負責管理HDFS資料層的NameNode程式。而在Worker節點的伺服器中也有兩套程式,接受JobTracker指揮,負責執行運算層任務的是TaskTracker程式,而與NameNode對應的則是DataNode程式,負責執行資料讀寫動作,以及執行NameNode的副本策略。

在MapReduce運算層上,擔任Master節點的伺服器負責分配運算任務, Master節點上的JobTracker程式會將 Map和Reduce程式的執行工作,指派給Worker伺服器上的TaskTracker程式,由TaskTracker負責執行Map和Reduce工作,並將運算結果回覆給Master節點上的JobTracker。

在HDFS資料層上,NameNode負責管理和維護HDFS的名稱空間、並且控制檔案的任何讀寫動作,同時NameNode會將要處理的資料切割成一個個檔案區塊(Block),每個區塊是64MB,例如1GB的資料就會切割成16個檔案區塊。NameNode還會決定每一份檔案區塊要建立幾個副本,一般來說,一個檔案區塊總共會複製成3份,並且會分散儲存到3個不同Worker伺服器的DataNode程式中管理,只要其中任何一份檔案區塊遺失或損壞,NameNode會自動尋找位於其他DataNode上的副本來回復,維持3份的副本策略。

在一套Hadoop叢集中,分配MapReduce任務的JobTracker只有1個,而TaskTracker可以有很多個。同樣地,負責管理HDFS檔案系統的NameNode也只有一個,和JobTracker同樣位於Master節點中,而DataNode可以有很多個。

不過,Master節點中除了有JobTracker和NameNode以外,也會有TaskTracker和DataNode程式,也就是說Master節點的伺服器,也可以在本地端扮演Worker角色的工作。

在部署上,因為Hadoop採用Java開發,所以Master伺服器除了安裝作業系統如Linux之外,還要安裝Java執行環境,然後再安裝Master需要的程式,包括了NameNode、JobTracker和DataNode與TaskTracker。而在Worker伺服器上,則只需安裝Linux、Java環境、DataNode和TaskTracker。

 

 

Hadoop 架構的伺服器角色分工

Hadoop運算叢集中的伺服器依用途分成Master節點和Worker節點。Master節點中安裝了JobTracker、NameNode、TaskTracker和DataNode程式,但Worker節點只安裝TaskTracker和DataNode。資料來源:國家實驗研究院高速網路與計算中心,iThome整理,2012年5月

 

Hadoop 1.0正式版3大特色

在2011年底推出,Hadoop第一個1.0正式版。新增的關鍵功能包括資安模式的強化、HBase資料庫套件內建了Append的支援、HDFS檔案系統支援HTTP存取等。

在資安模式的強化上,過去Hadoop最為人詬病的是安全認證強度不足。Hadoop是由多套伺服器節點組成,過去是有授權機制,只有獲得授權的伺服器可以存取Hadoop節點上的資料,但是Hadoop沒有搭配驗證機制,無法驗證是否為真正獲得授權的伺服器。因而過去有一種存取資料的取巧作法,若Hadoop伺服器A授權給伺服器B具有存取權限,而伺服器C沒有獲得這樣的授權,但因為舊版Hadoop不會驗證伺服器的身分,所以伺服器C可以更名為伺服器B來取得伺服器A的存取權。

精誠資訊雲中心Big Data事業發展首席顧問陳昭宇表示,舊版設計原則只考慮作為內部專用系統使用,但是,企業應用時往往會將Hadoop作為企業IT架構中的一個分析平臺,並開放給多套應用系統存取,此時確認存取者的身分就很重要,否則沒有存取權限的應用程式也有可能讀取到限制存取的機密資料。1.0版增加了Kerberos認證之後,就可以與企業LDAP伺服器整合,來檢查存取者的身分。

第二項更新是檔案系統的改善,原本Hadoop底層的HDFS檔案系統的設計初衷是:資料寫入後不能修改,但是可以無限制地取用。可是這樣的設計與Hadoop資料庫系統HBase的功能衝突,HBase需要修改原本寫入的資料檔來插入資料,過去使用者得自行安裝第三方修補程式,才能順利執行HBase,1.0版中因而將HDFS直接內建檔案附加寫入(Append)的機制,解決了HBase的資料寫入需求。

另一項重要更新是HDFS對HTTP的支援。原本在HDFS檔案系統上的檔案,只能透過命令列指令或是透過應用程式控制API來存取,新版則能支援HTTP的讀取,只要透過一個網址,就能讀取到HDFS的完整資料,並且能遵循完整的HDFS安全規範,不過目前還未支援透過HTTP的HDFS寫入機制。陳昭宇表示,透過HTTP來存取是許多開發者慣用的存取方式,如此可以更容易開發Hadoop應用,也更容易和其他網頁應用整合。陳昭宇認為,1.0版已經具備了企業應用需要的重要功能。

過去若要建置Hadoop平臺,支援上述新增功能,得自行安裝其他修補套件才行,而現在全都內建了。但是,陳昭宇認為,1.0版還有一項不足,那就是Hadoop叢集中,負責主控的Master節點只有1臺,還沒有HA的備援設計。目前只有Hadoop 0.23版開發版本才支援Master HA機制,但因功能尚未穩定而沒有放入1.0版。

目前這個問題應不至於構成很大的困擾,不過,陳昭宇表示,因為Master只是負責分派任務,資料流動都是在運算節點中直接傳輸,因此Master節點的負載不高,再加上Master雖然是把所有任務調派資訊都儲存在記憶體中,但也會定期備份到磁碟系統上,所以,只要透過共享NAS系統,讓另外一臺備用伺服器可以存取相同的NAS磁碟,一旦Master節點的硬體損壞,也可以由備用伺服器開機接手Master節點的工作,頂多是損失了幾分鐘的資料落差。另外也可以透過硬體備援機制的強化,例如雙重硬碟的鏡像設計,來提高Master節點的穩定性。

 


相關報導請參考「改寫IT規則的技術新趨勢」

熱門新聞

Advertisement