簡介: 大數據是指沒法在必定時間範圍內用常規軟件工具進行捕捉、管理和處理的數據集合,是須要新處理模式才能具備更強的決策力、洞察發現力和流程優化能力的海量、高增加率和多樣化的信息資產。大數據技術則主要用來解決海量數據的存儲和分析。git
大數據是指沒法在必定時間範圍內用常規軟件工具進行捕捉、管理和處理的數據集合,是須要新處理模式才能具備更強的決策力、洞察發現力和流程優化能力的海量、高增加率和多樣化的信息資產。大數據技術則主要用來解決海量數據的存儲和分析。程序員
大數據的5V特色(IBM提出):Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價值密度)、Veracity(真實性)。github
Google在2004年先後發表的三篇論文,分別是文件系統GFS、計算框架MapReduce、NoSQL數據庫系統BigTable。海量數據文件,分析計算,並存儲,確立了大數據的基本原理和思路。web
天才程序員DougCutting,也是Lucene、Nutch項目發起人。根據Google論文原理初步實現相似GFS和MapReduce的功能,後來發展成爲大名鼎鼎的Hadoop。算法
再後來,Hadoop通過高速的發展,已經造成一個生態體系,基於Hadoop之上,有實時計算,離線計算,NoSQL存儲,數據分析,機器學習等一系列內容。數據庫
從這一系列事情發展看技術規律:Google業務實踐中創造性的提出論文做爲基礎,業務的成長和需求,迫使技術不斷更新換代。因此業務是技術不斷髮展的關鍵。編程
注意這裏基於Hadoop2.X版本描述。後續若是沒有特別說明,都是2.7版本。服務器
Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構;數據結構
提供海量的數據存儲能力,和分析計算能力;架構
做爲Apache的頂級項目,包含衆多子項目是一個生態圈;
可靠性:Hadoop按位存儲和存儲多個數據副本,提供可靠服務;
擴展性:Hadoop利用計算機集羣分配數據並完成計算任務,能夠方便地擴展到數以千計的節點中;
高效性:基於MapReduce思想,爲海量的數據提供高效的並行計算;
容錯性:自動保存數據的多個副本,而且可以自動將失敗的任務從新分配;
HDFS存儲
存儲文件相關的元數據,例如:文件名,文件目錄,建立時間,權限副本數等。
文件系統存儲文件塊數據,以及和數據塊ID的映射關係。
Yarn調度
負責資源管理和做業調度,將系統資源分配給在Hadoop集羣中運行的各類應用程序,並調度要在不一樣集羣節點上執行的任務。
MapReduce計算
MapReduce將計算過程分爲兩個階段:Map階段並行處理輸入數據,Reduce階段對Map結果進行彙總。
開源組織: Apache軟件
應用場景:
Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,經過磁盤數據結構提供消息的持久化,這種結構對於即便數以TB的消息存儲也可以保持長時間的穩定性能。高吞吐量:即便是很是普通的硬件Kafka也能夠支持每秒數百萬的消息。支持經過Kafka服務器和消費機集羣來分區消息。支持Hadoop並行數據加載。
開源組織: Cloudera公司
應用場景:
Flume是Cloudera提供的一個高可用的,高可靠的,分佈式的海量日誌採集、聚合和傳輸的系統,Flume支持在日誌系統中定製各種數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各類數據接受方(可定製)的能力。
開源組織: Apache軟件
應用場景:
Sqoop是一款開源的工具,主要用於在Hadoop、Hive與傳統的數據庫例如:MySql間進行數據的傳遞,能夠將一個關係型數據庫(例如:MySQL,Oracle 等)中的數據導進到Hadoop的HDFS中,也能夠將HDFS的數據導進到關係型數據庫中。
開源組織: Apache軟件
應用場景:
HBase是一個分佈式的、面向列的開源數據庫,HBase在Hadoop之上提供了相似於Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不一樣於通常的關係數據庫,它是一個適合於非結構化數據存儲的數據庫,而且基於列的而不是基於行的存儲模式。
開源組織: Apache軟件
應用場景:
Storm用於實時計算,對數據流作連續查詢,在計算時就將結果以流的形式輸出給用戶。Storm相對簡單,能夠與任何編程語言一塊兒使用。
開源組織: Apache軟件
應用場景:
Spark是專爲大規模數據處理而設計的快速通用的計算引擎,擁有Hadoop的MapReduce所具備的優勢;但不一樣於MapReduce的是——Job中間輸出結果能夠保存在內存中,從而再也不須要讀寫HDFS,所以Spark能更好地適用於數據挖掘與機器學習等須要迭代的MapReduce的算法。Spark是在Scala 語言中實現的,它將Scala用做其應用程序框架。
開源組織: 微軟公司
應用場景:
R是用於統計分析、繪圖的語言和操做環境。R是屬於GNU系統的一個自由、免費、源代碼開放的軟件,它是一個用於統計計算和統計製圖的優秀工具。
開源組織: 臉書公司
應用場景:
hive是基於Hadoop的一個數據倉庫工具,用來進行數據提取、轉化、加載,這是一種能夠存儲、查詢和分析存儲在Hadoop中的大規模數據的機制。hive數據倉庫工具能將結構化的數據文件映射爲一張數據庫表,並提供SQL查詢功能,能將SQL語句轉變成MapReduce任務來執行。
開源組織: Apache軟件
應用場景:
Oozie是一個管理Hdoop做業(job)的工做流程調度管理系統。
開源組織: Linkedin公司
應用場景:
批量工做流任務調度器。用於在一個工做流內以一個特定的順序運行一組工做和流程。Azkaban定義了一種KV文件格式來創建任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤的工做流。
開源組織: Apache軟件
應用場景:
Mahout提供一些可擴展的機器學習領域經典算法的實現,旨在幫助開發人員更加方便快捷地建立智能應用程序。Mahout包含許多實現,包括聚類、分類、推薦過濾、頻繁子項挖掘。
開源組織: 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