大數據技術概況

 

大數據時代的帶來意味着咱們生活水平的提升算法

大數據時代的三次浪潮?數據庫

  在1980年左右,我的計算機開始出現相對來講信息能夠更好的處理了。編程

  在1995年左右,互聯網開始普及,爲用戶之間的信息傳輸帶來了很大的便利。安全

  到了2010年,信息量開始爆炸,因此出現了物聯網,雲計算,大數據等熱門行業。網絡

是什麼在背後支撐着大數據統領整個世紀呢?數據結構

  一個是存儲量增大,另外一個是CPU計算能力的提升,還有一方面是咱們網絡寬帶速度的增長。架構

說到這裏,那什麼是大數據呢?框架

這裏用四化來歸納。機器學習

  大量化:數據量的大大增長數據結構和算法

  多樣化:數據的類型多樣,也能夠泛泛統稱爲結構化數據和非結構化數據。

  價值化:價值密度低可是商業價值高好比說在一個監控視頻中,可能說有用的數據就那一兩秒可是商業價值很大。

  快速化:數據的處理速度很是之快。

 

大數據技術層面分解:

  數據採集:利用工具將數據進行抽取,轉換最終加載到數據倉庫或數據集市中,固然也能夠獲取實時採集的數據進行實時處理分析。

  數據存儲管理:利用分佈式文件系統,數據倉庫,關係型數據庫等對數據進行存儲管理。

  數據處理分析:利用分佈式並行計算結合數據結構和算法對海良數據進行處理分析。最終對數據進行可視化方便人們更好的理解分析數據。

  數據隱私和安全:創建隱私數據保護體系來保護我的隱私和數據安全。

 

              兩大核心技術(重點):

  分佈式存儲                                                                              分佈式計算

  GFS/HDFS                    

  HBase                        MapReduce

  NoSQL(鍵值,圖形,文檔數據庫)

  NewSQL

大數據計算分爲幾種方式?

  

現在比較火熱的大數據技術有哪些?

  Hadoop,Spark,Flink,Beam等等

Hadoop是什麼鬼?

  Hadoop是一個開源框架,可編寫和運行分佈式應用處理大規模數據。 Hadoop框架的核心是HDFS和MapReduce。其中 HDFS 是分佈式文件系統,MapReduce 是分佈式數據處理模型和執行環境。

Hadoop2.0生態系統以下:

Hadoop的核心:

HDFS(分佈式存儲)

  開源於Google的GFS。它是一個高度容錯的系統,能檢測和應對硬件故障,用於在低成本的通用硬件上運行。底層自行百度吧

Mapreduce(分佈式計算框架)

 全稱Hadoop MapReduce,用以進行大數據量的計算。其中Map對數據集上的獨立元素進行指定的操做,生成鍵-值對形式中間結果。
 
================================map端=================================
  輸入數據進行分片以後,分片的大小跟原始的文件大小、文件塊的大小有關。每個分片對應的一個map任務。 

map任務在執行的過程當中,會將結果存放到內存當中,當內存佔用達到必定的閾值(這個閾值是能夠設置的)時,map會將中間的結果寫入到本地磁盤上,造成臨時文件這個過程叫作溢寫。 
map在溢寫的過程當中,會根據指定reduce任務個數分別寫到對應的分區當中,這就是partition過程。每個分區對應的是一個reduce任務。而且在寫的過程當中,進行相應的排序。在溢寫的過程當中還能夠設置conbiner過程,該過程跟reduce產生的結果應該是一致的,所以該過程應用存在必定的限制,須要慎用。 
每個map端最後都只存在一個臨時文件做爲reduce的輸入,所以會對中間溢寫到磁盤的多個臨時文件進行合併Merge操做。最後造成一個內部分區的一個臨時文件。

==============================Reduce======================================

首先要實現數據本地化,須要將遠程節點上的map輸出複製到本地。 
Merge過程,這個合併過程主要是對不一樣的節點上的map輸出結果進行合併。 
不斷的複製和合並以後,最終造成一個輸入文件。Reduce將最終的計算結果存放在HDFS上。 
針對MR2是新一代的MR的API。其主要是運行在Yarn的資源管理框架上。

 

Yarn(資源管理框架)

YARN (Yet Another Resource Negotiator,另外一種資源協調者)。它是一種資源調度和管理框架,通俗的來講就是分配底層CPU和內存資源。它的引入爲集羣在利用率、資源統一管理和數據共享等方面帶來了巨大好處。

Sqoop(數據同步工具)

Sqoop是SQL-to-Hadoop的縮寫,主要用於傳統數據庫和Hadoop之間傳輸數據。

Mahout(數據挖掘算法庫)

她其實就是一個包含了機器學習算法的學習庫。

Hbase(分佈式列存數據庫)

HBase是Google Bigtable克隆版,HBase是一個針對結構化數據的可伸縮、高可靠、高性能、分佈式和麪向列的動態模式數據庫。

Zookeeper(分佈式協做服務)

主要解決分佈式環境下的數據管理問題:統一命名,狀態同步,集羣管理,配置同步等。 

Pig(基於Hadoop的數據流系統)

雅虎開源,他主要是對數據流的處理。

Hive(基於Hadoop的數據倉庫)

facebook開源,Hive定義了一種相似SQL的查詢語言(HQL),將SQL轉化爲MapReduce任務在Hadoop上執行,提供了很大的便利。

Flume(日誌收集工具)

Flume是一個可擴展、適合複雜環境的海量日誌收集系統。

Storm

  Storm能夠方便地在一個計算機集羣中編寫與擴展複雜的實時計算,Storm用於實時處理,就比如 Hadoop 用於批處理。Storm保證每一個消息都會獲得處理,並且它很快——在一個小集羣中,每秒能夠處理數以百萬計的消息。更棒的是你可使用任意編程語言來作開發。

 

Spark

首先附上一張架構圖:

主件介紹:  

SparkCore:將分佈式數據抽象爲彈性分佈式數據集(RDD),實現了應用任務調度、RPC、序列化和壓縮,併爲運行在其上的上層組件提供API。

SparkSQL:Spark Sql 是Spark來操做結構化數據的程序包,可讓我使用SQL語句的方式來查詢數據,Spark支持 多種數據源,包含Hive表,parquest以及JSON等內容。

SparkStreaming: 是Spark提供的實時數據進行流式計算的組件。

MLlib:提供經常使用機器學習算法的實現庫。

GraphX:提供一個分佈式圖計算框架,能高效進行圖計算。

BlinkDB:用於在海量數據上進行交互式SQL的近似查詢引擎。

Tachyon:之內存爲中心高容錯的的分佈式文件系統。

 

爲何會出現spark?

  你們確定知道在2016年左右不少公司紛紛轉向spark,爲何呢?這是由於spark在Hadoop的基礎上作了不少的改善,能夠說是Hadoop升級版。

在Hadoop中會存在一些缺點例如:

  表達能力差

  磁盤IO開銷大

  延遲高

spark:

中間結果輸出:基於MapReduce的計算引擎一般會將中間結果輸出到磁盤上,進行存儲和容錯。出於任務管道承接的,考慮,當一些查詢翻譯到MapReduce任務時,每每會產生多個Stage,而這些串聯的Stage又依賴於底層文件系統(如HDFS)來存儲每個Stage的輸出結果。

Spark是MapReduce的替代方案,並且兼容HDFS、Hive,可融入Hadoop的生態系統,以彌補MapReduce的不足。

 

它的一些應用場景:

Yahoo將Spark用在Audience Expansion中的應用,進行點擊預測和即席查詢等
淘寶技術團隊使用了Spark來解決屢次迭代的機器學習算法、高計算複雜度的算法等。應用於內容推薦、社區發現等 騰訊大數據精準推薦藉助Spark快速迭代的優點,實現了在「數據實時採集、算法實時訓練、系統實時預測」的全流程實時並行高維算法,最終成功應用於廣點通pCTR投放系統上。 優酷土豆將Spark應用於視頻推薦(圖計算)、廣告業務,主要實現機器學習、圖計算等迭代計算。
相關文章
相關標籤/搜索