基於Hadoop大資料分析應用場景與實戰

gb4215287發表於2017-10-10

為了滿足日益增長的業務變化,京東的京麥團隊在京東大資料平臺的基礎上,採用了Hadoop等熱門的開源大資料計算引擎,打造了一款為京東運營和產品提供決策性的資料類產品-北斗平臺。

一、Hadoop的應用業務分析

大資料是不能用傳統的計算技術處理的大型資料集的集合。它不是一個單一的技術或工具,而是涉及的業務和技術的許多領域。

目前主流的三大分散式計算系統分別為Hadoop、Spark和Strom:

  • Hadoop當前大資料管理標準之一,運用在當前很多商業應用系統。可以輕鬆地整合結構化、半結構化甚至非結構化資料集。
  • Spark採用了記憶體計算。從多迭代批處理出發,允許將資料載入記憶體作反覆查詢,此外還融合資料倉儲,流處理和圖形計算等多種計算正規化。Spark構建在HDFS上,能與Hadoop很好的結合。它的RDD是一個很大的特點。
  • Storm用於處理高速、大型資料流的分散式實時計算系統。為Hadoop新增了可靠的實時資料處理功能。

Hadoop是使用Java編寫,允許分佈在叢集,使用簡單的程式設計模型的計算機大型資料集處理的Apache的開源框架。 Hadoop框架應用工程提供跨計算機叢集的分散式儲存和計算的環境。 Hadoop是專為從單一伺服器到上千臺機器擴充套件,每個機器都可以提供本地計算和儲存。

Hadoop適用於海量資料、離線資料和負責資料,應用場景如下:

  • 場景1:資料分析,如京東海量日誌分析,京東商品推薦,京東使用者行為分析
  • 場景2:離線計算,(異構計算+分散式計算)天文計算
  • 場景3:海量資料儲存,如京東的儲存叢集

基於京麥業務三個實用場景:

  • 京麥使用者分析
  • 京麥流量分析
  • 京麥訂單分析

都屬於離線資料,決定採用Hadoop作為京麥資料類產品的資料計算引擎,後續會根據業務的發展,會增加Storm等流式計算的計算引擎,下圖是京麥的北斗系統架構圖:

圖片描述
圖一 京東北斗系統

二、淺談Hadoop的基本原理

Hadoop分散式處理框架核心設計:

  • HDFS:(Hadoop Distributed File System)分散式檔案系統;
  • MapReduce:是一種計算模型及軟體架構。

2.1 HDFS

HDFS(Hadoop File System),是Hadoop的分散式檔案儲存系統。

將大檔案分解為多個Block,每個Block儲存多個副本。提供容錯機制,副本丟失或者當機時自動恢復。預設每個Block儲存3個副本,64M為1個Block。將Block按照key-value對映到記憶體當中。

圖片描述
圖二 資料寫入HDFS
圖片描述
圖三 HDFS讀取資料

2.2 MapReduce

MapReduce是一個程式設計模型,封裝了平行計算、容錯、資料分佈、負載均衡等細節問題。MapReduce實現最開始是對映map,將操作對映到集合中的每個文件,然後按照產生的鍵進行分組,並將產生的鍵值組成列表放到對應的鍵中。化簡(reduce)則是把列表中的值化簡成一個單值,這個值被返回,然後再次進行鍵分組,直到每個鍵的列表只有一個值為止。這樣做的好處是可以在任務被分解後,可以通過大量機器進行平行計算,減少整個操作的時間。但如果你要我再通俗點介紹,那麼,說白了,Mapreduce的原理就是一個分治演算法。

  • MapReduce計劃分三個階段執行,即對映階段,shuffle階段,並減少階段。
  • 對映階段:對映或對映器的工作是處理輸入資料。一般輸入資料是在檔案或目錄的形式,並且被儲存在Hadoop的檔案系統(HDFS)。輸入檔案被傳遞到由線對映器功能線路。對映器處理該資料,並建立資料的若干小塊。
  • 減少階段:這個階段是:Shuffle階段和Reduce階段的組合。減速器的工作是處理該來自對映器中的資料。處理之後,它產生一組新的輸出,這將被儲存在HDFS。
圖片描述
圖四 MapReduce

2.3 HIVE

hive是基於Hadoop的一個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供完整的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行,這套SQL 簡稱HQL。使不熟悉mapreduce 的使用者很方便的利用SQL 語言查詢,彙總,分析資料。而mapreduce開發人員可以把己寫的mapper 和reducer 作為外掛來支援Hive 做更復雜的資料分析。

圖片描述
圖五 HIVE體系架構圖

由上圖可知,hadoop和mapreduce是hive架構的根基。Hive架構包括如下元件:CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor)。

三、Hadoop走過來的那些坑

進行HIVE操作的時候,HQL寫的不當,容易造成資料傾斜,大致分為這麼幾類:空值資料傾斜、不同資料型別關聯產生資料傾斜和Join的資料偏斜。只有理解了Hadoop的原理,熟練使用HQL,就會避免資料傾斜,提高查詢效率。

本文轉載自linkedkeeper.com。作者王雷,2016年加入京東,負責京東京麥團隊的大資料分析和京麥閘道器。


來源:http://geek.csdn.net/news/detail/238565

相關文章