7招教你構建一套成功的大數(shù)據(jù)基礎設施
現(xiàn)如今,大數(shù)據(jù)是許多企業(yè)IT運營的重要組成部分。根據(jù)IDC預測,到2019年,大數(shù)據(jù)產(chǎn)值將達到1870億美元。作為分析的重要因素,大數(shù)據(jù)決定著機器和人類商業(yè)智能和決策的基礎。因此,無論從硬件還是軟件角度出發(fā),您面向大數(shù)據(jù)構建的基礎設施都會對所支持大數(shù)據(jù)系統(tǒng)的分析與操作帶來巨大影響。
大數(shù)據(jù)概念綜述
大數(shù)據(jù)概念早在1980年,著名未來學家阿爾文·托夫勒提出的概念。2009年美國互聯(lián)網(wǎng)數(shù)據(jù)中心證實大數(shù)據(jù)時代的來臨。隨著谷歌 MapReduce和GoogleFile System (GFS)的發(fā)布,大數(shù)據(jù)不再僅用來描述大量的數(shù)據(jù),還涵蓋了處理數(shù)據(jù)的速度。目前定義:大數(shù)據(jù)(big data),或稱巨量資料,指的是所涉及的資料量規(guī)模巨大到無法透過目前主流軟件工具在合理時間內(nèi)獲取、管理、處理、并整理為幫助企業(yè)經(jīng)營決策。
大數(shù)據(jù)目前分為四大塊:大數(shù)據(jù)技術、大數(shù)據(jù)工程、大數(shù)據(jù)科學和大數(shù)據(jù)應用。
下面的文章中,我們將對決定大數(shù)據(jù)基礎設施有效性的7大因素進行分析,有些因素的重要性是顯而易見的,而有些則是非常微妙的。希望可以為著手構建大數(shù)據(jù)項目的您帶去一些啟示。
1. 大數(shù)據(jù)不僅是Hadoop
在普遍認知中,大數(shù)據(jù)和Hadoop幾乎可以等同論之。但是事實上,大數(shù)據(jù)卻不僅僅是Hadoop這么簡單。Hadoop是一套文件系統(tǒng)(不是一個數(shù)據(jù)庫),負責將數(shù)據(jù)傳播至成百上千個處理節(jié)點中。
它被用于很多大數(shù)據(jù)應用之中,因為作為一個文件系統(tǒng),它能夠很好地處理非結構化數(shù)據(jù)——甚至包括一些看起來根本不算是數(shù)據(jù)的素材。但是Hadoop作為線下數(shù)據(jù)分析的利器并不適合當前大數(shù)據(jù)的需求。我們需要一種解決方案,一個包含了Hadoop又不限于Hadoop的方案,一個可以同時滿足線上數(shù)據(jù)分析與線下數(shù)據(jù)分析雙重功能的方案,一個可以同時滿足強大數(shù)據(jù)分析和運營需求的方案。
2. Hive與Impala將數(shù)據(jù)庫引入Hadoop
大數(shù)據(jù)世界中,還需要數(shù)據(jù)庫對應結構化數(shù)據(jù)部分。如果大家希望為Hadoop數(shù)據(jù)平臺加入一些秩序管理,那么Hive則是***選項。這是一款基礎性結構工具,允許大家在非SQL Hadoop當中執(zhí)行SQL類操作。Hive適合于長時間的批處理查詢分析。
如果大家的一部分數(shù)據(jù)能夠輕松旋轉在結構化數(shù)據(jù)庫當中,那么Impala則更為合適,Impala適合于實時交互式SQL查詢,還能夠直接利用您已經(jīng)開發(fā)出的Hive命令。Hadoop、Hive與Impala皆屬于Apache項目,因此其全部為開源成果——請隨意使用。
3. Spark用于處理大數(shù)據(jù)
截至目前,我們已經(jīng)探討了數(shù)據(jù)的存儲與整理。但是,我們該如何對數(shù)據(jù)進行實際操作呢?這時候我們就需要一套像Spark一樣的分析與處理引擎。Spark也是屬于Apache的一個項目,與其他大數(shù)據(jù)平臺不同的特點,主要如下:
1)輕量級快速處理:大數(shù)據(jù)處理中速度往往被置于***位,Spark允許傳統(tǒng)Hadoop集群中的應用程序在內(nèi)存中以100倍的速度運行,即使在磁盤上運行也能快10倍。
2)易于使用:Spark支持多語言,允許Java、Scala、Python及R(Spark 1.4版***支持),自帶80多個高等級操作符,允許在shell中進行交互式查詢。
3)支持復雜查詢:除了簡單的map及reduce操作之外,Spark還支持filter、foreach、reduceByKey、aggregate以及SQL查詢、流式查詢等復雜查詢。
4)實時的流處理:除了處理離線數(shù)據(jù),Spark還能支持實時流計算。
5)與已存Hadoop數(shù)據(jù)整合:Spark不僅可以獨立的運行,還可以讀取已有的任何Hadoop數(shù)據(jù)。它可以運行在任何Hadoop數(shù)據(jù)源上,比如HBase、HDFS等。
Spark亦可用于處理存儲在任意位置的各類數(shù)據(jù),因為豐富的庫選項使其擁有了極為廣泛的訪問能力。另外,由于其屬于開源項目,因此大家能夠隨意修改其核心內(nèi)容。
4. 在大數(shù)據(jù)基礎上執(zhí)行SQL操作
很多朋友可能非常熟悉SQL數(shù)據(jù)庫構建與SQL查詢編寫工作。這方面專業(yè)知識在大數(shù)據(jù)領域同樣適用。Presto是一套開源SQL查詢引擎,允許數(shù)據(jù)科學家運用SQL查詢來查詢數(shù)據(jù)庫,包括從Hive到專有商業(yè)數(shù)據(jù)庫等各類數(shù)據(jù)庫系統(tǒng)不限。像Facebook這類巨頭級企業(yè)都在利用其進行交互查詢,因此我們基本可以將Presto視為一套理想的大規(guī)模數(shù)據(jù)集交互式查詢工具。
5.在線存儲同樣需要接地平臺
大數(shù)據(jù)領域中有一部分任務,要求快速變更數(shù)據(jù)——有時需要定期添加數(shù)據(jù),有時需要對變更數(shù)據(jù)進行分析等。無論如何,如果大家的數(shù)據(jù)擁有幾乎對等的讀取與寫入頻度,那么應當同時在本地與在線端保留數(shù)據(jù)副本。如果預算允許的情況下,使用固態(tài)存儲無疑效果更好,因為這能夠大大提升數(shù)據(jù)處理速度。
6. 云存儲也是一個理想方式
在對大規(guī)模聚合數(shù)據(jù)庫進行分析時,云存儲將成為最為理想的存儲平臺。大家可以將數(shù)據(jù)聚合后傳輸至云端,運行分析,隨后移除實例。數(shù)據(jù)處理不會受到互聯(lián)網(wǎng)性能的影響。另外,如果大家將內(nèi)部實時分析系統(tǒng)與云端深度分析方案加以結合,則能夠***程度發(fā)揮大數(shù)據(jù)基礎設施的全部潛力。
7. 不要忘記可視化
分析大數(shù)據(jù)是一回事,將分析結果通過顯而易見的方式呈現(xiàn)給人們又是另外一回事。圖像將能很好的幫助人們客觀的理解分析結果,所以數(shù)據(jù)可視化正是實現(xiàn)這一效果的關鍵性工具。
幸運的是,目前市面上提供多種可視化處理方案,從JavaScript庫到商業(yè)可視化軟件包再到在線服務。大家可以選擇一部分并加以嘗試,同時了解用戶的反饋意見以判斷其效果。總而言之,可視化是實現(xiàn)大數(shù)據(jù)分析價值的***方式。
以上7點意見希望大家可以理解并運用到自身的大數(shù)據(jù)基礎設施組建過程中,期待來自您的反饋意見和建議。