1. 程式人生 > >大數據的一些相關知識介紹

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

data 文件存儲 大數 一個 yarn rdd .html 非結構化數據 代碼

什麽是大數據
   大數據(big data),指無法在一定時間範圍內用常規軟件工具進行捕捉、管理和處理的數據集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。
   大數據的定義是4Vs:Volume、Velocity、Variety、Veracity。用中文簡單描述就是大、快、多、真。
  • Volume —— 數據量大

    隨著技術的發展,人們收集信息的能力越來越強,隨之獲取的數據量也呈爆炸式增長。例如百度每日處理的數據量達上百PB,總的數據量規模已經到達EP級。
  • Velocity —— 處理速度快

    指的是銷售、交易、計量等等人們關心的事件發生的頻率。2017年雙11,支付成功峰值達25.6萬筆/秒、實時數據處理峰值4.72億條/秒。
  • Variety —— 數據源多樣

    現在要處理的數據源包括各種各樣的關系數據庫、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為海量的數據提供了計算。

簡而言之,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、S4、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提供對數據進行簡單處理,並寫到各種數據接受方(可定制)的能力。

參考文章

大數據初步了解
http://lxw1234.com/archives/2016/11/779.htm

大數據雜談
http://lxw1234.com/archives/2016/12/823.htm

推薦文章

零基礎學習Hadoop
http://blog.csdn.net/qazwsxpcm/article/details/78460840

HBase 應用場景
http://blog.csdn.net/lifuxiangcaohui/article/details/39894265

Hadoop硬件選擇
http://bigdata.evget.com/post/1969.html

圖解Spark:核心技術與案例實戰
http://www.cnblogs.com/shishanyuan/category/925085.html

一個大數據項目的架構設計與實施方案
http://www.360doc.com/content/17/0603/22/22712168_659649698.shtml

相關文檔

Hadoop-10-years
鏈接:http://pan.baidu.com/s/1nvBppQ5 密碼:7i7m

Hadoop權威指南
鏈接:http://pan.baidu.com/s/1skJEzj3 密碼:0ryw

Hadoop實戰
鏈接:http://pan.baidu.com/s/1dEQi29V 密碼:ddc7

Hadoop源代碼分析
鏈接:http://pan.baidu.com/s/1bp8RTcN 密碼:ju63

Spark最佳學習路徑
鏈接:http://pan.baidu.com/s/1i5MmJVv 密碼:qfbt

深入理解大數據+大數據處理與編程實踐
鏈接:http://pan.baidu.com/s/1dFq6OSD 密碼:7ggl

版權聲明:
作者:虛無境
博客園出處:http://www.cnblogs.com/xuwujing
CSDN出處:http://blog.csdn.net/qazwsxpcm    
個人博客出處:http://www.panchengming.com
原創不易,轉載請標明出處,謝謝!

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