大數據的一些相關知識介紹

什麼是大數據

大數據(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

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就是處理大數據的一個分佈式系統基礎架構。數據庫

  • Spark
  • 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取代了。

看到了這麼多相關技術,是否是眼花了了呢,這上面的技術別說都精通,所有都能用好的估計也多少。
  那麼這些技術應該主要學習那些呢?
複製代碼

先將這些技術作個分類吧。框架

  • 文件存儲:Hadoop HDFS、Tachyon、KFS
  • 離線計算:Hadoop MapReduce、Spark
  • 流式、實時計算:Storm、Spark Streaming、S四、Heron、Flink
  • K-V、NOSQL數據庫:HBase、Redis、MongoDB
  • 資源管理:YARN、Mesos
  • 日誌收集:Flume、Scribe、Logstash、Kibana
  • 消息系統:Kafka、StormMQ、ZeroMQ、RabbitMQ
  • 查詢分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、分佈式協調服務:Zookeeper、Kylin、Druid
  • 集羣管理與監控:Ambari、Ganglia、Nagios、Cloudera Manager
  • 數據挖掘、機器學習:Mahout、Spark MLLib
  • 數據同步:Sqoop
  • 任務調度:Oozie

這樣總體以後,對於如何學習是否是有個更明確的路線了呢?

那麼我的以爲初步學習的技術應該有如下這些:

  • 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 原創不易,轉載請標明出處,謝謝!

相關文章
相關標籤/搜索