大數據的核心技術有哪些?大數據的核心層:數據采集層、數據存儲分析層、數據共享層、數據應用層,叫法不同,作用基本相同。
大數據的核心技術有哪些?
1、數據收集
數據收集的任務是收集各種數據源的數據并將其存儲到數據存儲中,在此期間可以進行一些簡單的清洗。有多種類型的數據源:
網站日志:作為互聯網行業,網站日志占比最大。網站日志存儲在多個網站日志服務器上。一般在每臺網站日志服務器上部署flume agent,實時采集網站日志并存儲在HDFS上;
業務數據庫:還有各種類型的業務數據庫,包括Mysql、Oracle、SqlServer等,這個時候我們迫切需要一個可以將各種數據庫的數據同步到HDFS的工具。Sqoop 是一種,但是 Sqoop 太重了,無論數據大小,都需要啟動 MapReduce 執行,Hadoop 集群中的每臺機器都需要能夠訪問業務數據庫;對于這種場景,淘寶開源的DataX是一個很好的解決方案。如果有資源,可以基于DataX進行二次開發,可以很好的解決。當然,Flume 也可以通過配置和開發,將數據庫中的數據實時同步到 HDFS。
數據源來自Ftp/Http:可能部分合作伙伴提供的數據需要定期通過Ftp/Http等獲取,DataX也可以滿足這個需求;
其他數據源:如一些手動錄入的數據,只需要提供一個接口或小程序即可完成。
2、數據存儲與分析
毫無疑問,HDFS是大數據環境下數據倉庫/數據平臺最完美的數據存儲解決方案。
離線數據分析計算,也就是對實時性要求不高的部分,在我看來還是首選Hive,數據類型豐富,內置功能;ORC文件存儲格式,壓縮比非常高;非常方便的 SQL 支持使得 Hive 基于結構化數據的統計分析遠比 MapReduce 高效。對于單個 SQL 語句可以滿足的需求,MR 的開發可能需要數百行代碼。
當然,使用 Hadoop 框架自然也提供了 MapReduce 接口。如果你真的很樂意開發Java,或者對SQL不熟悉,也可以使用MapReduce進行分析計算。Spark在過去兩年非常流行。經過實踐,它的性能確實比 MapReduce 好很多,而且結合 Hive 和 Yarn 也越來越好。因此,需要支持使用 Spark 和 SparkSQL 進行分析計算。因為 Hadoop Yarn 已經存在,所以不用單獨部署 Spark 集群,使用 Spark 其實是非常容易的。
3、數據共享
這里的數據共享,其實是指之前的數據分析計算結果存儲的地方,其實就是關系型數據庫和NOSQL數據庫;之前使用Hive、MR、Spark、SparkSQL分析計算的結果還在HDFS上。但是大部分業務和應用無法直接從HDFS獲取數據,所以需要一個數據共享的地方,讓每個業務和產品都能輕松獲取數據;它與 HDFS 的數據收集層正好相反,需要從 HDFS 傳輸數據。與其他目標數據源同步的工具,同樣DataX也能滿足。
另外,一些實時計算結果數據可以直接寫入實時計算模塊的數據共享中。
4、數據應用
業務產品和業務產品使用的數據已經存在于數據共享層,可以直接從數據共享層訪問;報表(FineReport,業務報表)與業務產品相同,報表中使用的數據一般已經統計和匯總。存儲在數據共享層;ad hoc 查詢 ad hoc 查詢的用戶很多,可能是數據開發人員、網站和產品運營商、數據分析師,甚至是部門負責人,他們都有臨時查詢數據的需求;這種即席查詢通常情況下,現有報表和數據共享層中的數據不能滿足其需求,需要直接從數據存儲層查詢。即席查詢通常通過 SQL 完成。最大的困難是響應速度。使用 Hive 有點慢。可以使用 SparkSQL,它的響應速度比 Hive 快得多,并且與 Hive 兼容。當然,你也可以使用 Impala,如果你不關心平臺中多一個框架。
OLAP 目前很多OLAP工具都不能很好的支持直接從HDFS獲取數據。他們通過將需要的數據同步到關系數據庫中來做OLAP,但是如果數據量很大,關系數據庫顯然不能;這時候需要做相應的開發,從HDFS或者HBase獲取數據,完成OLAP功能;例如,根據用戶在界面上選擇的不確定維度和指標,通過開發界面,從HBase中獲取數據進行展示。
其他數據接口 有通用接口和定制接口。比如一個從Redis獲取用戶屬性的接口是通用的,所有的業務都可以調用這個接口來獲取用戶屬性。
5、實時計算
企業現在對數據倉庫的實時性要求越來越高,比如:實時了解一個網站的整體流量;實時獲取廣告的曝光和點擊;在海量數據下,依靠傳統的數據庫和傳統的實現方式,基本上是不可能的。需要一個分布式、高吞吐量、低延遲、高可靠的實時計算框架;Storm在這方面比較成熟,但是我選擇Spark Streaming的原因很簡單,就是不想在平臺上引入另外一個框架,另外Spark Streaming的延遲比Storm高一點,對于我們來說可以忽略需要。
我們目前使用Spark Streaming來實現網站流量的實時統計和廣告效果的實時統計。方法也很簡單。Flume 在前端日志服務器上收集網站日志和廣告日志,并實時發送到 Spark Streaming。Spark Streaming 完成統計,將數據存儲在 Redis 中,通過訪問 Redis 實時獲取服務。
6、任務調度與監控
在數據倉庫/數據平臺中,有很多種程序和任務,例如:數據采集任務、數據同步任務、數據分析任務等。這些任務除了定時調度外,還有非常復雜的任務依賴關系。例如,數據分析任務只有在相應的數據采集任務完成后才能啟動;數據分析任務完成后才能啟動數據同步任務;
這就需要一個非常完善的任務調度和監控系統。作為數據倉庫/數據平臺的中心,負責調度和監控所有任務的分配和運行。更多關于大數據培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經驗,采用全程面授高品質、高體驗培養模式,擁有國內一體化教學管理及學員服務,助力更多學員實現高薪夢想。