基於Hadoop大資料分析應用場景與實戰
為了滿足日益增長的業務變化,京東的京麥團隊在京東大資料平臺的基礎上,採用了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
相關文章
- 基於大資料的精準營銷與應用場景大資料
- 工業大資料應用場景分析大資料
- 大資料應用場景之戰-行業篇大資料行業
- 雲資料庫HBase大資料儲存及實時分析場景應用解析資料庫大資料
- 關於Redis資料型別以及應用場景的分析與總結Redis資料型別
- HTAP資料庫及應用場景分析資料庫
- 【實操】小程式的應用場景分析——線下場景應用
- 轉帖:Hadoop的十大應用場景Hadoop
- 《Hadoop+Spark大資料分析實戰》簡介HadoopSpark大資料
- 基於使用者角色的資料庫智慧監控系統應用場景分析資料庫
- 大資料應用於市場與使用者研究大資料
- Redis的資料結構與應用場景Redis資料結構
- 大資料分析在公安實戰中的應用(前言)大資料
- zookeeper-操作與應用場景-《每日五分鐘搞定大資料》大資料
- Flutter - IOT領域應用場景實戰Flutter
- 基於python的大資料分析-資料處理(程式碼實戰)Python大資料
- 雲審計與大資料審計:區別、優勢與應用場景大資料
- 基於Apache Hudi構建資料湖的典型應用場景介紹Apache
- 基於python的大資料分析實戰學習筆記-pandas(資料分析包)Python大資料筆記
- 大資料分析的應用與弊端大資料
- 基於python的大資料分析-pandas資料讀取(程式碼實戰)Python大資料
- 基於python的大資料分析-pandas資料儲存(程式碼實戰)Python大資料
- CSDN周賽第37期:贏《Pandas入門與實戰應用 :基於Python的資料分析與處理》Python
- 大資料之hadoop / hive / hbase 的區別是什麼?有什麼應用場景?大資料HadoopHive
- 使用者畫像分析與場景應用
- 大資料分析: SAP Sybase IQ功能特性及適用場景大資料
- 文字挖掘和文字分析的九大應用場景
- 圖資料庫及應用場景資料庫
- 遙感大資料智慧分析與應用大資料
- 流式圖計算在螞蟻大資料場景的應用大資料
- 基於Serverless架構最新應用場景詳解Server架構
- 如何使用HBase?大資料儲存的兩個實戰場景大資料
- 深入 Python 資料分析:高階技術與實戰應用Python
- 基於雲邊協同架構的五大應用場景革新架構
- GitChat · 大資料 | 一步一步學習大資料:Hadoop 生態系統與場景Git大資料Hadoop
- 敏捷資料科學:用Hadoop建立資料分析應用敏捷資料科學Hadoop
- 基於python的大資料分析實戰學習筆記-AnacondaPython大資料筆記
- 一篇文章詳解大資料技術和應用場景 大資料大資料