史上最全的大數據技術棧,有種衝動學習的既視感,你是否感受到了自己的不足?

前言

提起大數據,不得不提由IBM提出的關於大數據的5V特點:Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價值密度)、Veracity(真實性),而對於大數據領域的從業人員的日常工作也與這5V密切相關。大數據技術在過去的幾十年中取得非常迅速的發展,尤以Hadoop和Spark最爲突出,已構建起龐大的技術生態體系圈。

下面我們通過一張圖來了解一下目前大數據領域常用的一些技術,當然大數據發展至今所涉及技術遠不止這些。

 

下面自底向上介紹各個層的主要項目。

1 採集層和傳輸層

 

Sqoop

在hadoop和關係型數據庫之間轉換數據。

Flume

Flume是一個分佈式的高可用的數據收集、聚集和移動的工具。通常用於從其他系統蒐集數據,如web服務器產生的日誌,通過Flume將日誌寫入到Hadoop的HDFS中。

 

Canal

數據抽取是 ETL 流程的第一步。我們會將數據從 RDBMS 或日誌服務器等外部系統抽取至數據倉庫,進行清洗、轉換、聚合等操作。在現代網站技術棧中,MySQL 是最常見的數據庫管理系統,我們會從多個不同的 MySQL 實例中抽取數據,存入一箇中心節點,或直接進入 Hive。市面上已有多種成熟的、基於 SQL 查詢的抽取軟件,如著名的開源項目 Apache Sqoop,然而這些工具並不支持實時的數據抽取。MySQL Binlog 則是一種實時的數據流,用於主從節點之間的數據複製,我們可以利用它來進行數據抽取。藉助阿里巴巴開源的 Canal 項目,我們能夠非常便捷地將 MySQL 中的數據抽取到任意目標存儲中。

 

Logstash

Logstash 是開源的服務器端數據處理管道,能夠同時從多個來源採集數據,轉換數據,然後將數據發送到您最喜歡的 “存儲庫” 中。

Kafka

消息隊列,一個分佈式流平臺。

RocketMQ

阿里巴巴開源的消息隊列。

2 存儲層

 

HBase

HBase是Hadoop數據庫,一個分佈式,可擴展的大數據存儲。

Alluxio/Redis/Ignite

Alluxio以內存爲中心分佈式存儲系統,從下圖可以看出, Alluxio主要有兩大功能,第一提供一個文件系統層的抽象,統一文件系統接口,橋接儲存系統和計算框架;第二通過內存實現對遠程數據的加速訪問。

 

Redis是一個開源的內存鍵值數據庫,相比於Memcache,支持豐富的數據結構。

Ignit是一個以內存爲中心的分佈式數據庫,緩存和處理平臺,用於事務,分析和流式工作負載,在PB級別的數據上提供接近內存速度訪問數據。

從上述分析可知,Alluxio/Redis/Ignite主要都是通過內存來實現加速。

TiDB

TiDB私有PingCap開源的分佈式NewSQL關係型數據庫。**NewSQL數據庫有兩個流派,分別是以Google爲代表的Spanner/F1和以Amazon 爲代表的Aurora(極光),目前國內做NewSQL數據庫主要是參考Google的Spanner架構,Google Spanner也是未來NewSQL的發展趨勢。

HDFS

Hadoop的分佈式文件系統。

Ceph

Linux中備受關注的開源分佈式存儲系統,除了GlusterFS,當屬Ceph。目前Ceph已經成爲RedHat旗下重要的分佈式存儲產品,並繼續開源。Ceph提供了塊儲存RDB、分佈式文件儲存Ceph FS、以及分佈式對象存儲Radosgw三大儲存功能,是目前爲數不多的集各種存儲能力於一身的開源存儲中間件。

Kudu

Kudu是cloudera開源的運行在hadoop平臺上的列式存儲系統,擁有Hadoop生態系統應用的常見技術特性,運行在一般的商用硬件上,支持水平擴展,高可用,目前是Apache Hadoop生態圈的新成員之一(incubating)。

Kudu的設計與衆不同,它定位於應對快速變化數據的快速分析型數據倉庫,希望靠系統自身能力,支撐起同時需要高吞吐率的順序和隨機讀寫的應用場景,提供一個介於HDFS和HBase的性能特點之間的一個系統,在隨機讀寫和批量掃描之間找到一個平衡點,並保障穩定可預測的響應延遲。可與MapReduce, Spark和其它hadoop生態系統集成。

3 計算層

 

Hive

Facebook 開源。Hive是一個構建在Hadoop上的數據倉庫框架。Hive的設計目標是讓精通SQL技能但Java編程技能相對較弱的分析師能對存放在Hadoop上的大規數據執行查詢。

Hive的查詢語言HiveQL是基於SQL的。任何熟悉SQL的人都可以輕鬆使用HiveSQL寫查詢。和RDBMS相同,Hive要求所有數據必須存儲在表中,而表必須有模式(Schema),且模式由Hive進行管理。

類似Hive的同類產品:kylin druid SparkSQL Impala。

KylinApache Kylin™是一個開源的分佈式分析引擎,提供Hadoop/Spark之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規模數據,最初由eBay Inc. 開發並貢獻至開源社區。它能在亞秒內查詢巨大的Hive表。

Druid 爲監控而生的數據庫連接池。

SparkSQL,Spark SQL是Apache Spark的用於處理結構化數據的模塊。

Impala,Impala是Apache Hadoop的開源,本地分析數據庫。 它由Cloudera,MapR,Oracle和Amazon等供應商提供。

Spark

Spark是一個分佈式計算框架。

Storm

Storm是一個分佈式的、高容錯的實時計算系統。Storm對於實時計算的的意義相當於Hadoop對於批處理的意義。Hadoop爲我們提供了Map和Reduce原語,使我們對數據進行批處理變的非常的簡單和優美。同樣,Storm也對數據的實時計算提供了簡單Spout和Bolt原語。

Storm適用的場景:①、流數據處理:Storm可以用來用來處理源源不斷的消息,並將處理之後的結果保存到持久化介質中。②、分佈式RPC:由於Storm的處理組件都是分佈式的,而且處理延遲都極低,所以可以Storm可以作爲一個通用的分佈式RPC框架來使用。

Flink

Apache Flink是一個框架和分佈式處理引擎,用於對無限制和有限制的數據流進行有狀態的計算。 Flink旨在運行在所有常見的集羣環境中,以內存速度和任何規模執行計算。

TensorFlow

TensorFlow™是用於高性能數值計算的開源軟件庫。 其靈活的體系結構允許輕鬆地在各種平臺(CPU,GPU,TPU)之間以及從臺式機到服務器羣集到移動和邊緣設備的計算部署。 它最初是由Google AI組織的Google Brain團隊的研究人員和工程師開發的,它具有對機器學習和深度學習的強大支持,並且靈活的數值計算核心已在許多其他科學領域中使用。

分佈式資源調度

YARN

Apache YARN(Yet Another Resource Negotiator)是hadoop的集羣資源管理系統。YARN在Hadoop2時被引入,最初是爲了改善MapReduce的實現,但它具有足夠的通用性,也支持其他的分佈式計算模式。

Mesos

Mesos 最初由 UC Berkeley 的 AMP 實驗室於 2009 年發起,遵循 Apache 協議,目前已經成立了 Mesosphere 公司進行運營。Mesos 可以將整個數據中心的資源(包括 CPU、內存、存儲、網絡等)進行抽象和調度,使得多個應用同時運行在集羣中分享資源,並無需關心資源的物理分佈情況。

如果把數據中心中的集羣資源看做一臺服務器,那麼 Mesos 要做的事情,其實就是今天操作系統內核的職責:抽象資源 + 調度任務。Mesos 項目是 Mesosphere 公司 Datacenter Operating System (DCOS) 產品的核心部件。

Kubernetes

Kubernetes是Google 2014年推出的開源容器集羣管理系統,基於Docker構建一個容器調度服務,爲容器化的應用提供資源調度、部署運行、均衡容災、服務註冊、擴容縮容等功能。

Presto

Presto是FaceBook開源的一個開源項目。Presto被設計爲數據倉庫和數據分析產品:數據分析、大規模數據聚集和生成報表。這些工作經常通常被認爲是線上分析處理操作。

Presto通過使用分佈式查詢,可以快速高效的完成海量數據的查詢。如果你需要處理TB或者PB級別的數據,那麼你可能更希望藉助於Hadoop和HDFS來完成這些數據的處理。作爲Hive和Pig(Hive和Pig都是通過MapReduce的管道流來完成HDFS數據的查詢)的替代者,Presto不僅可以訪問HDFS,也可以操作不同的數據源,包括:RDBMS和其他的數據源(例如:Cassandra)。

其他(區塊鏈框架)

  • Etherenum, 以太坊
  • HyperLedger,超級賬本

4 工具層和服務層

 

Zeppelin

基於網絡的筆記本,可實現數據驅動,

使用SQL,Scala等進行交互式數據分析和協作文檔。

Kylin

Apache Kylin™是一個開源的分佈式分析引擎,提供Hadoop/Spark之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規模數據,最初由eBay Inc. 開發並貢獻至開源社區。它能在亞秒內查詢巨大的Hive表。

 

Jupyter

Jupyter Notebook是一個開源Web應用程序,允許您創建和共享包含實時代碼,方程式,可視化效果和敘述文本的文檔。 用途包括:數據清理和轉換,數值模擬,統計模型,數據可視化,機器學習等。

看到這是不是感到自己還欠缺很多?沒關係,只要我們找到適合自己的學習路線,不負韶華,只爭朝夕,終有一天會實現自我的價值,在這大數據時代盡情徜徉!!!!

喜歡請多多點贊評論轉發,關注小編,小編後續會繼續更新讓大家喜歡的文章,你們的支持就是小編最大的動力!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章