2017年7月20日 星期四

Hadoop 不是萬能,破除七大迷思讓你做好 Big Data/Cloud Analysis

https://tw.twincl.com/programming/*662v
https://buzzorange.com/techorange/2013/06/04/7-myths-on-big-data-avoiding-bad-hadoop-and-cloud-analytics-decisions/
Hadoop 是 Apache 軟體基金會(Apache Software Foundation)因應 Cloud Computing 與 Big Data 發展所開發出來的技術,Hadoop 使用 Java 撰寫,並免費開放原始碼,在此背景之下,就足以讓 Hadoop 在資訊技術發展史上占有一席之地。

像 Yahoo 就利用 Hadoop Framework 的技術,建立網頁索引資料庫的計算,同時使用 1 萬個 Linux 平台的處理器核心,處理 1 兆個網頁連結,從 4PB 的資料,運算得出 300TB 的索引數據。

然而,盛名之下必有所累 -- 關於 Hadoop 的應用迷思也隨之而起。而這些迷思可能會導致企業的資訊部門決策者一廂情願/過於樂觀地制定相關決策。

資料與資料的使用量正以驚人的速度持續增長中,IDC(The International Data Corporation)在 2013 年 1 月所釋出的分析報告就指出 -- 今年在資料儲存部份的增長速度將達到 53.4%,而 AT&T 也指出 -- 無線資料的流量在過去的 5 年內增加了 200 倍。

在 IDC 針對 2012-2016 年亞太區(不含日本)Big Data 市場所做的分析與預測報告:「APEJ Big Data Technology and Services 2012-2016 Forecast and Analysis」指出,亞太區的 Big Data 市場規模預估將從 2012 年的 3 億美金成長到 2016 年的 17.6 億美元,年複合成長率達 47%;而台灣的市場規模則從 2012 年的 1.13 千萬美元成長到 2016 年的 4.61 千萬美元,年複合成長率亦達到 40%。

所以,如果你也重視自己所擁有的對外互動管道的話,你會發現來自網路的內容、電子郵件、App 訊息、社交訊息等數量正顯著地增加中,這也是為什麼 從 McKinsey 到 Facebook 到 Walmart 等企業都將 Big Data 的應用視為營運的重點之一。

但是,Big Data 會不會如同 90 年代的網路泡沫化與 2000 年的 Web 2.0 泡沫化一樣,讓一些決策者做出斲傷企業的假設與決策?

Hadoop 目前無疑是企業們用來因應 Big Data 需求的主要投資項目之一,像 Facebook、Yahoo 這些大企業都宣稱自己在應用 Hadoop 來處理 Big Data 分析上有相當良好的成效,這將使得之後面臨 Big Data 問題的企業會起而效尤。

然而,這會不會造成 Functional Fixedness(是指有時候人們會受制於過去的經驗,自覺/不自覺地認定某個事物只具備某種特定功能用途,而習以為常地只朝特定方向去思索的認知結構)的認知偏差呢?

接著,就讓我們跟隨在雲端服務領域已有多年經驗的 Adam Bloom,帶領我們從幾個不同面向來看 Hadoop / Big Data 的應用。

Big Data 僅僅只是數據量爆增( Volume)的問題而已?
到目前為止,對於 Big Data 尚未有統一的定義,因此,除了數據資料量的增加之外,你還會經常聽到一些科技領導廠商與研究機構所提出的幾個關於 Big Data 的特性,像是像是 Variety(異質資料多樣性,指的是結構性、半結構性與非結構性資料,包含文字、影音、網頁、串流等)、Velocity(即時性)和 Value(價值)等。

Big Data 的特性並不只是數量上的成長 —— 事實上,它正朝向用更好的方法,來達成在最佳時間內分析整合來自企業內部分散各地的結構性(Structured)/非結構性(Unstructured sources)資料,以探勘出隱藏的價值,提供給企業決策者做決策的參考依據。

處理結構化資料的 SQL 無法在 Hadoop 上使用?
當 Facebook、Twitter、Yahoo 等科技龍頭企業,都選擇 Hadoop 來處理自家內部大量資料的分析的同時,表示他們瞭解 Hadoop 主要是用來處理非結構化資料,因此,HDFS 和 MapReduce 在處理結構化的資料上就必須選擇像 Hive、Pig 與 Sqoop 等為工具。

由於 SQL 發展的歷史已經超過 25 年了,這表示現在的許多資料是透過 SQL 來做管理的,Hadoop 的掘起雖然是時勢所驅,但,這並不表示我們已經不再需要 SQL,更何況這兩者的功能是互補的,因此,有些企業開始致力於 Hadoop 與 SQL 的相容性開發,以使其能發揮綜效。

例如,EMC Greenplum 所發佈的 Pivotal HD 的元件 HAWQ 就是一個很棒的例子 ── 它是一個與 SQL 相容的平行查詢引擎,速度比 Hadoop 查詢引擎要快上 10 – 100 倍之多,而且能夠處理 PB 規模的資料量。

Hadoop 將取代大型主機(Mainframe),成為唯一的 IT 資訊平台?
實務中,企業裡的 IT 產品組合中,有很多是需要長期投資的項目,像用來做伺服器的大型主機就應該跟隨著企業系統(如,ERP、CRM、SCM 等)的演進而做適當的調整。

資訊決策者若不想汰換大型主機,或還無法就現有的資訊架構做調整,就必須賦予它新的定位與存在的價值。

像我們公司有不少客戶在大型主機的運作上都遇到了速度、規模與成本的問題,但還是有方法可以解決這些問題的,例如,VMware 的雲端計算應用平台 vFabric SQLFire,就是利用虛擬化技術來處理大量資料,並藉由分散式快取技術節省磁碟存取次數,進而達到降低延遲時間與分散系統負荷的目的。

虛擬化技術對效能提升有幫助嗎?
Hadoop 最初的設計只是在實體伺服器上運行,然而隨著行動商務與網路商機的發展,為了能更方便分享及取用資料,企業紛紛把資料從大型主機轉移到 Web 服務供應商的資料中心(Data Center);而服務供應商為了提供更穩定與更迅速的服務,也需要一個新的服務架構,把運算資源與儲存空間做更有效率的利用。

隨著雲端服務的興起,許多企業開始希望 Hadoop 能把上述的需求整合在一起,以延伸傳統資料中心的功能。而基於成本與效能的考量,虛擬化技術也開始受到重視。

為什麼企業需要虛擬化技術?

我們首先考慮到的就是:彈性。你可以想像,如果我們能夠動態地調整計算資源,就能夠將大量且複雜的計算程序自動拆解成多個較小的子程序,再由多部伺服器所組成的叢集進行分散和平行計算分析,將處理結果回傳給雲端使用者。

也就是虛擬化技術能讓電腦分工合作,讓系統的運作與使用者利用資訊的方式更有效率。

資訊架構也可以透過租賃方式取得?
2012 年, 被 VMware(虛擬化技術應用大廠之一,同時也是雲端計算發展的領導企業之一)收購的 Cetas,是一家提供軟體即服務(Software as a Service, SaaS)基礎架構的雲端服務廠商。

Cetas 所提供的雲端服務,讓他的企業用戶不需要花大量的時間與費用來建置專屬的資料中心(Data Center),透過其所提供的服務就可以在雲端上運行 Hadoop、SQL 與資料的即時分析(Real-Time Analytics),取得自己所需要的設備與技術服務,而不必再自己從無到有評估軟體授權、硬體與軟體建置/安裝/升級等。

對於建立公有雲(Public Cloud,通常與「租賃」有關,也就是建立雲端資料中心後,不只是提供自己使用,還可以把多餘的運算資源分租給別人,也就是透過收取費用把雲端資料中心的服務與資源「分享」給其他對象)的企業來說,使用 Java 的開發人員,或許可以從 VMware 針對 Apache Hadoop 所推出的 Spring Data 產品,以及從 GitHub 所提供的線上版本控制服務所提供的免費/付費資源中獲益。

虛擬化技術只會提高企業的成本?
Hadoop 通常在商用伺服器上運行,因此有人會認為新增虛擬層(Virtualization Layer)除了會帶來額外的成本支出之外,能不能獲得對等的價值回饋還是一個未知數。然而,這個觀點其實存在缺失 -- 實務中,資料和資料分析都是進行動態處理的,而動態處理的機制要做到好還要更好,所耗費的資源是非常可觀的。

如果你希望藉由 Hadoop 這個工具來平衡企業內部因應 Big Data 所帶來的問題,舉凡資訊架構的調整,增進系統間互動的效率,資料探勘所帶來的創新價值等,你就必須瞭解企業內部的資料是存放在不同的位置與系統中的,以及為了進行分析這些分散的資料所必須花費的時間與速度等。

導入虛擬化的資訊基礎架構可以減少你不斷採購硬體所占用的土地面積,而且,它會讓企業的 CAPEX(Capital Expenditures,資本支出)和採購非虛擬的設備相差不多,但,透過虛擬化技術,卻能讓使用者享受到比傳統資料傳輸方式更為快速、簡單且更優惠的好處,進而降低企業的 OPEX(Operating Expense,運營成本)。

Hadoop 無法在 SAN(Storage Attachment Network)或 NAS(Network Attached Storage)架構中運行?
Hadoop 通常都在區域性的磁碟上運行,但中小型的叢集在共用的 SAN 環境裡,運行的效能也不錯,但這視叢集的成本和效能而有不同。

另外,高頻寬的網路,像 10 GB 的乙太網路、 FoE(Power over Ethernet,指透過網路線來獲取電力)、iSCS I(Internet SCSI,將傳統上只能用於本機傳輸的 SCSI 協定,可以透過 TCP/IP 網路承載,以達到資料高速傳輸的需求)等都有益於效能的提升。

備註:(1) SAN,是一種連接外接儲存設備和伺服器的架構,特點是,連接到伺服器的儲存設備,將被作業系統視為直接連接的設備;(2) NAS,是將儲存設備透過一台用來進行資料存取的檔案伺服器直接連到區域網路上,因此,企業內其他的伺服器就不須同時兼負資料存取的動作,藉以優化效能。

本文主要的目的在於,藉由以上所提及的幾項思考,能協助對 Big Data 應用有興趣你,用更客觀的角度來看待相關的問題。Hadoop 只是一個用來協助處理大量數據分析的工具之一,它並不是市場中唯一的選擇,你應該依據實際的需求與環境來採購適合企業的應用工具,所以,如果你面臨的是處理大量數據的時效性(Velocity)問題,那麼 GemFire 與 SQLFire 或許是最好的選擇。

而像 RabbitMQ 這類訊息導向(Message-Oriented)的中介軟體(Middleware),可以利用來在不同的程式語言、平台、與電腦之間交換訊息。

當然,如果你期望將企業的產品更快地推向市場,可能就意味著你需要一個提供 SaaS 基礎建設的雲端服務供應商,而 CETAS、Redis 更能滿足你的需求。

沒有留言:

張貼留言