2012年5月30日 星期三

巨量資料的頭號救星--hadoop


巨量資料的頭號救星--hadoop

雲端運算瀚行動裝置的盛行帶來了巨量資料,除了原有資料庫中的大量結構化資料,各式各樣非結構化資料都成為企業掌握商機的關鍵素材。 

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

在國外,不只eBay這種跨國電子商務業者感受到巨量資料的衝擊,其他如美國連鎖超市龍頭Wal-Mart、發行信用卡的Visa公司等,在臺灣如台灣積體電路(台積電)、中華電信等手上擁有大量顧客資料的企業,都紛紛感受到這股如海嘯般來襲的Big Data巨量資料浪潮。這樣的巨量資料並非是沒有價值的資料,其中潛藏了許多使用者親身經驗的第一手原始資料,不少企業更是從中嗅到了商機。

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

Wal-Mart分析顧客商品搜尋行為,找出超越競爭對手的商機 
全球最大連鎖超市業者Wal-Mart就是善用Hadoop來挖掘出更多商機,甚至能超越競爭對手。


Hadoop企業案例1-全球最大超市業者 Wal-Mart

全球最大連鎖超市Wal-Mart利用Hadoop來分析顧客搜尋商品的行為,以及用戶透過搜尋引擎尋找到Wal-Mart網站的關鍵字,利用這些關鍵詞的分析結果發掘顧客需求,以規畫下一季商品的促銷策略,甚至打算分析顧客在Facebook、Twitter等社交網站上對商品的討論,期望能比競爭對手提前一步發現顧客需求。

Wal-Mart雖然十年前就投入線上電子商務,但線上銷售的營收遠遠落後於Amazon。後來,Wal-Mart決定採用Hadoop來分析顧客搜尋商品的行為,以及用戶透過搜尋引擎尋找到Wal-Mart網站的關鍵字,利用這些關鍵詞的分析結果發掘顧客需求,以規畫下一季商品的促銷策略。他們並進一步打算要分析顧客在Facebook、Twitter等社交網站上對商品的討論,甚至Wal-Mart能比父親更快知道女兒懷孕的消息,並且主動寄送相關商品的促銷郵件,可說是比競爭對手提前一步發現顧客。

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

Hadoop企業案例2-全球最大拍賣網站 eBay

eBay是全球最大的拍賣網站,8千萬名用戶每天產生的資料量就達到50TB,相當於五天就增加了1座美國國會圖書館的資料量。這些資料包括了結構化的資料,和非結構化的資料如照片、影片、電子郵件、使用者的網站瀏覽Log記錄等。eBay正是用Hadoop來解決同時要分析大量結構化資料和非結構化的難題。

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

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


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

Visa公司則是擁有一個全球最大的付費網路系統VisaNet,作為信用卡付款驗證之用。

Hadoop企業案例3-全球最大信用卡公司 Visa

雖然每筆信用卡交易的資料記錄只有短短200位元,但每天Visa公司要處理全球上億筆交易,2年累積的資料多達36TB,原本分析5億個用戶帳號之間的關聯,得等1個月。Visa在2009年導入了Hadoop後,分析時間從1個月縮短到13分鐘,更快速地找出了可疑交易,也能更快對銀行提出預警,甚至能及時阻止詐騙交易。

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

台積電派員赴美考取Hadoop證照,尋找影響良率的製程關鍵 
Hadoop企業案例4-台積電

晶圓製程進入奈米時代,晶圓生產技術越精細,產線各種機臺設備產生的各種製程資料也越龐大。為了要深入分析龐大的製程資訊,找出提高生產良率的關鍵,臺積電派員學習Hadoop分析技術,並不惜到美國考取Cloudera公司提供的Hadoop專業證照,深化分析能力以找出最好的製程調校方式。

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

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

Hadoop企業案例5-中華電信

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

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

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



Hadoop的創始

Hadoop共同創始人Doug Cutting借鏡Google搜尋引擎的3大關鍵技術,打造出分散式運算平臺Hadoop。

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推廣公司Cloudera在Linkedin的Hadoop認證社群中,可以發現臺灣起碼有14個人取得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巨量資料的能力。

轉載自《iThome