關於從0到1搭建大數據平台,之前的一篇博文《如何從0到1搭建大數據平台》已經給大家介紹過了,接下來我們會分步講解搭建大數據平台的具體注意事項。
一、“大”數據
海量的數據
當你需要搭建大數據平台的時候一定是傳統的關系型數據庫無法滿足業務的存儲計算要求了,所以首先我們面臨的是海量的數據。
復雜的數據
復雜數據的概念和理想數據完全相反。所有數據集都有一定的復雜性,但有一些天生更難處理。通常這些復雜數據集沒有定義結構(沒有行列結構),經常變化,數據質量很差。比如更新的網頁日志,json數據,xml數據等。
高速的數據
高速數據通常被認為是實時的或是准實時的數據流。數據流本質上是在生成后就發給處理器的數據包,比如物聯網的穿戴設備,制造業的傳感器,車聯網的終端芯片等等。處理實時數據流有很多挑戰,包括在采集時不丟失數據、處理數據流中的重復記錄、數據如何實時寫入磁盤存儲、以及如何進行實時分析。
二、采集工具
日志采集
我們業務平台每天都會有大量用戶訪問,會產生大量的訪問日志數據,比如電商系統的瀏覽,加入購物車,下訂單,付款等一系列流程我們都可以通過埋點獲取到用戶的訪問路徑以及訪問時長這些數據;再比智能穿戴設備,實時都會采集我們的血壓、脈搏、心率等數據實時上報到雲端。通過分析這些日志信息,我們可以得到出很多業務價值。通過對這些日志信息進行日志采集、收集,然后進行數據分析,挖掘公司業務平台日志數據中的潛在價值。為公司決策和公司后台服務器平台性能評估提高可靠的數據保證。系統日志采集系統做的事情就是收集日志數據提供離線和在線的實時分析使用。目前常用的開源日志收集系統有Flume、Logstash、Filebeat。可以根據自己公司的技術棧儲備或者組件的優缺點選擇合適的日志采集系統,目前了解到的Flume使用的比較多。各個采集工具的對別如下:
具體組價的相關配置可以參考之前的文章《日志收集組件—Flume、Logstash、Filebeat對比》
數據庫抽取
企業一般都會會使用傳統的關系型數據庫MySQL或Oracle等來存儲業務系統數據。每時每刻產生的業務數據,以數據庫一行記錄的形式被直接寫入到數據庫中保存。
大數據分析一般是基於歷史海量數據,多維度分析,我們不能直接在原始的業務數據庫上直接操作,因為分析的一些復雜SQL查詢會明顯的影響業務數據庫的效率,導致業務系統不可用。所以我們通常通過數據庫采集系統直接與企業業務后台數據庫服務器結合,在業務不那么繁忙的凌晨,抽取我們想要的數據到分析數據庫或者到HDFS上,最后有大數據處理系統對這些數據進行清洗、組合進行數據分析。
常用數據庫抽取工具:
-
阿里開源軟件:DataX
DataX 是一個異構數據源離線同步工具,致力於實現包括關系型數據庫(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各種異構數據源之間穩定高效的數據同步功能。開源的DataX貌似只能單機部署。
-
Apache開源軟件:Sqoop
Sqoop(發音:skup)是一款開源的工具,主要用於在HADOOP(Hive)與傳統的數據庫(mysql、postgresql...)間進行數據的傳遞,可以將一個關系型數據庫(例如 : MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關系型數據庫中。可以集群化部署。
爬蟲爬取
有很多外部數據,比如天氣、IP地址等數據,我們通常會爬取相應的網站數據存儲。目前常用的爬蟲工具是Scrapy,它是一個爬蟲框架,提供給開發人員便利的爬蟲API接口。開發人員只需要關心爬蟲API接口的實現,不需要關心具體框架怎么爬取數據。Scrapy框架大大降低了開發人員開發速率,開發人員可以很快的完成一個爬蟲系統的開發。
三、數據存儲
HDFS
2003年,Google發布論文GFS,啟發Apache Nutch開發了HDFS。2004年,Google 又發布了論文《MapReduce: Simplified Data Processing on Large Clusters》,Doug Cutting等人實現計算框架MapReduce ,並與HDFS結合來更好的支持該框架。2006年項目從Butch搜索引擎中獨立出來,成為了現在的Hadoop。
GFS隱藏了底層的負載均衡,切片備份等細節,使復雜性透明化,並提供統一的文件系統接口。其成本低,容錯高,高吞吐,適合超大數據集應用場景。
-
HDFS原理:
橫向擴展,增加“數據節點”就能增加容量。 -
增加協調部門,“命名節點”維護元數據,負責文件系統的命名空間,控
-
外部訪問,將數據塊印射到數據節點。還會備份元數據從命名節點,它只與命名節點通信。
-
數據在多個數據節點備份。
通常關系型數據庫存儲的都是結構化的數據,我們抽取后會直接放到HDFS上作為離線分析的數據源。
HBase
在實際應用中,我們有很多數據可能不需要復雜的分析,只需要我們能存儲,並且提供快速查詢的功能。HBase在HDFS基礎上提供了Bigtable的能力; 並且基於列的模式進行存儲。列存儲設計的有事減少不必要的字段占用存儲,同時查詢的時候也可以只對查詢的指定列有IO操作。HBase可以存儲海量的數據,並且可以根據rowkey提供快速的查詢性能,是非常好的明細數據存儲方案,比如電商的訂單數據就可以放入HBase提供高效的查詢。
當然還有其他的存儲引擎,比如ES適合文本搜索查詢等。
總結
了解了上面的技術棧后,在實際數據接入中,你還會面臨各種問題,比如如何考慮確保數據一致性,保障數據不能丟失,數據采集存儲的效率,不能產生數據積壓等,這些都需要對每個組件進行研究,適配適合你自己業務系統的參數,用最少的資源,達到最好的結果。
歷史好文推薦