天天看點

大資料簡介,技術體系分類整理一、大資料簡介二、Hadoop架構三、大資料技術棧四、技術棧分類五、源代碼位址

一、大資料簡介

1、基礎概念

大資料是指無法在一定時間範圍内用正常軟體工具進行捕捉、管理和處理的資料集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的資訊資産。大資料技術則主要用來解決海量資料的存儲和分析。

2、特點分析

大資料的5V特點(IBM提出):Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價值密度)、Veracity(真實性)。

3、發展過程

Google在2004年前後發表的三篇論文,分别是檔案系統GFS、計算架構MapReduce、NoSQL資料庫系統BigTable。海量資料檔案,分析計算,并存儲,确立了大資料的基本原理和思路。

天才程式員DougCutting,也是Lucene、Nutch項目發起人。根據Google論文原理初步實作類似GFS和MapReduce的功能,後來發展成為大名鼎鼎的Hadoop。

再後來,Hadoop經過高速的發展,已經形成一個生态體系,基于Hadoop之上,有實時計算,離線計算,NoSQL存儲,資料分析,機器學習等一系列内容。

從這一系列事情發展看技術規律:Google業務實踐中創造性的提出論文作為基礎,業務的成長和需求,迫使技術不斷更新換代。是以業務是技術不斷發展的關鍵。

二、Hadoop架構

1、Hadoop簡介

注意這裡基于Hadoop2.X版本描述。後續如果沒有特别說明,都是2.7版本。

大資料簡介,技術體系分類整理一、大資料簡介二、Hadoop架構三、大資料技術棧四、技術棧分類五、源代碼位址

Hadoop是一個由Apache基金會所開發的分布式系統基礎架構;

提供海量的資料存儲能力,和分析計算能力;

作為Apache的頂級項目,包含衆多子項目是一個生态圈;

2、架構特點

可靠性:Hadoop按位存儲和存儲多個資料副本,提供可靠服務;

擴充性:Hadoop利用計算機叢集配置設定資料并完成計算任務,可以友善地擴充到數以千計的節點中;

高效性:基于MapReduce思想,為海量的資料提供高效的并行計算;

容錯性:自動儲存資料的多個副本,并且能夠自動将失敗的任務重新配置設定;

3、組成結構

HDFS存儲

  • NameNode

存儲檔案相關的中繼資料,例如:檔案名,檔案目錄,建立時間,權限副本數等。

  • DataNode

檔案系統存儲檔案塊資料,以及和資料塊ID的映射關系。

Yarn排程

負責資源管理和作業排程,将系統資源配置設定給在Hadoop叢集中運作的各種應用程式,并排程要在不同叢集節點上執行的任務。

MapReduce計算

MapReduce将計算過程分為兩個階段:Map階段并行處理輸入資料,Reduce階段對Map結果進行彙總。

三、大資料技術棧

大資料簡介,技術體系分類整理一、大資料簡介二、Hadoop架構三、大資料技術棧四、技術棧分類五、源代碼位址

1、Kafka中間件

開源組織: Apache軟體

應用場景:

Kafka是一種高吞吐量的分布式釋出訂閱消息系統,通過磁盤資料結構提供消息的持久化,這種結構對于即使數以TB的消息存儲也能夠保持長時間的穩定性能。高吞吐量:即使是非常普通的硬體Kafka也可以支援每秒數百萬的消息。支援通過Kafka伺服器和消費機叢集來分區消息。支援Hadoop并行資料加載。

2、Flume日志系統

開源組織: Cloudera公司

Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸的系統,Flume支援在日志系統中定制各類資料發送方,用于收集資料;同時,Flume提供對資料進行簡單處理,并寫到各種資料接受方(可定制)的能力。

3、Sqoop同步工具

Sqoop是一款開源的工具,主要用于在Hadoop、Hive與傳統的資料庫例如:MySql間進行資料的傳遞,可以将一個關系型資料庫(例如:MySQL,Oracle 等)中的資料導進到Hadoop的HDFS中,也可以将HDFS的資料導進到關系型資料庫中。

4、HBase資料庫

HBase是一個分布式的、面向列的開源資料庫,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同于一般的關系資料庫,它是一個适合于非結構化資料存儲的資料庫,并且基于列的而不是基于行的存儲模式。

5、Storm實時計算

Storm用于實時計算,對資料流做連續查詢,在計算時就将結果以流的形式輸出給使用者。Storm相對簡單,可以與任何程式設計語言一起使用。

6、Spark計算引擎

Spark是專為大規模資料處理而設計的快速通用的計算引擎,擁有Hadoop的MapReduce所具有的優點;但不同于MapReduce的是——Job中間輸出結果可以儲存在記憶體中,進而不再需要讀寫HDFS,是以Spark能更好地适用于資料挖掘與機器學習等需要疊代的MapReduce的算法。Spark是在Scala 語言中實作的,它将Scala用作其應用程式架構。

7、R語言

開源組織: 微軟公司

R是用于統計分析、繪圖的語言和操作環境。R是屬于GNU系統的一個自由、免費、源代碼開放的軟體,它是一個用于統計計算和統計制圖的優秀工具。

8、Hive數倉工具

開源組織: 臉書公司

hive是基于Hadoop的一個資料倉庫工具,用來進行資料提取、轉化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規模資料的機制。hive資料倉庫工具能将結構化的資料檔案映射為一張資料庫表,并提供SQL查詢功能,能将SQL語句轉變成MapReduce任務來執行。

9、Oozie元件

Oozie是一個管理Hdoop作業(job)的工作流程排程管理系統。

10、Azkaban元件

開源組織: Linkedin公司

批量工作流任務排程器。用于在一個工作流内以一個特定的順序運作一組工作和流程。Azkaban定義了一種KV檔案格式來建立任務之間的依賴關系,并提供一個易于使用的web使用者界面維護和跟蹤的工作流。

11、Mahout元件

Mahout提供一些可擴充的機器學習領域經典算法的實作,旨在幫助開發人員更加友善快捷地建立智能應用程式。Mahout包含許多實作,包括聚類、分類、推薦過濾、頻繁子項挖掘。

12、ZooKeeper元件

ZooKeeper是一個分布式的,開放源碼的分布式應用程式協調服務,是Google的Chubby一個開源的實作,是Hadoop和Hbase的重要元件。它是一個為分布式應用提供一緻性服務的軟體,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。

四、技術棧分類

存儲體系:Hadoop-HDFS、HBase、MongoDB、Cassandra

計算體系:Hadoop-MapReduce、Spark、Storm、Flink

資料同步:Sqoop、DataX

資源排程:YARN、Oozie、Zookeeper

日志收集:Flume、Logstash、Kibana

分析引擎:Hive、Impala、Presto、Phoenix、SparkSQL

叢集監控:Ambari、Ganglia、Zabbix

五、源代碼位址

GitHub·位址
https://github.com/cicadasmile/big-data-parent
GitEE·位址
https://gitee.com/cicadasmile/big-data-parent