大數據平臺技術棧

技術棧全貌


大數據平臺技術棧

大數據平臺技術棧



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

1 採集層和傳輸層


大數據平臺技術棧

採集層



  • Sqoop

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

  • Flume

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


大數據平臺技術棧

Flume



  • Canal

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


大數據平臺技術棧

Canal



  • Logstash

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

  • Kafka

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

  • RocketMQ

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

2 存儲層


大數據平臺技術棧

存儲層


  • HBase

HBase is the Hadoop database, a distributed, scalable, big data store.

  • Alluxio/Redis/Ignite

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


大數據平臺技術棧

Alluxio



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

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

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

  • TiDB

TiDB是有PingCap開源的分佈式NewSQL關係型數據庫。NewSQL數據庫有兩個流派,分別是以Google為代表的Spanner/F1和以Amazon 為代表的Aurora(極光),目前國內做NewSQL數據庫主要是參考Google的Spanner架構,Google Spanner也是未來NewSQL的發展趨勢。具體請查閱相關資料,或者訪問Youtube,觀看黃旭東的分享。

  • 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 is Apache Spark's module for working with structured data.

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 is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale.

  • TensorFlow

TensorFlow™ is an open source software library for high performance numerical computation. Its flexible architecture allows easy deployment of computation across a variety of platforms (CPUs, GPUs, TPUs), and from desktops to clusters of servers to mobile and edge devices. Originally developed by researchers and engineers from the Google Brain team within Google’s AI organization, it comes with strong support for machine learning and deep learning and the flexible numerical computation core is used across many other scientific domains.

  • 分佈式資源調度
  • 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
  • Web-based notebook that enables data-driven,
  • interactive data analytics and collaborative documents with SQL, Scala and more.
  • Kylin
  • Apache Kylin™是一個開源的分佈式分析引擎,提供Hadoop/Spark之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規模數據,最初由eBay Inc. 開發並貢獻至開源社區。它能在亞秒內查詢巨大的Hive表。

大數據平臺技術棧

kylin


  • Jupyter

The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, data visualization, machine learning, and much more.

https://www.jianshu.com/p/c688e47dae1d


分享到:


相關文章: