本文原始碼:GitHub·點這里 || GitEE·點這里
一、大資料簡介
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是一個由Apache基金會所開發的分布式系統基礎架構;
提供海量的資料存盤能力,和分析計算能力;
作為Apache的頂級專案,包含眾多子專案是一個生態圈;
2、框架特點
可靠性:Hadoop按位存盤和存盤多個資料副本,提供可靠服務;
擴展性:Hadoop利用計算機集群分配資料并完成計算任務,可以方便地擴展到數以千計的節點中;
高效性:基于MapReduce思想,為海量的資料提供高效的并行計算;
容錯性:自動保存資料的多個副本,并且能夠自動將失敗的任務重新分配;
3、組成結構
HDFS存盤
- NameNode
存盤檔案相關的元資料,例如:檔案名,檔案目錄,創建時間,權限副本數等,
- DataNode
檔案系統存盤檔案塊資料,以及和資料塊ID的映射關系,
Yarn調度
負責資源管理和作業調度,將系統資源分配給在Hadoop集群中運行的各種應用程式,并調度要在不同集群節點上執行的任務,
MapReduce計算
MapReduce將計算程序分為兩個階段:Map階段并行處理輸入資料,Reduce階段對Map結果進行匯總,
三、大資料技術堆疊

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

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/46350.html
標籤:Java
