大資料和Hadoop平臺介紹

MySQL從刪庫到跑路了 發表於 2020-11-22
Hadoop

大資料和Hadoop平臺介紹

定義

大資料是指其大小和複雜性無法通過現有常用的工具軟體,以合理的成本,在可接受的時限內對其進行捕獲、管理和處理的資料集。這些困難包括資料的收入、儲存、搜尋、共享、分析和視覺化。大資料要滿足三個基本特徵(3V),資料量(volume)、資料多樣性(variety)和高速(velocity)。資料量指大資料要處理的資料量一般達到TB甚至PB級別。資料多樣性指處理的資料包括結構化資料、非結構化資料(視訊、音訊、網頁)和半結構化資料(xml、html)。高速指大資料必須能夠快速流入並且能得到快速處理。

大資料發展背景

資料爆炸。伴隨資訊科技的應用,全球資料量呈幾何級數增長。過去幾年間的資料總量超過了人類歷史上的資料總和。晶片、攝像頭、各自感測器遍佈世界各個角落,原本不能被感知的事物都可以被監測。軟硬體技術的不斷進步,也為處理大資料創造的條件。

大資料的應用領域

  • 在公共領域,跨部門提供大資料服務,能大幅減少檢索和處理時間。提高公共服務的效率。
  • 企業通過收集產品在使用中產生的海量資料,進行分析,可以改善產品效能。
  • 大資料能幫助企業對使用者進行更加細化的區分,並針對使用者的不同需求提供個性化的服務。這是營銷和危機管理常用的辦法。
  • 利用自動化演算法支援或替代人工決策。對大資料的分析能極大改善決策效果,降低風險,並挖掘出其他方法無法發現的寶貴資訊。
  • 商業模式、產品與服務創新。Netflix根據大資料分析結果,製作《紙牌屋》。

大資料研究課題

  1. 資料獲取問題。包括哪些資料需要儲存,哪些資料需要丟棄,如何可靠的儲存我們需要的資料。
  2. 資料結構問題。微博部落格是沒有結構的資料,影像和視訊在儲存和顯示方面具有結構,但是無法包含語義資訊進行檢索。如果將沒有語義的內容轉換為結構化的格式,並進行後續處理,是需要面對的另一項挑戰。
  3. 資料整合問題。不同來源資料之間進行關聯,才能充分發揮資料的作用。
  4. 資料分析、組織、抽取和建模
  5. 如何呈現分析結果

科技公司大資料產品

  • 谷歌:MapReduce
  • IBM:InfoSphere大資料分析平臺
  • SAS:高效能分析伺服器和SAS DataFlux資料流處理引擎
  • EMC:Greenplum 支援海量並行處理
  • Teradata:Aster Data 基於MapReduce,提供了多種統計軟體包

大資料發展趨勢

  • 資料資源化。大資料成為企業和社會關注的重要戰略資源,並已經成為大家爭相搶奪的焦點。
  • 與雲端計算深度結合。大資料離不開雲處理,雲處理為大資料提供彈性可擴充的基礎服務。
  • 帶動科學理論的突破。帶動資料探勘、機器學習、人工智慧和資料科學等相關技術的發展。

大資料處理一般步驟

  1. 資料的收集。
    第一個方式是抓取或者爬取。例如搜尋引擎就是這麼做的:它把網上的所有的資訊都下 載到它的資料中心,然後你一搜才能搜出來。
    第二個方式是推送,有很多終端可以幫我收集資料。比如說小米手環,可以將你每天跑 步的資料,心跳的資料,睡眠的資料都上傳到資料中心裡面。

  2. 資料的傳輸
    一般會通過佇列方式進行,因為資料量實在是太大了,資料必須經過處理才會有用。可系統處理不過來,只好排好隊,慢慢處理。

  3. 資料的儲存
    儲存要確保安全,不易丟失,高容錯性。

  4. 資料的處理和分析
    儲存的資料是原始資料,原始資料多是雜亂無章的,有很多垃圾資料在裡面,因而需要清洗和過濾,得到一些高質量的資料。對於高質量的資料,就可以進行分析,從而對資料進行分類,或者發現資料之間的相互關係,得到知識。

  5. 資料的檢索和挖掘
    使想要的資訊容易被搜尋到。挖掘資訊之間的相互關係。

開源框架

因為大資料的這些特點,針對其收集、傳輸、儲存、處理分析和檢索使用產生了許多開源框架。

功能 框架
檔案儲存 Hadoop HDFS、Tachyon、KFS
離線計算 Hadoop MapReduce、Spark
流式、實時計算 Storm、Spark Streaming、S4、Heron
K-V、NOSQL資料庫 HBase、Redis、MongoDB
資源管理 YARN、Mesos
日誌收集 Flume、Scribe、Logstash、Kibana
訊息系統 Kafka、StormMQ、ZeroMQ、RabbitMQ
查詢分析 Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid
分散式協調服務 Zookeeper
叢集管理與監控 Ambari、Ganglia、Nagios、Cloudera Manager
資料探勘、機器學習 Mahout、Spark MLLib
資料同步 Sqoop
任務排程 Oozie

一般大資料平臺的框架如下圖
大資料和Hadoop平臺介紹
Hadoop HDFS和Hadoop MapReduce作為大資料儲存和處理的開山鼻祖,大資料平臺上都處於核心位置。下面介紹一下兩個框架的基本原理。

Hadoop HDFS基本原理

HDFS全稱Hadoop Distributed File System。HDFS是一個分散式檔案系統,可以部署在一個伺服器叢集上。Java語言開發,可以部署在任何支撐java的機器上。
HDFS有幾個基本概念NameNode、DataNode和block。
NameNode負責整個分散式檔案系統的後設資料管理,也就是檔案路徑名,資料block的ID以及儲存位置等資訊。還要記錄一些事情,比如哪些節點是叢集的一部分,某個block有幾份副本等。
大資料和Hadoop平臺介紹
DataNode是實際儲存檔案資料的節點。DataNode會通過心跳和NameNode保持通訊,如果DataNode超時未傳送心跳,NameNode就會認為這個DataNode已經失效,立即查詢這個DataNode上儲存的block有哪些,以及這些block還儲存在哪些伺服器上,隨後通知這些伺服器再複製一份block到其他伺服器上,保證HDFS儲存的block備份數符合使用者設定的數目,即使再有伺服器當機,也不會丟失資料。
大資料和Hadoop平臺介紹
Block是HDFS中的儲存單元,檔案被寫入HDFS時,會被切分成多個block塊,預設的塊大小是128MB,每個資料塊預設會有三個副本。
大資料和Hadoop平臺介紹
資料寫入:首先將檔案分成多個block,每個block會被寫入三個DataNode中,寫入哪三個DataNode中是由NameNode指定的,寫入完成,NameNode會記錄這些資訊。同一個檔案中不同的block可能會被寫入完全不同的DataNode中。
大資料和Hadoop平臺介紹
資料讀取:資料讀取時按block讀取。每一個block時,會從NameNode獲取資訊,知道從哪個DataNode中讀取,一般是就近原則。所有該檔案的block讀取完成,構成完整的檔案。
客戶端和Datanode是同一個機器:距離為0 ,表示最近
客戶端和Datanode是同一個機架的不同機器 :距離為2 ,稍微遠一點
客戶端和Datanode位於同一個資料中心的不同機架上 :距離為4,更遠一點

Hadoop MapReduce基本原理

Hadoop MapReduce是一個分散式計算框架,其中的運算都可以在多個機器上並行進行。使用者只需要完成運算本身的編碼,不需要關心平行計算的底層細節。
MapReduce背後的思想很簡單,就是把一些資料通過Map來歸類,通過Reduce來把同一類的資料進行處理。Map和reduce的過程都是利用叢集的計算能力並行執行的。計算模型的核心是Map和Reduce函式,兩個函式由使用者自行實現。
大資料和Hadoop平臺介紹
把原始大資料集切割成小資料集時,通常小資料集小於等於HDFS的一個block的大小,這樣一個小資料集位於一個物理機上,便於本地計算。Map和reduce各自的啟動任務數量可以由使用者指定。
大資料和Hadoop平臺介紹
上圖表示一個MapReduce統計單詞出現次數的過程,原始資料分割為4個子檔案,對每個子檔案按照使用者的Map函式會產生<單詞, 出現次數>的<k2,v2>形式的結果。然後把相同單詞的<k2,v2>組合在一起構成<k2,List(v2)>的形式,作為Reduce函式的輸入,相同的k2一定分發給相同的Reduce任務處理,例如單詞lorem的所有計算都由第一個Reduce任務來完成。按照這個思想,即使要統計的檔案數量上千萬個,單詞數量有幾千個,但是通過MapReduce框架,只要叢集機器數量夠多,也是可以在可接受時間內計算完成的。

大資料行業應用

  • 網際網路:定向廣告、使用者行為分析、內容推薦、搜尋引擎優化
  • 金融:反洗錢、反欺詐、客戶價值分析、目標市場客戶聚類、償還能力預測、股票投資組合趨勢分析
  • 電信:業務設計優化、客戶流失預測、網路質量優化
  • 醫療衛生:臨床資料比對、決策支援、就診行為分析、疾病模式分析
  • 公共安全:嫌疑人行為預測分析、恐怖活動檢測、危險性分析、關係人分析
  • 智慧交通:整個感測器、GPS和健康視訊等裝置產生的海量資料,結合氣象監測裝置的天氣狀況資料、人口分佈資料、行動通訊資料,實現智慧公共交通。

推廣使用面臨的挑戰

  • 少數機構對資料絕對壟斷,大部分資料集中在這些機構內部。就像罕見病資料,只有通過共享機制和平臺,才能為患者提供幫助。
  • 大資料應用應該以尊重使用者隱私為前提,同時如何兼顧資料的開放和創新,是大資料行業面臨的一個重要問題。企業通過大資料來理解使用者的特點和需求,需要充分尊重他們的隱私權。
  • 現有的大資料架構無法保證資料本身不被篡改,因而限制了需要建立信任和確權的應用場景。諸如信用類的資料,如果沒有辦法確保資料的真實有效性,則很難運用在相關機構的決策流程中。