大數據(big data),指沒法在必定時間範圍內用常規軟件工具進行捕捉、管理和處理的數據集合,是須要新處理模式才能具備更強的決策力、洞察發現力和流程優化能力的海量、高增加率和多樣化的信息資產。
大數據的定義是4Vs:Volume、Velocity、Variety、Veracity。用中文簡單描述就是大、快、多、真。
複製代碼
Volume —— 數據量大html
隨着技術的發展,人們收集信息的能力愈來愈強,隨之獲取的數據量也呈爆炸式增加。例如百度每日處理的數據量達上百PB,總的數據量規模已經到達EP級。
複製代碼
Velocity —— 處理速度快node
指的是銷售、交易、計量等等人們關心的事件發生的頻率。2017年雙11,支付成功峯值達25.6萬筆/秒、實時數據處理峯值4.72億條/秒。
複製代碼
Variety —— 數據源多樣ios
如今要處理的數據源包括各類各樣的關係數據庫、NoSQL、平面文件、XML文件、機器日誌、圖片、音視頻等等,並且天天都會產生新的數據格式和數據源。
複製代碼
Veracity —— 真實性算法
諸如軟硬件異常、應用系統bug、人爲錯誤等都會使數據不正確。大數據處理中應該分析並過濾掉這些有誤差的、僞造的、異常的部分,防止髒數據損害到數據準確性。
複製代碼
在談到學習大數據的時候,不得不提Hadoop和Spark。
複製代碼
Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。 用戶能夠在不瞭解分佈式底層細節的狀況下,開發分佈式程序。充分利用集羣的威力進行高速運算和存儲。 [1] Hadoop實現了一個分佈式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特色,而且設計用來部署在低廉的(low-cost)硬件上;並且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有着超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,能夠以流的形式訪問(streaming access)文件系統中的數據。 Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS爲海量的數據提供了存儲,則MapReduce爲海量的數據提供了計算。sql
簡而言之,Hadoop就是處理大數據的一個分佈式系統基礎架構。數據庫
- Apache Spark 是專爲大規模數據處理而設計的快速通用的計算引擎。Spark是UC Berkeley AMP lab (加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用並行框架,Spark,擁有Hadoop MapReduce所具備的優勢;但不一樣於MapReduce的是——Job中間輸出結果能夠保存在內存中,從而再也不須要讀寫HDFS,所以Spark能更好地適用於數據挖掘與機器學習等須要迭代的MapReduce的算法。 Spark 是一種與 Hadoop 類似的開源集羣計算環境,可是二者之間還存在一些不一樣之處,這些有用的不一樣之處使 Spark 在某些工做負載方面表現得更加優越,換句話說,Spark 啓用了內存分佈數據集,除了可以提供交互式查詢外,它還能夠優化迭代工做負載。 Spark 是在 Scala 語言中實現的,它將 Scala 用做其應用程序框架。與 Hadoop 不一樣,Spark 和 Scala 可以緊密集成,其中的 Scala 能夠像操做本地集合對象同樣輕鬆地操做分佈式數據集。 儘管建立 Spark 是爲了支持分佈式數據集上的迭代做業,可是實際上它是對 Hadoop 的補充,能夠在 Hadoop 文件系統中並行運行。經過名爲 Mesos 的第三方集羣框架能夠支持此行爲。Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms, Machines, and People Lab) 開發,可用來構建大型的、低延遲的數據分析應用程序。
簡而言之,Spark是那麼一個專門用來對那些分佈式存儲的大數據進行處理的工具。編程
關於Hadoop和Spark學習這塊,我也是個初學者,對於總體的學習路線目前沒法給出很好的答案,可是能夠推薦一些學習大數據不錯的文章以及相關資源,這些能夠在本文底部獲取。數據結構
首先看張大數據的總體技術圖吧,能夠有個更直觀的瞭解。架構
注:Shark 目前已經被Spark SQL取代了。看到了這麼多相關技術,是否是眼花了了呢,這上面的技術別說都精通,所有都能用好的估計也多少。
那麼這些技術應該主要學習那些呢?
複製代碼
先將這些技術作個分類吧。框架
這樣總體以後,對於如何學習是否是有個更明確的路線了呢?
那麼我的以爲初步學習的技術應該有如下這些:
HDFS
HDFS(Hadoop Distributed File System,Hadoop分佈式文件系統)是Hadoop體系中數據存儲管理的基礎。它是一個高度容錯的系統,能檢測和應對硬件故障,用於在低成本的通用硬件上運行。HDFS簡化了文件的一致性模型,經過流式數據訪問,提供高吞吐量應用程序數據訪問功能,適合帶有大型數據集的應用程序。
HDFS存儲相關角色與功能:
Client:客戶端,系統使用者,調用HDFS API操做文件;與NN交互獲取文件元數據;與DN交互進行數據讀寫。
Namenode:元數據節點,是系統惟一的管理者。負責元數據的管理;與client交互進行提供元數據查詢;分配數據存儲節點等。
Datanode:數據存儲節點,負責數據塊的存儲與冗餘備份;執行數據塊的讀寫操做等。
複製代碼
MapReduce
MapReduce是一種計算模型,用以進行大數據量的計算。Hadoop的MapReduce實現,和Common、HDFS一塊兒,構成了Hadoop發展初期的三個組件。MapReduce將應用劃分爲Map和Reduce兩個步驟,其中Map對數據集上的獨立元素進行指定的操做,生成鍵-值對形式中間結果。Reduce則對中間結果中相同「鍵」的全部「值」進行規約,以獲得最終結果。MapReduce這樣的功能劃分,很是適合在大量計算機組成的分佈式並行環境裏進行數據處理。
複製代碼
YARN
YARN是Hadoop最新的資源管理系統。除了Hadoop MapReduce外,Hadoop生態圈如今有不少應用操做HDFS中存儲的數據。資源管理系統負責多個應用程序的多個做業能夠同時運行。例如,在一個集羣中一些用戶可能提交MapReduce做業查詢,另外一些用戶可能提交Spark 做業查詢。資源管理的角色就是要保證兩種計算框架都能得到所需的資源,而且若是多人同時提交查詢,保證這些查詢以合理的方式得到服務。
複製代碼
SparkStreaming
SparkStreaming是一個對實時數據流進行高通量、容錯處理的流式處理系統,能夠對多種數據源(如Kdfka、Flume、Twitter、Zero和TCP 套接字)進行相似Map、Reduce和Join等複雜操做,並將結果保存到外部文件系統、數據庫或應用到實時儀表盤。
複製代碼
SparkSQL
SparkSQL是Hadoop中另外一個著名的SQL引擎,正如名字所表示的,它以Spark做爲底層計算框架,其實是一個Scala程序語言的子集。Spark基本的數據結構是RDD,一個分佈於集羣節點的只讀數據集合。傳統的MapReduce框架強制在分佈式編程中使用一種特定的線性數據流處理方式。MapReduce程序從磁盤讀取輸入數據,把數據分解成鍵/值對,通過混洗、排序、歸併等數據處理後產生輸出,並將最終結果保存在磁盤。Map階段和Reduce階段的結果均要寫磁盤,這大大下降了系統性能。也是因爲這個緣由,MapReduce大都被用於執行批處理任務
複製代碼
Hive
hive是基於Hadoop的一個數據倉庫工具,能夠將結構化的數據文件映射爲一張數據庫表,並提供簡單的sql查詢功能,能夠將sql語句轉換爲MapReduce任務進行運行。 其優勢是學習成本低,能夠經過類SQL語句快速實現簡單的MapReduce統計,沒必要開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
複製代碼
Impala
Impala是一個運行在Hadoop之上的大規模並行處理(MPP)查詢引擎,提供對Hadoop集羣數據的高性能、低延遲的SQL查詢,使用HDFS做爲底層存儲。對查詢的快速響應使交互式查詢和對分析查詢的調優成爲可能,而這些在針對處理長時間批處理做業的SQL-on-Hadoop傳統技術上是難以完成的。
Impala的最大亮點在於它的執行速度。官方宣稱大多數狀況下它能在幾秒或幾分鐘內返回查詢結果,而相同的Hive查詢一般須要幾十分鐘甚至幾小時完成,所以Impala適合對Hadoop文件系統上的數據進行分析式查詢。Impala缺省使用Parquet文件格式,這種列式存儲對於典型數據倉庫場景下的大查詢是較爲高效的。
複製代碼
HBase
一個結構化數據的分佈式存儲系統。
HBase不一樣於通常的關係數據庫,它是一個適合於非結構化數據存儲的數據庫。另外一個不一樣的是HBase基於列的而不是基於行的模式。
HBase是一個針對結構化數據的可伸縮、高可靠、高性能、分佈式和麪向列的動態模式數據庫。和傳統關係數據庫不一樣,HBase採用了BigTable的數據模型:加強的稀疏排序映射表(Key/Value),其中,鍵由行關鍵字、列關鍵字和時間戳構成。HBase提供了對大規模數據的隨機、實時讀寫訪問,同時,HBase中保存的數據可使用MapReduce來處理,它將數據存儲和並行計算完美地結合在一塊兒。
複製代碼
Apache Kylin
Apache Kylin™是一個開源的分佈式分析引擎,提供Hadoop之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規模數據,最初由eBay Inc. 開發並貢獻至開源社區。它能在亞秒內查詢巨大的Hive表。
複製代碼
Flume
Flume是Cloudera提供的一個高可用的,高可靠的,分佈式的海量日誌採集、聚合和傳輸的系統,Flume支持在日誌系統中定製各種數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各類數據接受方(可定製)的能力。
複製代碼
大數據初步瞭解 lxw1234.com/archives/20…
大數據雜談 lxw1234.com/archives/20…
零基礎學習Hadoop blog.csdn.net/qazwsxpcm/a…
HBase 應用場景 blog.csdn.net/lifuxiangca…
Hadoop硬件選擇 bigdata.evget.com/post/1969.h…
圖解Spark:核心技術與案例實戰 www.cnblogs.com/shishanyuan…
一個大數據項目的架構設計與實施方案 www.360doc.com/content/17/…
Hadoop-10-years 連接:pan.baidu.com/s/1nvBppQ5 密碼:7i7m
Hadoop權威指南 連接:pan.baidu.com/s/1skJEzj3 密碼:0ryw
Hadoop實戰 連接:pan.baidu.com/s/1dEQi29V 密碼:ddc7
Hadoop源代碼分析 連接:pan.baidu.com/s/1bp8RTcN 密碼:ju63
Spark最佳學習路徑 連接:pan.baidu.com/s/1i5MmJVv 密碼:qfbt
深刻理解大數據+大數據處理與編程實踐 連接:pan.baidu.com/s/1dFq6OSD 密碼:7ggl
版權聲明: 做者:虛無境 博客園出處:www.cnblogs.com/xuwujing CSDN出處:blog.csdn.net/qazwsxpcm 我的博客出處:www.panchengming.com 原創不易,轉載請標明出處,謝謝!