大數據

大數據簡介,技術體系分類整理

一、大數據簡介

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版本。

01-1.png

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

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

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

2、框架特點

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

擴展性:Hadoop利用計算機集群分配數據並完成計算任務,可以方便地擴展到數以千計的節點中;

高效性:基於MapReduce思想,為海量的數據提供高效的並行計算;

容錯性:自動保存數據的多個副本,並且能夠自動將失敗的任務重新分配;

3、組成結構

HDFS存儲

  • NameNode

存儲文件相關的元數據,例如:文件名,文件目錄,創建時間,權限副本數等。

  • DataNode

文件系統存儲文件塊數據,以及和數據塊ID的映射關係。

Yarn調度

負責資源管理和作業調度,將系統資源分配給在Hadoop集群中運行的各種應用程序,並調度要在不同集群節點上執行的任務。

MapReduce計算

MapReduce將計算過程分為兩個階段:Map階段並行處理輸入數據,Reduce階段對Map結果進行彙總。

三、大數據技術棧

01-2.png

1、Kafka中間件

開源組織: Apache軟件

應用場景:

Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,通過磁盤數據結構提供消息的持久化,這種結構對於即使數以TB的消息存儲也能夠保持長時間的穩定性能。高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒數百萬的消息。支持通過Kafka服務器和消費機集群來分區消息。支持Hadoop並行數據加載。

2、Flume日誌系統

開源組織: Cloudera公司

應用場景:

Flume是Cloudera提供的一個高可用的,高可靠的,分佈式的海量日誌採集、聚合和傳輸的系統,Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力。

3、Sqoop同步工具

開源組織: Apache軟件

應用場景:

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

4、HBase數據庫

開源組織: Apache軟件

應用場景:

HBase是一個分佈式的、面向列的開源數據庫,HBase在Hadoop之上提供了類似於Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同於一般的關係數據庫,它是一個適合於非結構化數據存儲的數據庫,並且基於列的而不是基於行的存儲模式。

5、Storm實時計算

開源組織: Apache軟件

應用場景:

Storm用於實時計算,對數據流做連續查詢,在計算時就將結果以流的形式輸出給用戶。Storm相對簡單,可以與任何編程語言一起使用。

6、Spark計算引擎

開源組織: Apache軟件

應用場景:

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組件

開源組織: Apache軟件

應用場景:

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

10、Azkaban組件

開源組織: Linkedin公司

應用場景:

批量工作流任務調度器。用於在一個工作流內以一個特定的順序運行一組工作和流程。Azkaban定義了一種KV文件格式來建立任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤的工作流。

11、Mahout組件

開源組織: Apache軟件

應用場景:

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

12、ZooKeeper組件

開源組織: Apache軟件

應用場景:

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

Leave a Reply

Your email address will not be published. Required fields are marked *