• No results found

Design and Implementation of a Big Data Processing and Analysis Framework on the Hadoop Ecosystem

N/A
N/A
Protected

Academic year: 2021

Share "Design and Implementation of a Big Data Processing and Analysis Framework on the Hadoop Ecosystem"

Copied!
56
0
0

Loading.... (view fulltext now)

Full text

(1)國立中興大學資訊科學與工程學系 碩士學位論文. 基於 Hadoop 框架建立巨量資料分析處理模型研究 Design and Implementation of a Big Data Processing and Analysis Framework on the Hadoop Ecosystem. 指導教授:張軒彬博士 Dr. Hsung-Ping Chang 研 究 生:簡玠忠. Chien-Chung Chien. 中華民國一○二年一月.

(2) 2.

(3) 誌謝. 一個念頭,一個轉念終於實行了自己在職進修的念頭,也很榮幸的考取 中興大學,開始在職進修之路。 能完成這篇論文,我要特別感謝我的指導教授張軒彬老師,耐心與細心的不 斷指導與調整,讓我的論文能以最佳的方式呈現,也要感謝實驗室的每一位成員 對我的支持與鼓勵,謝謝大家。. i.

(4) ii.

(5) 中文摘要 近幾年來,數位資料呈現爆炸性的成長,IDC 研究中指出,全球資料每兩年 就倍數成長,速度超越摩爾定律。-而隨著資料量成長及雲端運算的普及,預估 2020 年全球數位資料量將達 35ZB,並且三分之一的數位資料將透過雲端儲存與處理。 所以在往後的數位世界,大量的數位資料對個人或企業都存在許多潛在的商 機,但如何分析這些大量資料也面臨了技術瓶頸,因為這些資料大多是非結構化 的型式存在於的不同系統中,無法用 Database 或傳統方式來分析,因此新的擷取、 搜尋、發掘及分析方式將是未來對巨量資料處理的重點,為了協助企業能有個平 台來分析這些巨量資料的潛在價值,建構一個巨量資料處理流程是本篇論文的目 的。 在本論文中,我們基於 Hadoop Ecosystem 概念,整合 HBase、 Pig 等相關元 件,了解各個元件的概念與應用,進而建構出 Log 的分析架構,提供企業或有巨 量資料需要分析之單位,以此平台達到快速處理與分析巨量資料之目的。. 中文關鍵詞:Hadoop、MapReduce、雲端運算、分散式運算、大量資料處理. iii.

(6) ABSTRACT A research conducted by IDC indicates that information worldwide has doubled its amount in every two years, which has broken Moore’s Law. Besides, , with the increase of digital information and the universalization of Cloud Computing, it is pridicted that the amount of digital data will reach 35ZB by 2020. In addition, one third of digital data will be stored and processed through Cloud Computing. Consequently, large amounts of digital data will be the business opportunity for corporations and individuals. However, while we analyze the mega data, the limit of current technology is still a problem because most of these data is non-structured and stored in different systems. As a result, it is hard to analyze by database and other conventional ways. The new ways to retrieve, research, discover, and analyze the mega data would be the challenge issues of data processing. The main purpose of this research is to build a mega data processing platform on a private cloud environment , so as to enable efficiently and promptly analyze the potential profits of mega data Based on the Hadoop Ecosystem, we integrate Hbase, Pig, and other similar tools, understand their purpose goal and usage of each tool, and construct a log data analysis framework, providing enterprises or organizations with a platform that achieve high-speed process and analysis of mega data information.. Keywords:Hadoop,MapReduce,Could Computing,Distributed Computing、Big Data. iv.

(7) 目 次 誌謝 ....................................................................................................................................i  中文摘要 ......................................................................................................................... iii  ABSTRACT .....................................................................................................................iv  目 次 ................................................................................................................................. v  圖目次 ............................................................................................................................ vii  表目次 ..............................................................................................................................ix  第一章 . 緒論............................................................................................................ 1  1.1  研究背景與動機........................................................................................ 1  1.2  研究目的.................................................................................................... 1  1.3  論文架構.................................................................................................... 2 . 第二章 . 相關研究.................................................................................................... 3  2.1  雲端運算.................................................................................................... 3  2.2  雲端運算的定義........................................................................................ 3  2.3  Big Data ..................................................................................................... 7  2.4  Hadoop 簡介 ..............................................................................................8  2.5  MapReduce 軟體架構 ............................................................................. 10  2.6  HDFS ....................................................................................................... 11  2.7  HBase 研究 .............................................................................................16  2.8  Pig 研究 .................................................................................................. 18  2.9  Splunk 介紹 ............................................................................................. 20 . 第三章 . 企業巨量資料分析平台架構設計.......................................................... 25  v.

(8) 3.1  Hadoop Ecosystem 介紹.......................................................................... 25  3.2  巨量資料分析平台架構規劃.................................................................. 26  3.3  Log data 資料處理流程規劃 .................................................................. 27  第四章 . 企業巨量資料分析平台建置實作.......................................................... 29  4.1  平台環境架設.......................................................................................... 29  4.2  資料分析樣本.......................................................................................... 34  4.3  Log 資料收集方式 .................................................................................. 35  4.4  資料分析 Pig Latin 方式 ........................................................................ 35  4.5  資料處理 Hbase 方式............................................................................ 36  4.6  資料報表圖形化 (SPLUNK) .................................................................36 . 第五章 . 結論.......................................................................................................... 41  5.1  研究貢獻.................................................................................................. 41  5.2  未來研究方向.......................................................................................... 42 . 參考書目 ......................................................................................................................... 45 . vi.

(9) 圖目次 圖 一 雲端服務架模式意圖 ........................................................................................... 5  圖 二 雲端服務部署模式意圖 ....................................................................................... 6  圖 三 MapReduce 運算框架 ..........................................................................................10  圖 四 HDFS 架構示意圖 ............................................................................................. 12  圖 五 資料區塊複寫示意圖 ......................................................................................... 14  圖 六 Hbase 運作架構圖 .............................................................................................. 18  圖 七 Pig 存取示意圖 ..................................................................................................19  圖 八 Splunk 支援的資料類型 .....................................................................................21  圖 九 Splunk 資料傳輸架構 .........................................................................................21  圖 十 Splunk IT 搜尋引擎介面展示 ............................................................................ 23  圖 十一 Hadoop EcoSystem 各層系统 ........................................................................25  圖 十二 企業巨量資料分析平台模型 ......................................................................... 26  圖 十三 Log Data 分析流程圖 ..................................................................................... 27  圖 十四 平台部署架構(1+n)示意圖 ............................................................................ 29  圖 十五 Splunk 登入畫面 ............................................................................................33  圖 十六 防火牆產出的 LOG ........................................................................................ 34  圖 十七 CSV 格式的 LOG 樣本 .................................................................................. 34  圖 十八 Log 收集規劃架構 .......................................................................................... 35  圖 十九 Pig 語法 ..........................................................................................................36  圖 二十 Splunk 讀取 Hbase 程式碼 .............................................................................37 . vii.

(10) 圖 二十一 客制 Hbase 讀取程式碼 ............................................................................. 38  圖 二十二 Splunk 基本操作畫面 ................................................................................39  圖 二十三 Splunk 圓餅圖 ............................................................................................39  圖 二十四 Splunk 時間趨勢圖 ....................................................................................40 . viii.

(11) 表目次 表 一 各家雲端技術比較 ............................................................................................... 7  表 二 Hadoop 與 Google 架構比較 ............................................................................... 9  表 三 Hbase 邏輯 Table ................................................................................................17  表 四 Hbase 實際 Table 存放形式 ..............................................................................17 . ix.

(12) 第一章. 緒論. 1.1 研究背景與動機 近年來的 IT 業界流行用語,就非海量數據(Big Data)莫屬。在雲端議題愈來愈 熱的發展趨勢下,企業也面臨巨量資料的處理與分析需求。例如從消費者以往的購 買記錄預測未來的銷售等等。這些分析往往可以成為企業的指路明燈,因此越來越 受到業界重視。而在企業目前的環境與技術下主要用來分析大量數據的相互關係仍 使用傳統的 Database 技術,對日益成長的 Petabytes 等級的資料分析己無法成企業 的需求。 Hadoop 是根據 Google 公開的兩篇介紹其基建技術的論文的內容開發而成的開 源軟體,根據市場調查機構 IDC 的研究顯示,Hadoop 軟體市場的復合年增長率超 過了 60%,並預測到了 2016 年,市場總值將由 2011 年的 7700 萬美元增長至 8.128 億美元[1],在可預見的未來各行各業都可望因巨量資料的分析而受惠,且能夠適 用的情境可說不勝枚舉,以電信業為例,可透過網路流量的即時截取並獲得大量的 Meta Data,經由 Hadoop 平台予以處理、分析,藉於此了解使用者的行為特性,譬如 習慣性造訪的網站,而在這些網站中那些程式被使用的頻率最高或下載了那些應用 與消費,種種問題的解答,都將經由大量數據分析而逐一浮上檯面。. 1.2 研究目的 目前在 Hadoop 議題及相關研究己是火熱話題,在各種基於 Hadoop 的應用上 有非常多的開放源始碼專案支援,但目前要將之運用在巨量資料分析上,都需熟悉 Hadoop、MapReduce、HDFS、HBase、Hive…等關於 Hadoop Ecosystem 各元件的 技術,並也需要有實作經驗才能建立起企業資料分析平台,故希望藉由此次研究整 合一些 Hadoop 相關應用,建置起一個通用平台,得以適用各行各業將巨量資料之 導入、分析、產出之流程標準化,以此平台架構為基礎降低導入門檻,讓企業得以 分析有用之數據提振營運績效、生產力提昇、新產品研發加快等有助企業經營提昇 之正面效應。. 1.

(13) 1.3 論文架構 本篇論文架構一共分為 5 章節在本章說明本論文的研究背景、動機與目的,其 餘各章節描述如下:第 2 章對雲端概念、定義及 Hadoop Ecosystem 的基本元件進 行介紹,以瞭解其發展和應用等;第 3 章的部分,會針對 巨量分析平台的規劃與資 料處理流程進行規劃研究和探討;第 4 章則是研究實作部份,依研究規劃的資料處 理與整合各元件之概念,以防火牆 Log 為樣版實作出本篇論文之概念;最後第 5 章 則是結論與未來方向。. 2.

(14) 第二章. 相關研究. 2.1 雲端運算 在現今雲端運算(Cloud Computing)[2]正在改變我們對資料、系統架構或是 生活的運作習慣,「雲端運算」這聽起來有點前衛且高技術但又難以理解的科技名 詞,不斷的經由各大媒體或網路討論,讓大家都開始聲稱自己做的服務是屬於雲端 運算,搭上雲端運算順風車。「雲端運算」是一種概念。下面將針對此概念做一說 明。 「雲端運算」概念發展源由是在 2006 年 8 月 9 日,Google 執行長埃里克·施密 特(Eric Schmidt)在搜尋引擎大會(SES San Jose 2006)首次提出「雲端計算」 (Cloud Computing)的概念。Google「雲端運算」源於 Google 工程師克里斯多福·比希利 亞所做的「Google 101」項目,從此開始將此先進快速運算技術與研究計劃擴及至 校園,至 2008 年商用領域的加入如雅虎、惠普和英特爾讓此雲端運算技術與運用 開始進入商業運轉,在資料中心和巨量資料規模等級的運算環境提供各項服務。 分散式運算(Distributed Computing)的新運用可說就是現今所謂的雲端運算, 在之前分散式架構是在同機房多台主機將大型的工作運算區分小塊後,分別交由多 台主機各自運算再彙整結果稱之。因網際網路的發展快速,透由網路將龐大的運算 處理程序,拆分成無數個較小的子程序,再由多部伺服主機組成的雲端系統搜尋、 運算分析後把處理結果傳回給使用者。目前大家熟知且最常使用的搜尋引擎、網路 信箱等即是以此概念發展,可以在數秒之內處理數以千計甚至億計的大量資訊,讓 使用者只要輸入簡單單字即能得到大量資訊。 目前雲端運算在應用上己是非常普遍,愈來愈多的應用服務都可經由簡單的手 持裝置即可得到快速使用,如 Google 上的搜尋、翻譯、網路硬碟等多項應用、此 趨勢隨著網路頻寛速度不斷成長,在未來的 3、5 年,雲端運算或是相關的領域仍 勢必是發展的技術重點。. 2.2 雲端運算的定義 雲端運算一詞說法眾多,在網路上也可以找到不同解釋,所以引用最權威的美 3.

(15) 國國家標準局(NIST) [3]。所提出的五大基礎特徵、三個服務模型、四個部署模式 為基準來說明具備那些元素才是符合雲端運算。 A.. 五大基礎特徵 . On-demand self-service 隨時可自助服務,意指使用者可以依需求隨時開啟服務與網路儲存, 無需請求服務廠商才可以使用該服務。. . Broad network access 廣泛的網路裝置存取支援,允許使用各種跨平台設備(如手機、平板 電腦、筆記型電腦),透由標準的網路機制存取。. . Resource pooling 資源共享,服務提供者可將資源(實體或虛擬)動態的分配給使用者, 使用者不需知道服務廠商確切位置,而提供資源的位置可能在更高 層次或抽象的地方(跨洲、國家). . Rapid elasticity 快速且彈性的佈署,提供的服務能力能自動迅速的向外擴展或向內 緊縮,對使用者來講提供的能力是無限的,可在任何時間提供任意 數量的支援。. . Measured service 可被監控與量測的服務,建置的系統能夠自動的控制並優化資源使 用,通過持續的監控資源使用與控制,讓提供服務的廠商與使用者 有一定的透明度。. B.. 三個服務模型(Service Models) 圖一是目前雲端運算三個層次的服務示意圖:基礎設施即服務(IaaS), 平台即服務(PaaS)和軟體即服務(SaaS) . 軟體即服務 (SaaS): 消費者使用應用程式,但並不掌控作業系統、硬體或運作的網路基 礎架構。是一種服務觀念的基礎,軟體服務供應商,以租賃的概念 4.

(16) 提供客戶服務,而非購買。 . 平台即服務 (PaaS): 消費者使用主機操作應用程式。消費者掌控運作應用程式的環境(也 擁有主機部分掌控權) ,但並不掌控作業系統、硬體或運作的網路基 礎架構。平台通常是應用程式基礎架構。例如: Google App Engine。. . 基礎架構即服務 (IaaS): 消費者使用「基礎運算資源」 ,如處理能力、儲存空間、網路元件或 中介軟體。消費者能掌控作業系統、儲存空間、已部署的應用程式 及網路元件 (如防火牆、負載平衡器等),但並不掌控雲端基礎架 構。例如: Amazon AWS、Rackspace。. 圖 一 雲端服務架模式意圖[4]. C.. 四個部署模式(Deployment Models) 圖二是雲端運算部署依提供使用者存取的層次來分為:公用雲 (Public Cloud) ,私有雲(Private Cloud) 、社群雲(Community Cloud)和 混合雲(Hybrid Cloud) . 公用雲(Public Cloud) 5.

(17) 簡而言之,公用雲服務可透過網路及第三方服務供應者,開放給客 戶使用,「公用」一詞並不一定代表「免費」,但也可能代表免費或 相當廉價,公用雲並不表示使用者資料可供任何人檢視,公用雲供 應者通常會對使用者實施使用存取控制機制,公用雲作為解決方案, 既有彈性,又具備成本效益。 . 私有雲(Private Cloud) 私有雲具備許多公用雲環境的優點,例如彈性、適合提供服務,兩 者差別在於私有雲服務中,資料與程式皆在組織內管理,且與公用 雲服務不同,不會受到網路頻寬、安全疑慮、法規限制影響;此外, 私有雲服務讓供應者及使用者更能掌控雲端基礎架構、改善安全與 彈性,因為使用者與網路都受到特殊限制。. . 社群雲(Community Cloud) 社群雲由眾多利益相仿的組織掌控及使用,例如特定安全要求、共 同宗旨等。社群成員共同使用雲端資料及應用程式。. . 混合雲(Hybrid Cloud) 混合雲結合公用雲及私有雲,這個模式中,使用者通常將非企業關 鍵資訊外包,並在公用雲上處理,但同時掌控企業關鍵服務及資料。. 圖 二 雲端服務部署模式意圖[5] 雲端運算的特色主要是需要大量的伺服器來處理龐大的資訊,已有 Google、 IBM、微軟、Yahoo、Amazon、甲骨文、惠普、戴爾、昇陽(Sun),表一是目前 6.

(18) 科技大廠跨入雲端運算領域詳細整理資料。 表 一 各家雲端技術比較[6] 各家雲端技術比較 微軟. Google. Yahoo. Amazon. Application Amazon EC2 Platform 技 術 整合不同裝置與網 儲存與運算的水平擴 儲存與運算的水平 可彈性配置的通用 特性 路服務 充能力 擴充能力 虛擬機器 平 行 分 散 技 術 平 行 分 散 技 術 Hadoop 、 Window Server 核心 MapReduce、BigTable Xen 2008 與 Hypervisor MapReduce、HBase 虛擬化技術 技術 資 料 庫 系 統 、 GFS 虛擬化技術 資料庫、HDFS 檔 檔案系統 案系統 應 用 代 管 服 務 EC2,提供不同規 YAP、 GoogleAppEngine,每 格的虛擬機器供企 SearchMonke,使用 企業 Azure(pre-beta) 月低於 500 萬瀏覽次 業租用,但有規格 Y!OS API 的應用 服務 Live Mesh 的網站可免費代管, 上限。 可動態新增 程式,可免費代 可使用 500MB 儲存 多個虛擬 機器分 管。 空間。 擔服務。 已 支 企業可自行建置不 援的 .NET 語言(IIS 7 Web Python,未來會 同作業系統和平台 PHP 開發 支援語言) 支援更多語言 的執行環境 語言 支 援 提 供 S3 儲 存 服 的 資 SQL Service,如資 BigTable HBase 務,企業可自行建 資料庫系統 料 庫 料表、檔案等。 資料庫系統 置所需資料庫系統 系統 開源 公開設計架構,程式 開放 API 完全開源 完全開源 程度 碼未開源 按使用的處理器時 將按資源與服務等 按 使 用 的 處 理 器 時 計價 間、儲存空間與網 級(SLA)計價, 間、儲存空間與網路 尚未公布 方式 路流量計價,也新 細節未公布 流量計價 增服務等級計價 平台 Windows Azure. Google App Engine. 2.3 Big Data 「Big Data」[7]這個名詞從去年下半年開始成為全球的顯學,由字面解釋是大 量資料、巨量資料。而大量的數據資料如未經有效的處理前,並不具有參考價值。 當有效且適當的處理企業產出的巨量資料,分析巨量資料變成對企業營運或決策價 值,才是 Big data 的真正精神。 7.

(19) 談論 Big Data 時都會談到它的三種特性:Volume(資料量) 、Velocity(資料產 生的速度)、Variety(資料的種類) 。 A.. Volume(資料量)-指龐大的資料,何謂龐大,由於企業面臨高度電腦化,目前有些大 型己面臨單日資料以數十、百 TB 的成長速度。己是用資料庫難以處理的。. B.. Velocity(資料產生的速度)-指數據資料增加速度愈來愈快,目前社群網路、行動網路的流行讓 資料的產生速度比以往更以倍數成長。處理與分析大量數據的速度也就需 要跟上。. C.. Variety(資料的種類)-指產出資料的多樣化,目前資料的型式也不再單純化,IT 己深入各 生活領域,照片、音樂、影片愈來愈多應用的產出讓企業儲存的資料種頪 更多變。. Big Data 不再是一個話題,而是己在現實生活中企業每天面臨的問題,許多新 的技術發展都在打造巨量資料處理分析的能力,Hadoop 是目前對於 Big data 的一 完整開放原始碼專案。企業可以使用這類的技術來分析產出的巨量資料,但 Hadoop 仍是個新的技術,且有些元件技術門檻較高,如何整合發展出一穩定平台,讓未來 分析巨量資料更容易,是研究發展的目標。. 2.4 Hadoop 簡介 Hadoop[8]是 Apache 軟體基金會 (Apache Software Foundation) 底下的開放原 始碼計劃 (Open source project),提供可靠性、可擴充性、分散式運算的框架。 表二是 Hadoop[9]與 Google 二個雲端技術對照表,因 Hadoop 是 Google 發 表的 BigTable 及 Google File System 等論文概念實做而成,所以跟 Google 內部使用 的雲端運算架構相似,其中 Hadoop MapReduce 如同 Google MapReduce,提供分散 式運算環境、Hadoop Distributed File System 如同 Google File System,提供大量儲 8.

(20) 存空間、HBase 是一個類似 BigTable 的分散式資料庫 ,以及根據 Hadoop 延伸發 展的其他子專案: ●Core:一組用於分散式檔案系統和一般性 I/O 之用的元件和介面。 ●Avro:提供高效能、跨語言以及可保存資料的 RPC 資料序列化系統。 ●Pig:超大資料集的資料流語言以及執行環境,可在 HDFS 和 MapReduce 叢集環 境中執行。 ●ZooKeeper:分散式且高可用性的協調服務,可為建置分散式系統提供分散式鎖 定等原始鎖定功能。 ●Hive:分散式資料倉儲,透過 Hive 可管理存放於 HDFS 的資料,並提供根據 SQL 發展的查詢語言來查詢資料。 ●Chukwa:分散式資料收集和分析系統,其會執行收集器以便在 HDFS 中儲存資 料,且會使用 MapReduce 來產生報表。. 表 二 Hadoop 與 Google 架構比較 Google. Hadoop. MapReduce. Hadoop Map Reduce. GFS. HDFS. BigTable. HBase. 目前 Yahoo!及 Cloudera 等公司都有開發人員投入 Hadoop 的開發團隊,也有 將近一百個公司或組織公開表示使用 Hadoop 做為雲端運算平台,Google 及 IBM 也使用 Hadoop 平台為教育合作環境。 本研究是借由 Hadoop 系統為主要組成元件。藉由整合儲存系統(HBase)、分散 式檔案系統(HDFS)、MapReduce 框架元件等來達成建置一個企業巨量資料分析平 台。. 9.

(21) 2.5 MapReduce 軟體架構. 圖 三 MapReduce 運算框架[10] 圖三是為 Google 針對大量資料平行運算所提出的一個軟體架構概念: 「Map(映 射)」和「Reduce(簡化)」的 MapReduce 運算框架。以下針對 6 個步驟說明如下: (1)fork-用戶程式裡的 MapReduce Library 會先把輸入的檔案資料切成 M 等份, 每個等份 16 MB-64MB , 然後會複製好幾份存在整個機器叢集 (2)assign map reduce-其中一份特別的資料會指派給 Master. 再由 Master 主機 去找閒置的機器當 Worker 主機,並指派 M 個 Map task 和 R 個 Reduce task 到 worker 主機,至於哪些 Worker 機做 Map 哪些做 Reduce,也是由 Master 機來指派 。 (3)read-負責做 Map 的 Worker 主機,會根據 input 資料的 key/value 的配對傳 到開發者設計的 Map function 並將其 Map 結果暫存於記憶體。. 10.

(22) (4)local write-由 Map function 做出的暫存資料存在本機的 Intermediate file,由 Partition function 分割成 R 個區塊後把區塊位址交還給 Master 主機 (5)remote read-負責執行 reduce 的 Worker 接到由 Master 傳來 Map 處理完的 資料位址後,會遠端讀取這些資料並依照 key 做排序,把相同的 Key 再 群組(Group)起來. (6)write-Reduce worker 會計算 sort 和 group 後的單一 key 的數量,在把這些 值丟給用戶定義的 Reduce function 處理,處理後的資料會附加(append)到 reduce 區的 output 檔案。. 2.6 HDFS Hadoop Distributed File System(簡稱 HDFS) 是 Hadoop 開發能夠相容在普通硬 體的分散式檔案系統,其著重部署於低成本的硬體環境但是有高度容錯的能力。希 望以最低成本或現有設備即可提供大量資料的存取,適用於大型數據資料的應用上。 HDFS 是 Apache Hadoop 核心項目的一部份,基於 POSIX 的設計來實現對文件或 媒體流的存取資料。 A.. HDFS 的假設與目標 . 硬體故障 硬體異常或故障是常態而非例外,故障檢測與自動恢復是 HDFS 的核 心設計目標. . 資料流的存取 HDFS 預期將存取大量資料,故以設計批次處理方式來強調高吞吐量的 數據存取,而非低延遲的資料訪問。. . 大量資料集合 在 HDFS 上一個典型的文件是用 GB 或 TB 計算,HDFS 設計以支援大 型文件處理,在單一個節點提供資料大量存取的能力,而在數百台組 成的群集可以支援千萬個這種大型文件存取。. . 簡單文件相依模型 11.

(23) 一次性寫入多次讀取為 HDFS 文件存取模型,當資料被寫入完成後, 再也不會被改變,只能被讀取,簡化了資料一致性的問題。MapReduce 應用程序或搜索引擎非常適合這個模型。 . 移動計算比移動資料更便宜 為提高運算的效率,當一個程序被執行且需讀取大量資料時,為了減 少移動資料所造成網路擁塞和增加系統整體效能,移動計算到更接近 存放資料的節點運行,往往比移動大量資料來的有效率。. . 跨異硬體和軟體平台的可移植性 以 JAVA 開發所以可跨硬體與軟體平台,有利於 HDFS 被廣泛使用成 為一個首選平台。. B.. HDFS 主從架構. 圖 四 HDFS 架構示意圖[11] 圖四是一個典型的 Hadoop HDFS 系統部署架構示意圖,會由一台較 高運算能力的設備當目錄節點,而其他各機器運行資料節點,集合起來為 12.

(24) 一個 Hadoop HDFS 檔案系統。 目錄節點也是整個系統的主節點,負責檔案的維護與管理,包含目錄 建立、刪除、改名等等。同時也管理資料區塊與資料節點的對應,所以對 使用者而言,是以目錄節點為存取點,再由目錄節點告知檔案實際存放之 區塊位置,使用者端再依序去資料節點存取,完成檔案的存取操作。 資料節點為整個系統的一個設備,負責區塊資料的存取,寫入時由目 錄節點分配由那一個資料節點存放,讀取時使用者由目錄節點獲得資料區 塊對應關係後就會直接到對應的資料節點讀取。 C.. 檔案系統命名空間 目前 HDFS 與現行 Linux 檔案結構相類似,支援階層式的檔案組織結 構,使用者或程序可以建立目錄,在目錄中建立、刪除、變更檔案,或是 移動檔案到另一個目錄,但目前 HDFS 無法依使用者帳號來限制使用空間 大小或是檔案權限控管,也不支援硬鍵接和軟鍵接,然而 HDFS 開發架構 不排除未來支援,但短期間可能還不支援。 目錄節點維護檔案系統命名空間且記錄目錄的變化,應用系統可以指 定抄寫多份檔案為副本,這些副本的數量被稱之為複製因子。這些資訊將 被儲存在目錄節點中。. D.. HDFS 資料儲存原理 1). 資料複製機制 圖五是 HDFS 複寫機制概念,HDFS 被設計用在大型群集系統中 儲存大量資料,它將一個檔案分割成一連串的區塊,除了檔案最後 一個以外其餘檔案區塊分割大小都相同,並將每一檔案區塊抄寫多 份以達到資料容錯性,而檔案區塊大小的分割與複寫數量都可以設 定,由應用程式或管理者在建立檔案之初或是建立之後改變設定。 資料節點會定期傳送一個訊息(Heartbeat)與資料區塊列表給目 錄節點,讓目錄節點確認資料節點的所有區塊資料編號且是有效的。 13.

(25) 目錄節點會依資料節點傳送回來的狀態與資訊有效來做出讀取決 定。 資料的複寫在整個 HDFS 系統可說是影響效能與可靠性的關鍵, 可優化複本放置區是 HDFS 系統與其他分散式最大的區別,而如何 調校區塊存放是需要大量時間與經驗,在大型的 HDFS 運行機制上, 有許多機器橫跨多個機櫃甚至不同機房,同一機房內的不同機櫃可 能是以交換機來溝通,跨機房是以 WAN 線路來溝通,在大多數情況 下同機房的互連頻寬一定大於不同機房。. 圖 五 資料區塊複寫示意圖[11] HDFS 提供了 API 來決定資料節點所屬的機櫃 id,當資料節點 起動時會確認所屬 id 並與目錄節點註冊,由目錄節點管理所屬之各 資料節點。 HDFS 預設是將每個資料節點都認定在不同機櫃上,這樣的設定 不是最好的策略也沒達到優化的目地,但也有下列幾個優點: 1. 可靠性是最高的,因任一機櫃異常都還有其它機櫃複寫 14.

(26) 2. 在讀取時每個機櫃的頻寬都會充份使用到 3. 這樣的設定可達到負載平衡與最高容錯處理 其缺點是會增成寫入成本,因每次寫入時都需要傳輸至每個機 櫃。 在一般預設情況下,HDFS 的複寫參數是 3,代表每個分割後的 檔案區塊會存放在 3 個資料節點上,資料寫入是將第一份區塊與第 二份區塊放在一個機櫃但不同資料節點上,最後一份區塊放在不同 機櫃的資料節點。將三分之一的區塊置放某一個節點,而另外三分 之二區塊放在同一機櫃節點,此策略可在不影響可靠性上提昇讀取 性能。 2). 資料複製選擇 HDFS 在有讀取資料的需求時,依上述之存放策略會嘗試以最接 近用戶端的資料節點讀取,如果用戶端與資料區塊屬同一機櫃,則 該區塊是讀取最首選。如果 HDFS 部署在跨多個資料中心時,讀取 的策略是在同一資料中心的副本優先於遠端的資料中心。. E.. 資料安全模式 當 Hadoop 系統啟動時,目錄節點會進入一個特殊的安全模式,在此 模式下不會執行資料區塊的複寫動作,直到每個資料節點回傳他的狀態是 否正常與它所儲存的資料區塊列表,而目錄節點會檢查讓檔案所需之最小 副本數目,當副本區塊數量的比例檢查後被認為是安全的,此時目錄節點 就會退出安全模式。然後對於列表中的區塊少於指定的副本數量(假如此 情況存在時),目錄節點會將不足的資料區塊開始複製到其他的資料節點 上。. F.. HDFS 的通訊協定 HDFS 是以 TCP/IP 為基礎來開發相互之間的溝通協定,用戶端使用 ClientProtocol 與目錄節點溝通,資料節點使用 DataProtocol 與目錄節點溝 15.

(27) 通,而目錄節點只回應請求並不會主動發起通訊。 G.. 資料錯誤與異常處理 HDFS 檔案系統設計目標就是保證資料的完整性,故其將硬體異常視 為常態而非偶發,所以一般存取中會出現目錄節點異常、資料節點異常、 網路傳輸異常幾個會出現的錯誤都有解決方案。 資料節點異常-由資料節點定期傳送一個正常狀態給目錄節點,有可 能因網路或資料節點故障導致無法傳送此一正常狀態回去給目錄節點,當 目錄節點收不到該資料節點的回報即會將此資料節點從有效列表中移除, 而該資料節點所存放之檔案區塊也會被標示為不可讀取,此時某些區塊會 低於複寫設定最小數目,目錄節點會定期檢查那些區塊低於最小數量,並 開始重新複寫不足區塊至其它資料節點。 網路傳輸異常-由於網路傳輸有可能造成從資料節點讀取的資料有異 常,使用者在寫入檔案時會用 MD5、SHA-1 來建立一個 HASH 檔並存於 同一路徑的隱藏文件中,當使用者端讀取檔案時用該 HASH 來驗證資料完 整性,如資料錯誤則會請求目錄節點讀取另一資料節點的副本,並通知目 錄節點上次讀取之區塊錯誤,目錄節點會定期檢查並重新複寫該錯誤區 塊。 目錄節點異常-FsImage 和 Editlog 為目錄節點核心之資料結構,當其 中一個檔案出現異常或錯誤將導致整個系統異常,故 HDFS 允許使用者設 定將 FsImage 和 Editlog 檔案複制多份,維持多個副本存在,且當任一檔 案有所異動均會同步更新到多個副本,當 FsImage 和 Editlog 檔案異常時 可藉由副本回復正常運作。副本機制會降低效能,但為維持資料可靠性此 作法是必要的。但目前目錄節點無法支援自動重啟或 High availability 架構, 當目錄節點單點故障時人工介入是不可避免的。. 2.7 HBase 研究 HBase[11]為在 Hadoop 上的一個分散式儲存系統的開放原始碼計劃,其利用 16.

(28) Google Bigtable 在 GFS 做檔案儲存系統的論文基礎,而發展出 HBase 以 Hadoop HDFS 檔案系統做為儲存的分散式儲存系統。其主要目標是發展出一個可靠性、高 效能、擴展性的一個低價群集分散式儲存系統。 HBase Data Model 在 HBase 中是以表格為基礎,表格是儲存在 HDFS 檔案系統 上,是可多維度定義、排序的、稀疏的、巨大的一個資料表。每個資料表格的索引 值是以行的關鍵字、列關鍵字、時間戳記為搜尋索引,在行列的字串中每個字元或 字串都是索引的值組合。 表 三 Hbase 邏輯 Table [12]. Row Key. Time Stamp. ColumnFamily contents ColumnFamily anchor. "com.cnn.www" t9. anchor:cnnsi.com = "CNN". "com.cnn.www" t8. anchor:my.look.ca "CNN.com". "com.cnn.www" t6. contents:html "<html>...". =. "com.cnn.www" t5. contents:html "<html>...". =. "com.cnn.www" t3. contents:html "<html>...". =. =. 表三是 Hbase 建立表格時的邏輯概念範例,當使用者建立一個表格來儲存資料 時,此表格由每一行都有排序的索引值和任意的列組成,因每一行都可以組合不同 數量的列,所以同張表格中每行的列數量可以是完全不同的。 表 四 Hbase 實際 Table 存放形式 [12] Row Key. Time Stamp Column Family anchor. "com.cnn.www" t9. anchor:cnnsi.com = "CNN". "com.cnn.www" t8. anchor:my.look.ca = "CNN.com". Row Key. Time Stamp ColumnFamily "contents:". "com.cnn.www" t6. contents:html = "<html>...". "com.cnn.www" t5. contents:html = "<html>...". "com.cnn.www" t3. contents:html = "<html>...". 在 HBase 表格中列的名稱定義格式是"<family>:<label>"[12],由字串組成,同 張表格有一個"<family>集合,此集合是表格結構,應固定不變動的,但如需要調整 17.

(29) 則只能通變更改表格結構方式來變更,相對於 label 是每行都可以改變的。 表四是 Hbase 在實體 HDFS 檔案儲存時將同一個 family 的資料都放在同一個 目錄下,以行為基準寫入的方式操作檔案儲存,當資料更新寫入時是以時間戳記來 辨識版本,每次更新不會覆寫而是更新一個新版本,但 HBase 會保留一定次數的 版本,且這設定值可由調整 HBase 參數修改。. 圖 六 Hbase 運作架構圖[13] 圖六為 Hbase 的運作架構,HBase 被設計成一個 Master 管理一到多個的 RegionServer 的群集模式,HBase 主節點對整個群集主機與儲存的資料都有監控機 制,定期掃瞄每個節點確保資料正確運作,而 RegionServer 也會定期的回報本身運 作狀況給 Master 確保其運作正常。. 2.8 Pig 研究 Pig 是一個 Hadoop 的子計劃。基於 Map-Reduce 開發出具 SQL 類似語法功 能的查詢語言,目的是將 MapReduce 的實現進行簡化,讓使用者無需編寫複雜 MapReduce 程式,以更高層次的語法將數據資料處理轉換成 MapReduce 所需的函 數並執行。並且讀寫操作數據最終都是儲存在 HDFS 分散式檔案系統上,針對分析 18.

(30) 龐大數據與處理資料流設計出來的語言。 圖七說明 Pig 運作概念,把 Pig Latin 語言翻譯成 Map-Reduce 的函數並且讓 Hadoop 來 執 行 。 Pig Latin 語 言 設 計 之 初 即 針 對 需 要 大 量 資 料 分 析 處 理 的 MapReducce 而開發。雖然在 Hadoop 上分析數據的工具有非常多,不過 Pig Latin 以 平常熟悉的 SQL 如 Group、Filter、JOIN 等指令來對 Hadoop 上的資料做分析處理, 讓使用者可以針對巨量資料的分析更容易上手。. 圖 七 Pig 存取示意圖[14] Pig Latin 具有下面的特點: . 容易開發使用 Pig Latin是個簡單又容易達到平行處理數據分析的工作。複雜的數據分析經由 Pig Latin明確的編碼與數據處理,使Pig非常容易撰寫與維護。. . 資料承載擴充性高 Pig Latin 是以在多台機器上平行執行的語言為設計理念,即使資料越來越大, 對於撰寫 Pig Latin 的使用者來說是完全透明的,並不會感受到任何影響 ── 例如在 Hadoop 平台上。Pig 的運算指令都是挑選過,適合平行運算的才 納入。. . 功能彈性 讓使用者可以User-defined Functions (UDF,使用者定義函式)與 Embedded Pig 19.

(31) (內嵌式 Pig),前者讓使用者用 Java 撰寫比較複雜的函式,然後在Pig 主程 式裡執行。後者則是相反,讓使用者能在Java 主程式內嵌執行Pig指令,讓程 式的撰寫更有彈性。. 2.9 Splunk 介紹 資料與數據分析一直是商業用途上不可或缺的一塊,從簡單的 EXCEL 到資料 庫甚至到資料倉儲系統,不外乎都在針對資料、數據做整理分析找出具有價值的資 料。但隨著資訊環境快速改變與成長,更多樣化的數據與不同平台之間的整合常是 這些以資料庫為基礎的系統無法靈活應變的問題點。 在資料庫為基礎的系統,需「資料庫正規化」程序來建立資料,以及資料表之 間的關聯性,以藉此消除重複性和不一致的相依性。設計部門永遠面臨到新的挑戰 修改資料結構或程式以滿足使用者的需求。當系統不斷的擴充,系統效能不佳、數 據不準確、開發時程過長等等問題將一一浮現,也是數據分析的一大阻礙。 Splunk [14]是一套以搜索引擎為技術的數據收集與分析系統,官方網站[x]上對 Splunk 的定義為 Log Server 軟體與 IT 搜尋引擎的結合,從單一平台集中整個公司 機房設備的 Log 或數據,讓系統管理員從單一管理介面針對所有不同的系統、硬體 紀錄與歷史紀錄檔,進行搜尋、報告、監視、警示及分析,系統管理員可於短時間 鎖定系統、硬體、 應用程式問題及偵測安全事件,而不用耗上很多的時間及人力 尋找系統問題 (trouble shooting),更可監視系統,避免服務效能降低或中斷、以提 升系統可用度,並依照管理者設定需求提出警示 只要是以純文字型態存在,Splunk 支援任何資料、紀錄檔的格式的 Input,如: Win Event logs、Syslog、SNMP、Scripted Input、File Input、Network Port、FTP、 SCP 等,其不需使用及不需開發轉譯器 (parser/connector),不限制任何作業系統、 資料庫、設備、廠牌、版本、格式及虛擬化平台,皆可蒐集所有資料,並建立資料 關聯及快速索引 (Index),並可針對不同的資料區分快速索引(Index),以達到大量 資料快速搜尋(Search)的效益,如圖八所示。 基本上, Splunk 的運作模式是由一台 Splunk 主機負責蒐集資料,由上傳資料 的伺服器或設備(此稱 forward),將資料上傳至主機上,並由主機的 Splunk 去建立 20.

(32) 資料的關連與快速索引,提供管理者查詢、監控、報表產出及其他相關功能。但通 常一般企業不止有一台的 forward 需要上傳資料,以計算中心而言,至少有上百 的主機、網路設備、虛擬平台的 Guest OS、Storage 設備及異地機房,當巨量資料 同時需要匯入並查詢時就會產生效能問題。. 圖 八 Splunk 支援的資料類型[15] 圖九是 Splunk 多層式架構,採用多層式的 Splunk 架構可將依功能區分成不同 主機,以解決單一主機效能不足的問題。當資料不斷增長時,此架構可隨時增加硬 體來彈性擴充效能。. 圖 九 Splunk 資料傳輸架構[15] 21.

(33) Splurk 的特色及功能分為搜尋引擎、事件警示、報表、監控的儀表板等。在 IT 搜尋引擎方面,是 Splunk 吸引人之處,其 IT 搜尋引擎有以下四個特點: . 快速索引:將 LAN 上面的不同設備、伺服器、作業系統、應用系統所產 出的 IT 資料排列及摘要。. . 搜尋引擎技術:利用獨特的資料儲存方式,快速找出所要的資料。. . 互相關聯的資料:利用條件的方式,快速找出互相關聯的資料,例如: Username、IP 地址、主機名稱、錯誤訊息、Windows Event ID。. . 數學運算分析:利用數學運算能力,將搜索出的資料、欄位快速生成互 相關聯性的分析及統計報表。. 基於以上及特點,很多管理人員一定很心動,其實並沒有想像的簡單,第一, 必須要了解系統、硬體設備的記錄檔訊息,例如:錯誤訊息、事件代碼…等,如此 才可以更確實的搜尋到想要的資訊、第二,由於 Splunk 的搜尋引擎是採用正規化 語法,如需要做到複雜的查詢還是必須要在正規化語法下不少功夫,以下是常見的 管理需求項目: . 事件警示:Splunk 可根據定時搜索結果進行即時報警、通知及動作,並 且可透過預先定義的 Shell Script 重新啟動伺服器或發送執行指令自動 處理。. . 報表產出:Splunk 產出的報表多元化且美觀易讀,結合快速及彈性化的 搜索產生報表,亦可指定報表資訊的時間範圍。. . 監控儀表板(Dashboard):透過儀表板編輯器,能迅速地建立即時儀表板。 儀表板能夠結合多種圖表與搜尋指令產出的即時資料檢視功能,可滿足 不同層級的使用者的需求。除了內建的儀表板外,管理人員可以針對不 同使用者身分權限自訂儀表板。 見圖十是 Splunk 基本的操作介面,在畫面黑框是一個搜索指令輸入處,. 使用者可在此輸入關鍵字來查詢所有相關的資料,或輸入 Splunk 提供多樣化 的函數來達成複雜的搜索需求。. 22.

(34) Splunk 擁有彈性的客製化、快速的搜尋、精美的儀表板及多元化的統計 報表特色,Splunk 採用 XML 並廣泛應用,不需複雜的程式設計即讓系統能 簡易達到客製化的彈性。其提供一個平台讓使用者熟悉基本 HTML、XML 等 程式概念,即可快速設計出想要的資料報表,非常適用在數據分析後的報表 產出。. 圖 十 Splunk IT 搜尋引擎介面展示 Splunk 是一個非常好並己商業化的軟體,其費用是以單日 Log 流量計價,但 也提供每日 500MB 免費版本的使用,在此次的研究中將由 Hadoop 強大的巨量資 料運算能力,針對企業巨量的數據做運算處理,處理產生的結果資料以圖形化、表 格化方式來統計報表呈現。Hadoop 平台產出的資料結合 Splunk 彈性客制的介面與 多樣化的統計功能來做使用者端 UI 介面的呈現也是此次研究的重點。. 23.

(35) 24.

(36) 第三章. 企業巨量資料分析平台架構設計. 3.1 Hadoop Ecosystem 介紹 在巨量資料儲存與分析運算不斷倍數成長的情形下,如何有效處理分析巨量資 料在今後更顯的重要,但傳統的分散式架構會面臨許多問題,因而衍生出 Hadoop 和 HBase 的概念與應用。經由不斷的開發與修正,Hadoop 逐漸發展出自己的生態 系統(Ecosystem) [8]。 圖十一是基本的 Hadoop Ecosystem 架構,但隨著 Hadoop 高成長與高應用發展 態勢,愈來愈多專案開發新的元件以符合各樣的需求,開發者可讓 Hadoop 經由不 同的組合方式達到多樣化的解決方案。這次研究也是利用 Hadoop Ecosystem 的特 性來開發一個企業巨量資料數據的分析平台,能協助企業簡單又快速的部署,對於 大量數據能找出有效的分析結果。. 圖 十一. Hadoop EcoSystem 各層系统[8] 25.

(37) 3.2 巨量資料分析平台架構規劃 在此次論文主要是針對成長快速的數據資料如何以一套有效率且便宜的系統 完成分析並產出報表為目標,目前發展中的 Hadoop Ecosystem 己具有多樣化的元 件組合,各個元件都仍持續獨立發展中,在整合應用的發展上尚未見成熟。. 圖 十二 企業巨量資料分析平台模型 經過仔細研究 Hadoop 與其相關組成元件後,圖十二是本論文,對於巨量資料 分析所規劃出的平台架構,在黑色實框中是這次會使用到的 Hadoop 元件名稱,依 功能屬性將之分為文件儲存層(HDFS)、結構化儲存層(HBase)、資料分析層(Pig)、 圖形化資料報表(Splunk)。在黑色虛線框是未來擴充整合的元件,其功能主要是讓 Hadoop 達成資料庫特性與讀取異質資料庫的整合應用。 規劃出的平台模型組成 Hadoop 巨量運算的最基本應用,各層中由 Hadoop HDFS 提供了可靠性的底層檔案儲存系統,讓 HBase 位於 HDFS 上提供結構化的儲 存應用,Hadoop MapReduce 則為 HBase 提供了高效能的運算能力,Zookeeprt 為 26.

(38) HBase 提供了容錯能力,當單點失效時仍能運作正常。 在資料分析與報表呈現部份,則以 Pig 元件來使用類 SQL 查詢語法,來使得 對 HBase 上的資料讀取與資料統計分析變的更簡便,不需使用原生複雜難懂的 HBase 語言。當使用 Pig 語法查詢 HBase 資料後,將產出以列為格式的結果,此結 果類似表格資料,對於以各式圖表的呈現仍需客制程式來達成,故在此次研究中整 合商業軟體 Splunk,利用 Splunk 對資料的即時呈現與強大的圖表制作能力,將 Pig 的結果變成是 Splunk 的輸入,創造成豐富的報表整合能力,讓在實際巨量資料分 析的呈現更多樣化、圖形化。. 3.3 Log data 資料處理流程規劃 企業系統或應用程式在運作時都會產生大量的 Log 資料來記錄存取軌跡,但這 些 Log 是否具有價值或可產生對企業改善營運有效的資訊是必須花費大量的成本 去分析,不具經濟效益,隨著 Hadoop 發展,分析這巨量的 Log 變的更單純與快速, 而針對這樣的需求來發展一個 Log Data 分析的資料流處理模式,把原本複雜的分 析轉變成一標準流程,以讓企業未來針對各系統產出的資料可探勘出更多有效的資 訊加以運用,提高生產效率,改善流程,圖十三是對各種應用系統原始 Log 資料從 產出後再輸入到 Hadoop HDFS 以至於結果以報表資料或圖表化的統計結果做一流 程規劃。. 圖 十三 Log Data 分析流程圖 27.

(39) 28.

(40) 第四章. 企業巨量資料分析平台建置實作. 4.1 平台環境架設 實作中將會依規劃的模型安裝 Hadoop 與其相關元件 HBase、Zookeeper、Pig、 Splunk。由於 Hadoop 及其相關元件都是開放源始碼,有點類似 Linux ,在安裝時 需要注意每個版本的相容性,否則將無法正常運作,圖十四是此次環境 1+2 Node 的示意圖。在此次需要架設起一個 Hadoop Ecosystem 來分析巨量資料,然後元件 之間版本的相容性是一個重點,但此次研究重點在於整合 Hadoop 元件來建立一個 巨量資料分析平台框架,並不著重於 Hadoop 安裝設定步驟,故環境的架設就參考 Apache 的另一個專案 Bigtop[16]。Apache Bigtop 是為了解決 Hadoop 各元件版本相 容性而誔生的一個專案,其目的是就對所有 Hadoop Ecosystem 的子專案進行封裝、 部署測試。此次的測試平台將以 Bigtop 部署,下面將對部署軟硬體需求做簡略介 紹。. 圖 十四 平台部署架構(1+n)示意圖 . 前置作業與軟硬體準備 1. 此次模擬架構將使用 1+2 為基礎 2. 使用 Centos 6.3 64bit 作業系統 29.

(41) 3. Oracle JDK/JRE 6 http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archivedownloads-javase6-419409.html#jre-6u37-oth-JPR 4. Bigtop 0.5.0 Download. (https://cwiki.apache.org/BIGTOP/). 5. Splunk 5 Download . 安裝軟體步驟 1. 依序安裝三台 Centos 64bit 安裝(以預設基本 Server 套件) 2. 使用 rpm –ivh. jdk-6u37-linux-x64-rpm.bin 安裝 Oracle JDK 6. 3. 使用 rpm -ivh jre-6u37-linux-x64-rpm.bin 安裝 Oracle JRE 6 4. wget -O /etc/yum.repos.d/bigtop.repo http://bigtop01.cloudera.org:8080/view/Releases/job/Bigtop-0.5.0/label=[centos5 |centos6|fedora17]/lastSuccessfulBuild/artifact/output/bigtop.repo 確 認 Bigtop 可經由 yum 安裝 5. sudo yum install hadoop\* hbase\* pig 安裝 Hadoop 及相關元件 6. 使用 rpm –ivh splunk-5.0.1-143156-linux-2.6-x86_64.rpm 安裝 Splunk . 執行測試安裝環境  Running Hadoop Hadoop 安裝後需針對環境做基本設定與 HDFS 檔案系統格式化等步驟才能 順利運行,依下述步驟設定環境與啟用 Hadoop 服務並格式化 HDFS。. 30.

(42) #設定環境變數 export JAVA_HOME=XXXX 啟動服務本 sudo /etc/init.d/hadoop-hdfs-namenode init #啟動所有 node hadoop 相關服務 for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i start ; done #針對各相關服務建立 HDFS 目錄 sudo -u hdfs hadoop fs -mkdir /user/$USER sudo -u hdfs hadoop fs -chown $USER:$USER /user/$USER sudo -u hdfs hadoop fs -mkdir /tmp sudo -u hdfs hadoop fs -chmod -R 1777 /tmp sudo -u hdfs hadoop fs -mkdir /var/log/hadoop-yarn sudo -u hdfs hadoop fs -chown yarn:mapred /var/log/hadoop-yarn sudo -u hdfs hadoop fs -mkdir /user/history sudo -u hdfs hadoop fs -chown mapred:mapred /user/history sudo -u hdfs hadoop fs -chmod 770 /user/history sudo -u hdfs hadoop fs -mkdir /tmp/hadoop-yarn/staging sudo -u hdfs hadoop fs -chmod -R 1777 /tmp/hadoop-yarn/staging o -u hdfs hadoop fs -mkdir /tmp/hadoop-yarn/staging/history/done_intermediate sudo -u hdfs hadoop fs -chmod -R 1777 /tmp/hadoop-yarn/staging/history/done_intermediate sudo -u hdfs hadoop fs -chown -R mapred:mapred /tmp/hadoop-yarn/staging #啟動 YARN 服務 sudo service hadoop-yarn-resourcemanager start sudo service hadoop-yarn-nodemanager start #使用 hadoop 指令測試 HDFS hadoop fs -lsr /.  Running Pig 執行 pig 指令以驗證是否安裝並可正常執行,參考如下的指令,當 pig 被正 確執行進入到 shell mode 出現 grunt>,接下來可以 load 一個文字檔案並在 螢幕輸出以驗證 pig 模組。. 31.

(43) #pig grunt>A = load '/pigdata/PIGTESTA.txt' using PigStorage('\t'); grunt>dump A.  Running Hbase 執行 Hbase shell 進入 Hbase shell mode,執行 create 指令建立一個 t2 Table 並列出建立結果,以測試 Hbase 是否可以正常運作,參考下述步驟 hbase shell hbase(main):001:0> create 't2','f1','f2','f3' hSLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/hbase/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLogger Binder.class] SLF4J: Found binding in [jar:file:/opt/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.6.1.jar!/org /slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. No encryption was performed by peer. No encryption was performed by peer. 0 row(s) in 1.9480 seconds hbase(main):002:0> list TABLE t2 2 row(s) in 0.0220 seconds hbase(main):003:0>.  Running Splunk 安裝好後使用內建指令 splunk start 來啟動 splunk 服務,如下所示無出現錯 誤訊息即是可正常運作。. 32.

(44) [root@Centos63 ~]# /opt/splunk/bin/splunk start Splunk> Finding your faults, just like mom.Checking prerequisites... Checking http port [8000]: open Checking mgmt port [8089]: open Checking configuration... Done. Checking indexes... Validated databases: _audit _blocksignature _internal _thefishbu cket dbcare history main os summary Done Checking filesystem compatibility... Done Checking conf files for typos... Done All preliminary checks passed. Starting splunk server daemon (splunkd)... Done [. OK. ]. [ OK ] Starting splunkweb.... Done. If you get stuck, we're here to help. Look for answers here: http://docs.splunk.com The Splunk web interface is at http://Centos63:8000 Splunk 起動後預設是使用 8000 Port 當做 web 登入介面,所以可以使用流灠 器以 http://server ip:8000 登入確認請參考圖十五。. 圖 十五 Splunk 登入畫面 33.

(45) 4.2 資料分析樣本 企業資訊化後會因不同的系統產生大量的 Log 資料,此次將企業最常使用的 設備防火牆所產生的 Log 做為研究樣本資料。目前現今的防火牆有不同廠商推出的 不同版本,通常廠商會開會一個只對自家產品支援的防火牆分析系統,在此研究將 會不限格式不限廠都可經由規劃的平台來做分析產出。圖十六是本次使用防火牆 Check Point 的格式,而圖十七是匯出後的 CSV 格式。. 圖 十六 防火牆產出的 LOG 使用客制的 Script 定期將匯出的 CSV Log 傳送至 Hadoop 分析平台,再經由規 劃之資料輸入分析流程來自動完成整個分析。在防火牆 Log 中有許多不同欄位的資 料可供分析,但此次設定以 time、src ip、dst ip、service、action 幾個常見的欄位值 來做報表產出的研究目標。. 圖 十七 CSV 格式的 LOG 樣本 34.

(46) 4.3 Log 資料收集方式 各種應用系統產出之 Log 資料常有不同的方式,常見的有 File、syslog、shell script 讀取等等,在資料到 Hadoop 之前最重要的是如何收集各應用系統產出之 Log, 雖然這個收集過程跟 Hadoop 無關,但卻是在整個系統整合中扮演著一個關鍵點, 沒有一個良好便利的收集機制,空有強大運算能力也無法順利產出想要的結果。 研究規劃過程了解到各應用程式其 Log 產出與讀取方式後,我們規劃如圖十八 的輸入架構以符合大多數類型的應用程式 Log 讀取方式,在實作中我們採用在 Hadoop Namenode 上架設 syslog、Ftp 二個服務的方式來提供外部應用系統將 Log 由此二個方式傳送到 Local File system,再用批次方式定期輸入到 HDFS File system 中。. 圖 十八 Log 收集規劃架構. 4.4 資料分析 Pig Latin 方式 當資料 Input 到 HDFS 後仍和原本資料相同,只是分散放在 Hadoop 群集的不 同 datanode,尚未經過 MapReduce 的處理,由於 MapReduce 函數的撰寫複雜,故 選用 Pig 來做為簡化 MapReduce 編寫的工具,Pig 使用高階易懂的語法來讓使用者 35.

(47) 得以快速完成所需操作,在此研究的架構下,藉由 Pig 針對 Log 資料篩選並簡化是 重要的一個環節。而選用 Pig 的原因是在收納不同格式的應用程式 Log 時,必需 分割資料取出製作報表所需之欄位,而將此作業置於資料 MapReduce 階段而非於 Hbase,在於減少不必要的資料重覆儲存。 在論文以防火牆 Log 作為樣本分析,圖十九是一次將 Log 讀取並存入到 Hbase 的 Pig 語法,針對語法說明如下: 1.. 1-6 列-從 HDFS 讀取 fw.log 並以空白分格定義欄位. 2.. 7-9 列-對所有資料捉取報表需要的欄位寫入到變數中. 3.. 11-12 列-設定表格為 fwlog 把資料寫入到 Hbase. 圖 十九 Pig 語法. 4.5 資料處理 Hbase 方式 Hbase 有許多資料庫特性的功能,但在本次研究應用中是扮演著存儲資料的角 色,視報表需求條件由 Pig 語法執行篩選出所需欄位資料並做適當的 MapReduce 減化資料後,轉存至 Hbase 以供 Splunk 依條件查詢做出圖形化報表。. 4.6 資料報表圖形化 (SPLUNK) 在平台規劃整合過程中,如何讓 Hadoop 原本只有表列式的資料呈現出圖表化 的報表是一較複雜的整合過程,目前尚未有 Hadoop 開發專案專注於資料呈現部份, 有鑑於此才選用商業化的 Splunk 來做整合的圖表呈現部份,也因 Splunk 目前尚不 支援 Hadoop,故需客制開發一些程式整合兩者,讓 Hadoop Hbase 與 Splunk 可以 互相溝通讀取資料,並利用 Splunk 功能快速產出所需要的報表。 36.

(48) 在論文研究中為達成讓 Hadoop Hbase 能夠將資料傳遞給 Splunk 的功能,因此 特別編寫了二支程式來達成此需求。下面會針對開發之程式、Splunk 介面、Splunk 圖形化報表做說明。 客制 Splunk 讀取 Hbase 程式是以 python 為開發語言,因 Splunk 是以 Python 開發出來的軟體且支援客制指令的功能,內建對 Python 支援度最高也提供相對應 的函數來使用,客制指令程式主要功能是讓使用者在 Splunk 在介面讀出 Hbase 資 料並傳回 Splunk 來做出需要圖表,程式碼請參考圖二十,運作概念與程序說明如 下: 1. 1-5 列- 指定使用 Splunk 相關函數定義 2. 7-20 列- 處理讀取之資料轉換成 Hbase 所需之參數 3. 21 列- 傳入所需之參數呼叫客制 Hbase 程式將結果傳回指定之變數 4. 22-29 列-將讀取 Hbase 所傳回資料經 Splunk 函數傳入 Splunk 直到最 後一筆. 圖 二十 Splunk 讀取 Hbase 程式碼 37.

(49) 讀取 Hbase 的程式是以 Java 開發,選用 Java 是因 Hadoop 相關專案都以 Java 為開發基礎,對於 Java 支援度也高,客制讀取 Hbase 資料函式的主要功能是提供 Splunk 一個資料讀取呼叫串接,依需求填入參數。在讀取 Hbase 時如果每次都將全 部資料傳回再處理將造成重覆運算問題,故未來可依需求開發更多函數可依條件做 查詢結果傳回,Splunk 只處理傳回之資料即可。目前開發的函數只要傳入 Hbase Table name 與資料筆數即可傳回指定之數量資料,程式碼請見圖二十一。運作概念 與程序說明如下: 1. 119 列- 指定讀取 Hbase Table name 2. 121 列- 將 Table 內資料讀出給變數 3. 122-138 列- 將變數內的資料使用迴圈變成列 4. 142 列- 將資料傳回. 圖 二十一 客制 Hbase 讀取程式碼 當客制程式與資料都依規劃程序完成後,就是產出所需報表之 Splunk 操作, Splunk 是一套強大的商業化系統,目前有每日 500MB 限制的免費版本,藉由呼叫 函數方式讀取 Hbase 資料傳入 Splunk 記憶體,再由 Slunk 產出圖形化的報表使用, 38.

(50) 圖二十二是 Splunk 的基本操作畫面,紅框是指令輸入處,”etuhq”是客制的 Splunk 指令以讀取 Hbase 資料,Splunk 以”|”(pipeline)來做為資料處理管道,由多個 pipeline 再搭配 Splunk 指令即可做出你想要圖形化報表。. 圖 二十二 Splunk 基本操作畫面 最後的結果將會以圖形化的 Splunk 圖表呈現,Splunk 有豐富的圖表格式,舉 例圖二十三是圓餅圖、圖二十四是時間趨勢圖,在論文研究整合的架構下讓使用者 可依此方式快速的將巨量的資料捉取想要的欄位分析後產出豐富的圖表。. 圖 二十三 Splunk 圓餅圖 39.

(51) 圖 二十四 Splunk 時間趨勢圖. 40.

(52) 第五章. 結論. 在雲端議題愈來愈火熱的情況下,可預見的雲端運算的發展定會更成熟,目前 己有許多的廠商也開始投入以 Hadoop 平台為基礎的開發與應用,在此次學習研究 中,發現了許多大廠 IBM、DELL 也都發表了相關的解決方案 在研究 Hadoop 過程中也期望能借由了解各個元件運作原理,深入理解這個元 件功能屬性,找出符合研究目標的元件,整合成一個解決方案的系統,在整合中會 遇到需要相互溝通或資料傳遞的問題,有些是非預設功能所能提供的,但目前元件 都支援 API 方式可以開發自定的程式來達到目標,此次也編寫一些整合相關的程式, 來達成研究目標發展出一個對於大量 Log 分析的應用平台,也讓自己由此研究中對 整體雲端議題與 Hadoop Ecosystem 相關元件功能更熟悉了解,打開進入 Hadoop 領 域的一把鑰匙。. 5.1 研究貢獻 在傳統的 Log 分析都是使用關聯式資料庫方式如 Oracle、Mysql 等等,在使用 資料庫來處理資料時,需針對各種 Log 格式定義欄位,建立資料庫 Table,再設定 資料關聯分析,再開發客制的程式來讀取資料運算後才能產出報表,對於這樣的客 制與長時間開發所需的金錢成本常常是企業評估是否建置的主要因素,也只有對於 有重大價值的系統才會導入開發,隨著資訊化的腳步與上網應用的需求不斷成長下, 常需要處理應用程式產生的巨量 Log 資料,而傳統開發客制程式加上資料庫的處理 方式將無法滿足日益增長的資料量與時效性,比如商業購物網站即時的流灠推薦系 統,使用者流灠過的產品網站系統即時將相關的產品推薦在下方,供使用者點選, 提供銷售增加的效益。 Google 當初也因應巨量資料的分析需求,而發展出相關技術並發表論文, Hadoop 也依此實作發展至今己慢慢趨於成熟也有愈來愈多的應用產生。但目前都 需自行開發整合,也因 Hadoop 各個子專案版本與相容性導致不容易整合且元件之 間的溝通應用都需對元件有一定熟悉才能運用得當,故目前使用 Hadoop Ecosystem 的門檻讓很多想導入應用的企業卻步。 41.

(53) 此次研究是因看到 Hadoop 應用的發展趨勢,與常接觸的企業對於大量的資料 分析需求,但不是常苦無適合的工具而需要客制開發,不然就是需要昂貴套裝軟體。 此次以企業最常見的應用系統防火牆 Log 為實作目標,從資料輸入到 Hadoop Ecosystem 經過處理輸出成圖形報表,建構一個巨量 Log 分析流程,簡化企業在建 置導入時的門檻。 Log 分析平台的模型建立,提供了在分析巨量資料時的一個解決方案,此研究 提供了下列幾點的效益: . 簡化 Hadoop 系統建置. . 解決巨量資料分析不易與成本昂貴問題. . 減少巨量資料分析需耗費長時間的問題. . 視覺式的圖形化報表. 5.2 未來研究方向 此次在整個研究學習過程最大的收獲是對 Hadoop Ecosystem 各子專案的功能 與應用都有一定的深入的了解,在實作過程訂定出以企業常見的 Log 來做一分析平 台的建立,也從複雜的操作 Hadoop 流程中建立起一標準的資料處理流程,但目前 的整合只限於各元件之間的 API 互相傳遞資料的整合,對一般使用者仍需學習架設 Hadoop 與編寫一定的 Pig 語言來對資料做處理,參考目前 Hadoop 應用可針對幾 點做為未來研究方向: . Hadoop 管理介面整合 目前 Hadoop 各子專案的管理與設定都是需要借由變更設定檔案來完成, 各個子專案元件都有自己的管理方式與介面,有些專案可藉由 WEB 介面來查 詢,有些需要下指令來查看目前運作狀態。為了讓使用者不需對每個 Hadoop 子專案都要深入了解到設定檔的參數值與簡化整個系統的設定,可以開發一個 42.

(54) WEB 介面系統整個各元件的設定與狀態查詢,完善簡易的操作介面是一套系 統是否能快速推廣的關鍵之一。 . Splunk 介面整合 Pig shell 指令 在資料輸入至報表產出呈現過程中,此次實作中仍需切換到 Pig 模式對原 始 Log 做資料 MapReduce 後再由 Splunk 下資料查詢,如果能再針對 Splunk 整合 Pig 寫出一個 Splunk 客制指令,將 Pig 語法直接與 Pig Shell 結合,可大大 簡化使用者在不同介面中切換與操作,完成整合後整個介面將單一操作環境, 減少操作此系統的複雜度,增加使用實用性與完整性。. . Log 收集機制整合 Hadoop 的強化 目前使用 crontable 方式定期的將 Log 輸入與搬移來達到批次資料處理的 運作,對於需要即時的資料分析應用時,此種方式並不能符合需求,對於大量 即時產出的資料如何有效且即時的能進到 Hadoop 並加以處理,也是研究中規 劃資料處理模型時遇到值得思考的問題。. 43.

(55) 44.

(56) 參考書目 [1] http://www.idc.com/getdoc.jsp?containerId=234294 [2] http://en.wikipedia.org/wiki/Cloud_computing [3] http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf [4] http://upload.wikimedia.org/wikipedia/commons/3/3c/Cloud_computing_layers.png [5] http://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Cloud_computing_ty pes.svg/395px-Cloud_computing_types.svg.png [6] http://www.moneydj.com/kmdj/wiki/wikiviewer.aspx?keyid=b2a16b54-77ee-4a1d8feb-a3d0366e55c8#ixzz2B2h351NH [7] http://en.wikipedia.org/wiki/Big_data [8] http://hadoop.apache.org/ [9] White, Tom ,”Hadoop: The Definitive Guide”, O'Reilly Media,10 May 2012 [10] http://static.googleusercontent.com/external_content/untrusted_dlcp/research.googl e.com/zh-TW//archive/mapreduce-osdi04.pdf [11] http://hadoop.apache.org/core/docs/r0.16.4/hdfs_design.html [12] http://hbase.apache.org/book.html#datamodel [13] http://www.larsgeorge.com/2009/10/hbase-architecture-101-storage.html [14] http://www.hadoop.tw/hadoop/2010/04/ [15] http://www.splunk.com [16] http://bigtop.apache.org/. 45.

(57)

References

Related documents

To overcome the problem of data handling and processing, a novel approach of Hadoop framework can be processed for large scale sensory data that can also be said as

Hadoop++ is less intrusive: co-placed data (such as indexes and co-partitions for joins) are stored as “Trojans” within HDFS files and splits; no changes to Hadoop

This gives a clear result of how the huge amounts of data can be stored in Hadoop HDFS and processed using HIVE with the help of MapReduce and

By using this programming model, Performance of the system is increased, highly fault tolerant and scalable(HDFS), [4] The Hadoop Distributed File System is a

heterogeneity of data, tools like Hive, Pig and Mahout are used which are parts of Hadoop and

HDFS, which stands for Hadoop Distributed File System[3], is a distributed file system which has been designed to handle large data sets to run on low cost hardware

While Hadoop provides the ability to store data on HDFS, there are many programming frameworks available that allow us to perform distributed and parallel processing

Data manipulation APIs exposed through REST layer Existing Business Applications HBASE HADOOP HDFS Current Oracle Schema Insert Accepted Data MR Jobs Survey REST Drools