李丹
摘 要:企業(yè)在大數(shù)據(jù)時代對數(shù)據(jù)分析有更高的要求。本文使用開源大數(shù)據(jù)生態(tài)系統(tǒng),構建了一個能夠滿足企業(yè)對數(shù)據(jù)的分析要求且整體造價不高的系統(tǒng)平臺。該平臺涵蓋從大數(shù)據(jù)采集、存儲、分析和利用等全部過程。
關鍵詞:大數(shù)據(jù);開源軟件;企業(yè)系統(tǒng)平臺
一、引言
企業(yè)的信息系統(tǒng),記錄和保存著企業(yè)已經(jīng)發(fā)生的業(yè)務信息。對這些數(shù)據(jù)進行分析,我們可以了解企業(yè)發(fā)生了什么,為什么會這樣,并可以對未來進行預測,據(jù)此采取一些干預性措施,實現(xiàn)企業(yè)遠期的戰(zhàn)略目標。大數(shù)據(jù)時代,不僅需要對企業(yè)信息系統(tǒng)中的數(shù)據(jù)進行分析,還需要公開收集或購買一些相關領域的數(shù)據(jù),進行更為全面的數(shù)據(jù)分析,才能把握住企業(yè)的未來發(fā)展方向。正因為數(shù)據(jù)分析對企業(yè)的商業(yè)發(fā)展舉足輕重,因此大數(shù)據(jù)分析平臺成為企業(yè)重點關注的基礎設施。
本文基于開源軟件,實現(xiàn)了一個企業(yè)大數(shù)據(jù)分析應用平臺。
二、企業(yè)大數(shù)據(jù)分析應用平臺的總體架構
基于開源軟件的企業(yè)大數(shù)據(jù)分析應用平臺,其總體架構如圖所示,一共分四層:數(shù)據(jù)源層、數(shù)據(jù)存儲層、大數(shù)據(jù)分析處理層和大數(shù)據(jù)應用層。
數(shù)據(jù)源層主要負責收集企業(yè)大數(shù)據(jù)分析所需要的基礎數(shù)據(jù)。企業(yè)業(yè)務系統(tǒng)數(shù)據(jù),從時間的角度,可以分為實時性要求不高的批處理數(shù)據(jù)和對實時性要求比較高的流式數(shù)據(jù)。在大數(shù)據(jù)時代,除了要分析企業(yè)本身的經(jīng)營數(shù)據(jù),還需要對與本企業(yè)所屬行業(yè)和相關行業(yè)的公開數(shù)據(jù)進行分析。因而在這一層需要通過網(wǎng)絡爬蟲,在互聯(lián)網(wǎng)上公開收集的數(shù)據(jù)。有時候無法通過互聯(lián)網(wǎng)公開獲取本行業(yè)及相關行業(yè)的數(shù)據(jù),還需要購買一些專業(yè)的數(shù)據(jù),來滿足企業(yè)在數(shù)據(jù)方面的需要。
數(shù)據(jù)存儲層對來自不同數(shù)據(jù)源的數(shù)據(jù),進行安全可靠地存儲。在本層,我們基于數(shù)據(jù)湖的概念進行設計實現(xiàn)。傳統(tǒng)上的數(shù)據(jù)存儲是基于寫模式的,也就是說,在存儲數(shù)據(jù)的時候,只存儲預定模式的數(shù)據(jù),不滿足模式的數(shù)據(jù)在存儲時被丟棄,無法完全存儲能夠采集到的全部數(shù)據(jù)。數(shù)據(jù)湖存儲技術是基于讀模式的,在存儲數(shù)據(jù)時,所有原始采集獲得的數(shù)據(jù),原封不動地保存在存儲系統(tǒng)中,當需要對這些數(shù)據(jù)進行分析時,才會根據(jù)分析的需要,從數(shù)據(jù)湖中抽取所需要的數(shù)據(jù)。數(shù)據(jù)湖存儲技術相對于傳統(tǒng)存儲技術,好處顯而易見?;旧?,采用數(shù)據(jù)湖存儲技術,沒有原始數(shù)據(jù)的丟棄,可以滿足企業(yè)數(shù)據(jù)分析在未來的各種需要。采用數(shù)據(jù)湖技術實現(xiàn)企業(yè)的大數(shù)據(jù)存儲,要求系統(tǒng)的存儲是可以橫向擴展的,當采集到的數(shù)據(jù)增加時,可以在系統(tǒng)中添加更多的存儲計算機來滿足要求,從成本上讓企業(yè)可以負擔得起,而不需要像昂貴的垂直擴展技術那樣,更換整個存儲系統(tǒng)來滿足數(shù)據(jù)存儲的要求。
在大數(shù)據(jù)分析處理層,我們采用SQL技術來對數(shù)據(jù)湖中的數(shù)據(jù)進行交互式大數(shù)據(jù)分析;對實時性要求高的分析,采用流式數(shù)據(jù)分析技術。根據(jù)需要可以使用現(xiàn)成的數(shù)據(jù)挖掘和機器學習算法庫,來對企業(yè)保存在數(shù)據(jù)湖中的數(shù)據(jù)進行分析。
大數(shù)據(jù)應用層是企業(yè)大數(shù)據(jù)的價值體現(xiàn)。在這一層,企業(yè)可以獲得各種經(jīng)營所需要的報表以及各種決策支持建議。采用數(shù)據(jù)可視化技術,可以更為直觀地讓企業(yè)人員使用大數(shù)據(jù)分析的結論,實現(xiàn)企業(yè)的經(jīng)營目標。
三、企業(yè)大數(shù)據(jù)分析應用平臺的開源技術實現(xiàn)
1.數(shù)據(jù)存儲層的實現(xiàn)
基于數(shù)據(jù)湖概念的大數(shù)據(jù)存儲層的技術實現(xiàn),可以采用開源大數(shù)據(jù)生態(tài)系統(tǒng)Hadoop來構建存儲集群。Hadoop集群系統(tǒng)采用普通的PC服務器來集成,因此具有成本低廉的特點,企業(yè)在經(jīng)濟上完全可以負擔得起。Hadoop集群從設計之初就考慮了集群中單臺服務器容易發(fā)生故障的問題,也就是說,在Hadoop集群中發(fā)生服務器故障是家常便飯,Hadoop集群具有高可用性的特點,可以滿足企業(yè)的生產(chǎn)要求。
在數(shù)據(jù)存儲層,我們主要使用Hadoop文件系統(tǒng)HDFS和Hadoop數(shù)據(jù)庫Hbase這兩個組件來實現(xiàn)。
HDFS是以Google公司的GFS為原型設計出來的一個開源分布式文件系統(tǒng)。HDFS文件系統(tǒng)的塊大小可以是64MB,128MB或者256MB,因此特別適合用來存儲大數(shù)據(jù)文件,不適合用來存儲小文件。對HDFS上的文件主要是順序讀,不支持隨機讀寫,雖然可以支持在文件的尾部進行追加寫。
由于HDFS文件系統(tǒng)不是完整意義上的POSIX文件系統(tǒng),不支持文件的隨機讀寫。因此在數(shù)據(jù)存儲層的實現(xiàn)上,還采用HBase來彌補這方面的缺陷。雖然HBase也是存儲在HDFS之上,但是因為采用了日志結構合并樹(Log Structure Merge-tree),因而HBase支持對數(shù)據(jù)按行鍵隨機讀寫。
來自數(shù)據(jù)源層的實時數(shù)據(jù),通過開源Kafka系統(tǒng)存儲在企業(yè)數(shù)據(jù)湖之中,并由大數(shù)據(jù)分析層進行實時分析。對于批處理用到的數(shù)據(jù),可以使用開源ETL工具Sqoop或者Kettle,將數(shù)據(jù)從業(yè)務系統(tǒng)抽取到數(shù)據(jù)湖中。爬蟲系統(tǒng),可以采用開源的爬蟲引擎Nutch和搜索引擎ElasticSearch,將從互聯(lián)網(wǎng)上爬到的相關數(shù)據(jù)保存在數(shù)據(jù)湖中。購買的數(shù)據(jù)可以直接保存在數(shù)據(jù)湖中。
2.大數(shù)據(jù)分析處理層的實現(xiàn)
大數(shù)據(jù)分析層采用開源Spark數(shù)據(jù)分析平臺來實現(xiàn)。SQL是一種廣泛應用的交互式數(shù)據(jù)分析技術,對企業(yè)來說,能以較低的人力成本雇傭到掌握SQL語言的工作人員。很容易使用Spark SQL技術來對數(shù)據(jù)湖中的企業(yè)數(shù)據(jù),進行交互式數(shù)據(jù)分析。企業(yè)的實時數(shù)據(jù)分析需求,對時間并沒有太嚴格的限制,采用Spark Streaming技術來實現(xiàn),完全能夠勝任。
Spark是一個統(tǒng)一的數(shù)據(jù)分析平臺,可以在Spark Streaming和SparkSQL分析中調(diào)用Spark Mlib進行數(shù)據(jù)挖掘和機器學習。
四、結束語
基于開源軟件Hadoop/Spark實現(xiàn)的企業(yè)大數(shù)據(jù)分析應用平臺,從技術上說基本是成熟的。這已經(jīng)從其在企業(yè)中被廣泛運用所證實。如果企業(yè)已經(jīng)組建的自己的私有云硬件平臺,那么前期的開發(fā)實驗平臺的硬件成本,基本可以忽略不計。后期數(shù)據(jù)分析應用平臺投入生產(chǎn),其硬件方面的投資也不會太高。采用本文提出的大數(shù)據(jù)分析應用平臺方案,其成本構成主要是人力資源方面的投入。對于企業(yè)來說,最大的挑戰(zhàn)在于需要一些懂業(yè)務的領域?qū)<液蛿?shù)據(jù)分析工程師合作,充分發(fā)掘和實現(xiàn)大數(shù)據(jù)對企業(yè)的價值。
參考文獻:
[1]Tomwhite著;王海,華東,劉喻,呂粵海譯.Hadoop權威指南第四版. 北京:清華大學出版社,2017.
[2]Alex Liu著;閆龍川,高德荃,李君婷譯.Apache Spark機器學習. 北京:機械工業(yè)出版社,2017.
[3]Venkat Ankam著;吳今朝譯.Spark與Hadoop大數(shù)據(jù)分析. 北京:機械工業(yè)出版社,2017.
[4]Mohammed Guller著;趙斌,馬景,陳冠誠譯.Spark大數(shù)據(jù)分析. 北京:機械工業(yè)出版社,2017.
[5]Mahmoud parsian著;蘇金國,楊健康譯.數(shù)據(jù)算法Hadoop/Spark大數(shù)據(jù)處理技巧.北京:中國電力出版社,2017.endprint