為了滿足日益增長的業(yè)務變化,京東的京麥團隊在京東大數(shù)據(jù)平臺的基礎上,采用了Hadoop等熱門的開源大數(shù)據(jù)計算引擎,打造了一款為京東運營和產(chǎn)品提供決策性的數(shù)據(jù)類產(chǎn)品-北斗平臺。
一、Hadoop的應用業(yè)務分析
大數(shù)據(jù)是不能用傳統(tǒng)的計算技術(shù)處理的大型數(shù)據(jù)集的集合。它不是一個單一的技術(shù)或工具,而是涉及的業(yè)務和技術(shù)的許多領域。
目前主流的三大分布式計算系統(tǒng)分別為:Hadoop、Spark和Strom:
-
Hadoop當前大數(shù)據(jù)管理標準之一,運用在當前很多商業(yè)應用系統(tǒng)?梢暂p松地集成結(jié)構(gòu)化、半結(jié)構(gòu)化甚至非結(jié)構(gòu)化數(shù)據(jù)集。
-
Spark采用了內(nèi)存計算。從多迭代批處理出發(fā),允許將數(shù)據(jù)載入內(nèi)存作反復查詢,此外還融合數(shù)據(jù)倉庫,流處理和圖形計算等多種計算范式。Spark構(gòu)建在HDFS上,能與Hadoop很好的結(jié)合。它的RDD是一個很大的特點。
-
Storm用于處理高速、大型數(shù)據(jù)流的分布式實時計算系統(tǒng)。為Hadoop添加了可靠的實時數(shù)據(jù)處理功能
Hadoop是使用Java編寫,允許分布在集群,使用簡單的編程模型的計算機大型數(shù)據(jù)集處理的Apache的開源框架。 Hadoop框架應用工程提供跨計算機集群的分布式存儲和計算的環(huán)境。 Hadoop是專為從單一服務器到上千臺機器擴展,每個機器都可以提供本地計算和存儲。
Hadoop適用于海量數(shù)據(jù)、離線數(shù)據(jù)和負責數(shù)據(jù),應用場景如下:
場景1:數(shù)據(jù)分析,如京東海量日志分析,京東商品推薦,京東用戶行為分析
場景2:離線計算,(異構(gòu)計算+分布式計算)天文計算
場景3:海量數(shù)據(jù)存儲,如京東的存儲集群
基于京麥業(yè)務三個實用場景
都屬于離線數(shù)據(jù),決定采用Hadoop作為京麥數(shù)據(jù)類產(chǎn)品的數(shù)據(jù)計算引擎,后續(xù)會根據(jù)業(yè)務的發(fā)展,會增加Storm等流式計算的計算引擎,下圖是京麥的北斗系統(tǒng)架構(gòu)圖:
(圖一)京東北斗系統(tǒng)
二、淺談Hadoop的基本原理
Hadoop分布式處理框架核心設計
HDFS :(Hadoop Distributed File System)分布式文件系統(tǒng)
MapReduce: 是一種計算模型及軟件架構(gòu)
2.1 HDFS
HDFS(Hadoop File System),是Hadoop的分布式文件存儲系統(tǒng)。
將大文件分解為多個Block,每個Block保存多個副本。提供容錯機制,副本丟失或者宕機時自動恢復。默認每個Block保存3個副本,64M為1個Block。將Block按照key-value映射到內(nèi)存當中。
(圖二)數(shù)據(jù)寫入HDFS
(圖三)HDFS讀取數(shù)據(jù)
2.2 MapReduce
MapReduce是一個編程模型,封裝了并行計算、容錯、數(shù)據(jù)分布、負載均衡等細節(jié)問題。MapReduce實現(xiàn)最開始是映射map,將操作映射到集合中的每個文檔,然后按照產(chǎn)生的鍵進行分組,并將產(chǎn)生的鍵值組成列表放到對應的鍵中。化簡(reduce)則是把列表中的值化簡成一個單值,這個值被返回,然后再次進行鍵分組,直到每個鍵的列表只有一個值為止。這樣做的好處是可以在任務被分解后,可以通過大量機器進行并行計算,減少整個操作的時間。但如果你要我再通俗點介紹,那么,說白了,Mapreduce的原理就是一個分治算法。
算法:
MapReduce計劃分三個階段執(zhí)行,即映射階段,shuffle階段,并減少階段。
映射階段:映射或映射器的工作是處理輸入數(shù)據(jù)。一般輸入數(shù)據(jù)是在文件或目錄的形式,并且被存儲在Hadoop的文件系統(tǒng)(HDFS)。輸入文件被傳遞到由線映射器功能線路。映射器處理該數(shù)據(jù),并創(chuàng)建數(shù)據(jù)的若干小塊。
減少階段:這個階段是:Shuffle階段和Reduce階段的組合。減速器的工作是處理該來自映射器中的數(shù)據(jù)。處理之后,它產(chǎn)生一組新的輸出,這將被存儲在HDFS。
(圖四)MapReduce
2.3 HIVE
hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務進行運行,這套SQL 簡稱HQL。使不熟悉mapreduce 的用戶很方便的利用SQL 語言查詢,匯總,分析數(shù)據(jù)。而mapreduce開發(fā)人員可以把己寫的mapper 和reducer 作為插件來支持Hive 做更復雜的數(shù)據(jù)分析。
(圖五)HIVE體系架構(gòu)圖
由上圖可知,hadoop和mapreduce是hive架構(gòu)的根基。Hive架構(gòu)包括如下組件:CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor)。
三、Hadoop走過來的那些坑
進行HIVE操作的時候,HQL寫的不當,容易造成數(shù)據(jù)傾斜,大致分為這么幾類:空值數(shù)據(jù)傾斜、不同數(shù)據(jù)類型關(guān)聯(lián)產(chǎn)生數(shù)據(jù)傾斜和Join的數(shù)據(jù)偏斜。只有理解了Hadoop的原理,熟練使用HQL,就會避免數(shù)據(jù)傾斜,提高查詢效率。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務領域、行業(yè)應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業(yè)務領域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領域,是眾多中小企業(yè)信息化建設首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標題:基于Hadoop大數(shù)據(jù)分析應用場景與實戰(zhàn)
本文網(wǎng)址:http://www.ezxoed.cn/html/support/11121521064.html