下圖是近來學習和用到的大數據方面的技術,現在做一個總結。並且在總結的過程中,也進行更加進一步的學習和了解。
以上爲個人所接觸到的大數據相關的一些技術,後續的章節將圍繞這些技術展開,具體的介紹方式是從應用和原理兩個方面進行。
1、大數據實時流架構
(1) 消息隊列
消息隊列是在不同的應用間做數據傳遞的,現在常用的主要包括Kafka,redis 隊列,RabbitMQ,ZeroMQ,ActiveMQ 等。
(2)流式處理框架
流式處理框架主要是提供了一實時處理消息的計算框架,具體的實現是由業務方自己來寫代碼完成的。常見的有Storm、Spark Streaming、以及Flink。
(3) 存儲
對於數據的存儲,常規的關係型數據庫(比如mysql、Oracle)也可以實現,但是對於大數據的存儲,現在比較流行的比如是NoSql數據庫,比如 Redis、MongoDB、HBase 這三種是最常用的。尤其對於Redis,很多大型公司都誰針對自己的業務場景對其進行封裝,提供監控、報警和自動擴容等功能。
2、大數據離線流架構
(1)數據存儲
目前大數據技術最常用的存儲方式爲:HDFS、Hive(基於HDFS)
(2)數據分析和處理工具
目前的數據分析處理工具主要是兩個方向,MapReduce和Spark 。
MapReduce:常用的工具有原生Hadoop MapReduce,Hive SQL和Pig。其中Hadoop MapReduce是最基礎的,HIve Sql和 pig都是對其進行的上層封裝,就好像彙編語言是比較基礎的編程語言,而C和Java是對其進行的上層封裝,最終還要轉成彙編一樣的道理;
Spark 是目前最火的數據處理工具,沒有之一。其與Hadoop相比,更大程度上利用了內存。