大資料經典學習路線(及供參考)

金羅老師發表於2018-11-24

1.Linux基礎和分散式叢集技術

學完此階段可掌握的核心能力:


熟練使用linux,熟練安裝Linux上的軟體,瞭解熟悉負載均衡、高可靠等叢集相關概念,搭建網際網路高併發、高可靠的服務架構


學完此階段可解決的現實問題:


搭建負載均衡、高可靠的伺服器叢集,可以增大網站的併發訪問量,保證服務不間斷地對外服務;


學完此階段可擁有的市場價值:


具備初級程式設計師必要具備的Linux伺服器運維能力。


1.內容介紹:


大資料領域,使用最多的作業系統就是Linux系列,並且幾乎都是分散式叢集。該課程為大資料的基礎課程,主要介紹Linux作業系統、Linux常用命令、Linux常用軟體安裝、Linux網路、防火牆、Shell程式設計等。


2.案例:搭建網際網路高併發、高可靠的服務架構。


2.離線計算系統課程階段

1. 離線計算系統課程階段


Hadoop核心技術框架


學完此階段可掌握的核心能力:


1、通過對大資料技術產生的背景和行業應用案例瞭解hadoop的作用;2、掌握hadoop底層分散式檔案系統HDFS的原理、操作和應用開發;3、掌握MAPREDUCE分散式運算系統的工作原理和分散式分析應用開發;4、掌握Hive資料倉儲工具的工作原理及應用開發。


學完此階段可解決的現實問題:


1、熟練搭建海量資料離線計算平臺;2、根據具體業務場景設計、實現海量資料儲存方案;3、根據具體資料分析需求實現基於mapreduce的分散式運算程式;


學完此階段可擁有的市場價值:


具備企業資料部初級應用開發人員的能力



1.1 HADOOP快速入門


1.1.1 hadoop知識背景


什麼是hadoop、hadoop產生背景、hadoop在大資料雲端計算中的位置和關係、國內hadoop的就業情況分析及課程大綱介紹


國內外hadoop應用案例介紹


分散式系統概述、hadoop生態圈及各組成部分的簡介


1.1.2 hive快速入門


hive基本介紹、hive的使用、資料倉儲基本知識


1.1.3 資料分析流程案例


web點選流日誌資料探勘的需求分析、資料來源、處理流程、資料分析結果匯出、資料展現


1.1.4 hadoop資料分析系統叢集搭建


叢集簡介、伺服器介紹、網路環境設定、伺服器系統環境設定、JDK環境安裝、hadoop叢集安裝部署、叢集啟動、叢集狀態測試


HIVE的配置安裝、HIVE啟動、HIVE使用測試


1.2 HDFS詳解


1.2.1 HDFS的概念和特性


什麼是分散式檔案系統、HDFS的設計目標、HDFS與其他分散式儲存系統的優劣勢比較、HDFS的適用場景


1.2.2 HDFS的shell操作


HDFS命令列客戶端啟動、HDFS命令列客戶端的基本操作、命令列客戶端支援的常用命令、常用引數介紹


1.2.3 HDFS的工作機制


HDFS系統的模組架構、HDFS寫資料流程、HDFS讀資料流程


NAMENODE工作機制、後設資料儲存機制、後設資料手動檢視、後設資料checkpoint機制、NAMENODE故障恢復、DATANODE工作機制、DATANODE動態增減、全域性資料負載均衡


1.2.4 HDFS的Java應用開發


搭建開發環境、獲取api中的客戶端物件、HDFS的java客戶端所具備的常用功能、HDFS客戶端對檔案的常用操作實現、利用HDFS的JAVA客戶端開發資料採集和儲存系統


1.3 MAPREDUCE詳解


1.3.1 MAPREDUCE快速上手


為什麼需要MAPREDUCE、MAPREDUCE程式執行演示、MAPREDUCE程式設計示例及程式設計規範、MAPREDUCE程式執行模式、MAPREDUCE程式除錯debug的幾種方式


1.3.2 MAPREDUCE程式的執行機制


MAPREDUCE程式執行流程解析、MAPTASK併發數的決定機制、MAPREDUCE中的combiner元件應用、MAPREDUCE中的序列化框架及應用、MAPREDUCE中的排序、MAPREDUCE中的自定義分割槽實現、MAPREDUCE的shuffle機制、MAPREDUCE利用資料壓縮排行優化、MAPREDUCE程式與YARN之間的關係、MAPREDUCE引數優化


通過以上各元件的詳解,深刻理解MAPREDUCE的核心執行機制,從而具備靈活應對各種複雜應用場景的能力


MAPREDUCE實戰程式設計案例:通過一個實戰案例來熟悉複雜MAPREDUCE程式的開發。該程式是從nginx伺服器產生的訪問伺服器中計算出每個訪客的訪問次數及每次訪問的時長。原始資料樣例如下:


通過一系列的MAPREDUCE程式——清洗、過濾、訪問次數及時間分析,最終計算出需求所要的結果,用於支撐頁面展現:



1.4 HIVE增強


1.4.1 HIVE基本概念


HIVE應用場景、HIVE內部架構、HIVE與hadoop的關係、HIVE與傳統資料庫對比、HIVE的資料儲存機制、HIVE的運算執行機制



1.4.2 HIVE基本操作


HIVE中的DDL操作、HIVE中的DML操作、在HIVE中如何實現高效的JOIN查詢、HIVE的內建函式應用、HIVE shell的高階使用方式、HIVE常用引數配置、HIVE自定義函式和TRANSFORM的使用技巧、HIVE UDF開發例項


1.4.3 HIVE高階應用


HIVE執行過程分析及優化策略、HIVE在實戰中的最佳實踐案例、HIVE優化分類詳解、HIVE實戰案例--資料ETL、HIVE實戰案例--使用者訪問時長統計


HIVE實戰案例--級聯求和報表例項:



離線資料探勘系統


學完此階段可掌握的核心能力:


1、通過對資料倉儲知識的加強初步掌握資料倉儲的核心概念和設計流程;2、通過對HADOOP生態圈關鍵輔助工具的學習掌握hadoop分析系統的整合能力;3、通過電商系統點選流日誌資料探勘系統實戰專案,掌握hadoop離線資料探勘系統從資料採集、入庫、分析及報表展現的整套流程


學完此階段可解決的現實問題:


1、可根據企業具體場景設計海量資料分析系統的通用架構2、根據具體場景的特點有針對性地調整資料分析各環節的技術選型;3、根據具體需求搭建起整套離線資料分析系統;4、簡單資料倉儲模型的設計和架構5、各環節具體功能模組的開發實現


學完此階段可擁有的市場價值:


具備企業資料部中高階應用開發和初級架構師能力



2.1 資料倉儲增強


2.1.1 資料倉儲及資料模型入門


什麼是資料倉儲、資料倉儲的意義、資料倉儲核心概念、資料倉儲的體系結構


2.1.2 資料倉儲設計


建立資料倉儲的步驟、資料的抽取、資料的轉換、資料的載入、什麼是資料模型、資料模型的常見型別、如何設計資料模型、如何選擇資料建模的架構


典型資料模型——星型建模例項


2.1.3 資料倉儲建模樣例


業務建模、領域建模、邏輯建模、物理建模


web點選流日誌分析系統資料倉儲設計實戰:


通過對資料特點和業務需求的分析,關係梳理,設計出一個主題明確、層次合理的資料模型



2.2 離線輔助系統


2.2.1 資料採集系統


資料採集概念介紹


FLUME日誌採集框架介紹、FLUME工作機制、FLUME核心元件、FLUME引數配置說明、FLUME採集nginx日誌實戰案例


2.2.2 任務排程系統


任務排程系統概念介紹、常用任務排程工具比較、OOZIE介紹、OOZIE核心概念、OOZIE的配置說明、OOIZE實現mapreduce/hive等任務排程實戰案例


2.2.3 資料匯出


資料匯出概念介紹、SQOOP基礎知識、SQOOP原理及配置說明、SQOOP資料匯入實戰、SQOOP資料匯出實戰、SQOOP批量作業操作


2.3 web點選流日誌分析系統實戰專案


2.3.1 專案介紹


1. 在PC時代,營銷的核心是購買,在移動網際網路時代,其核心是如何實現使用者個性化互動,對使用者傳播更為精準化的內容,而實現這一核心的基礎就是對資料的管理和分析——資料驅動型商業模型。

2. 各類網際網路服務產品(如網站、APP)都可以通過前端技術獲取使用者的詳細行為資料(如訪問的頁面,點選的區域、登陸的頻次、註冊行為、購買的行為等),將這些點選流日誌資料與後臺商業資料綜合起來,就可以挖掘對公司運營決策意義非凡的商業價值。

3. 本專案則是一個用大資料技術平臺實現的點選流日誌分析資料探勘系統,專案內容涵蓋一個典型資料探勘系統中,包括需求分析、資料採集、資料儲存管理、資料清洗、資料倉儲設計、ETL、業務模型統計分析、資料視覺化的全部流程。


2.3.2 需求分析


什麼是點選流日誌、點選流日誌的商業價值、點選流日誌分析需求

業務模型指標體系設計——流量分析、來源分析、受訪分析、訪客分析、轉化率分析


2.3.3 系統設計及開發


1. 系統架構設計

2. 資料採集設計及開發——資料格式、資料內容分析、資料生成規律、採集系統技術選型解析、FLUME採集系統實現

3. 資料儲存設計及開發——儲存技術選型、儲存業務流程解析、儲存目錄規劃及檔案命名規則、小檔案合併實現

4. 資料統計設計及開發——資料預處理、資料載入、原始資料表的建立、資料入庫、資料ETL

5. 報表統計設計——資料模型設計、事實表設計、維度表梳理

6. 業務指標設計及開發——PV統計(時間維度、終端維度、地域維度)、來訪次數統計(時間維度、地域維度、終端維度)、獨立訪客統計(時間維度、終端維度、地域維度)、受訪頁面統計(時間維度、欄目維度)、頁面熱點圖、轉化率分析、來源關鍵詞分析、來源搜尋引擎分析、來源廣告推廣分析


2.3.4 任務排程系統設計實現


任務排程單元實現、各環節任務執行頻次及依賴關係梳理、工作流設計及實現、工作流定義配置上傳部署、工作流啟動即狀態監控


2.3.5 資料視覺化——結果報表展現


1. hive分析結果使用sqoop匯出到msyql資料庫

2. 報表展現系統技術選型:

後臺使用spingmvc + spring + mybatis

前端頁面使用全靜態非同步重新整理技術jQuery + Echarts

3. web展現程式架構搭建,使用maven構建專案工程

4. web展現程式頁面設計開發:原型頁面設計、js程式碼開發

5. 最終實現以下資料視覺化效果:


(1)流量概況視覺化效果:


(2)來源地域分析視覺化效果:


(3)來源型別分析視覺化效果:


3.Storm實時計算部分階段

實時課程分為兩個部分:流式計算核心技術流式計算計算案例實戰


1.流式計算核心技術


流式計算核心技術主要分為兩個核心技術點:Storm和Kafka,學完此階段能夠掌握Storm開發及底層原理、Kafka的開發及底層原理、Kafka與Storm整合使用。具備開發基於storm實時計算程式的技術能力。


學完此階段可掌握的核心能力:


(1)、理解實時計算及應用場景

(2)、掌握Storm程式的開發及底層原理、掌握Kafka訊息佇列的開發及底層原理

(3)、具備Kafka與Storm整合使用的能力


學完此階段可解決的現實問題:


具備開發基於storm的實時計算程式的能力


學完此階段可擁有的市場價值:


具備實時計算開發的技術能力、但理解企業業務的能力不足



1.1、流式計算一般結構


2011年在海量資料處理領域,Hadoop是人們津津樂道的技術,Hadoop不僅可以用來儲存海量資料,還以用來計算海量資料。因為其高吞吐、高可靠等特點,很多網際網路公司都已經使用Hadoop來構建資料倉儲,高頻使用並促進了Hadoop生態圈的各項技術的發展。一般來講,根據業務需求,資料的處理可以分為離線處理和實時處理,在離線處理方面Hadoop提供了很好的解決方案,但是針對海量資料的實時處理卻一直沒有比較好的解決方案。就在人們翹首以待的時間節點,storm橫空出世,與生俱來的分散式、高可靠、高吞吐的特性,橫掃市面上的一些流式計算框架,漸漸的成為了流式計算的首選框架。如果龐麥郎在的話,他一定會說,這就是我要的滑板鞋!



上圖是流式分析的一般架構圖,抽象出四個步驟就是資料採集、資料緩衝、資料處理、資料輸出。一般情況下,我們採用Flume+kafka+Storm+Redis的結構來進行流式資料分析。實時部分的課程主要是針對Kafka、Storm進行學習


1.2、流式計算可以用來幹什麼


一淘-實時分析系統:實時分析使用者的屬性,並反饋給搜尋引擎。最初,使用者屬性分析是通過每天在雲梯上定時執行的MR job來完成的。為了滿足實時性的要求,希望能夠實時分析使用者的行為日誌,將最新的使用者屬性反饋給搜尋引擎,能夠為使用者展現最貼近其當前需求的結果。

攜程-網站效能監控:實時分析系統監控攜程網的網站效能。利用HTML5提供的performance標準獲得可用的指標,並記錄日誌。Storm叢集實時分析日誌和入庫。使用DRPC聚合成報表,通過歷史資料對比等判斷規則,觸發預警事件。

一個遊戲新版本上線,有一個實時分析系統,收集遊戲中的資料,運營或者開發者可以在上線後幾秒鐘得到持續不斷更新的遊戲監控報告和分析結果,然後馬上針對遊戲的引數和平衡性進行調整。這樣就能夠大大縮短遊戲迭代週期,加強遊戲的生命力。

實時計算在騰訊的運用:精準推薦(廣點通廣告推薦、新聞推薦、視訊推薦、遊戲道具推薦);實時分析(微信運營資料門戶、效果統計、訂單畫像分析);實時監控(實時監控平臺、遊戲內介面呼叫)

為了更加精準投放廣告,阿里媽媽後臺計算引擎需要維護每個使用者的興趣點(理想狀態是,你對什麼感興趣,就向你投放哪類廣告)。使用者興趣主要基於使用者的歷史行為、使用者的實時查詢、使用者的實時點選、使用者的地理資訊而得,其中實時查詢、實時點選等使用者行為都是實時資料。考慮到系統的實時性,阿里媽媽使用Storm維護使用者興趣資料,並在此基礎上進行受眾定向的廣告投放。


1.3、Storm核心技術點


基礎技術點

linux環境準備、zookeeper叢集搭建、Storm叢集搭建、Storm配置檔案配置項講解、叢集搭建常見問題解決。

Storm練習案例


根據螞蟻金服提供的最新資料,今年雙十一的交易峰值為8.59萬筆/秒,是去年3.85萬筆/秒的2.23倍。這一資料也超過了6萬筆/秒的預估。如何實時的計算訂單金額,讓公司領導層看到呢?


(圖為雙十一支付寶成交金額)


Storm基礎及原理


Storm常用元件和程式設計API:Topology、 Spout、Bolt、Storm分組策略(stream groupings)、Storm專案maven環境搭建、使用Strom開發一個WordCount例子、Storm程式本地模式debug、Storm訊息可靠性及容錯原理、Storm任務提交流程、Strom訊息容錯機制。

(圖為storm元件)


1.4、Kafka核心技術點


Storm結合訊息佇列Kafka:訊息佇列基本概念(Producer、Consumer、Topic、Broker等)、訊息佇列Kafka使用場景、Storm結合Kafka程式設計API、Kafka負載均衡、Kafka訊息儲存原理等。


(圖為Kafka訊息佇列原理)

2.流式計算案例實戰


實戰案例部分主要有三個企業實戰案列,分別是基於點選流的日誌分析系統、基於系統日誌的監控告警系統、基於訂單系統的交易風控系統,三個案列是企業中的典型專案。學完此階段能夠獨立根據企業的業務性質開發相關的storm程式。


學完此階段可掌握的核心能力:


1、掌握企業核心業務需求

2、掌握實時系統常見的開發流程及運營經驗


學完此階段可解決的現實問題:


可以獨立開發storm程式來滿足業務需求


學完此階段可擁有的市場價值:


熟練學習和掌握後,可滿足企業開發的初級需求,根據市場反饋資料看,薪資普遍在 15000-18000元/月



2.1、案例:流量日誌分析


流量日誌分析之漏斗模型:大型電商網站,上億規模的使用者,千萬級別的活躍使用者,如何評估一個商品專題頁面的效果好不好呢?比如:瀏覽次數、加入購物車次數、下單次數、支付次數、完成。


(圖為日誌分析漏斗模型-資料部必備)

流量日誌分析之基礎資料分析:電商網上商品數量在千萬級別,店鋪數量在百萬級別,如何實時的計算一個每個商品頁的訪問數、使用者數、來源資訊等基礎資訊呢?如何實時的計算每個店鋪的訪問數、使用者數、來源資訊等基礎資料呢?


(圖為頁面瀏覽分析-資料部必備)


2.2、案例:統一監控告警系統


隨著公司業務發展,支撐公司業務的各種系統越來越多,為了保證公司的業務正常發展,急需要對這些線上系統的執行進行監控,做到問題的及時發現和處理,最大程度減少對業務的影響。不同業務的會有幾十上百臺伺服器去支撐,大型企業可能是成千上萬臺伺服器,那麼每臺伺服器的硬體狀態、業務應用狀態如何實時的監控,做到及時發現,快速解決問題呢?


(圖為企業產生日誌的系統清單)


統一監控系統觸發的簡訊告警


統一監控系統觸發的郵件告警


2.3、案例:交易風控系統


電子商務是以網際網路絡為平臺的貿易新模式,它的一個最大特點是強調參加交易的各方和所合作的夥伴都要通過Internet密切結合起來,共同從事在網路環境下的商業電子化應用。使用者資訊容易受到計算機病毒、黑客的攻擊,商業資訊和資料易於搭截偵聽、口令試探和竊取,為了防止使用者資訊異常給商家和使用者帶來不必要的損失,企業期望針對使用者的訂單進行分析,對觸發規則的訂單進行風險預警,在必要情況下進行攔截及鎖定訂單。


(圖為訂單異常攔截)

4.Spark記憶體計算階段

學完此階段可掌握的核心能力:


1.掌握Scala函數語言程式設計特性,熟練使用scala開發程式,可以看懂其他用Scala編寫原始碼。

2.搭建Spark叢集、使用Scala編寫Spark計算程式,熟練掌握Spark原理,可以閱讀Spark原始碼。

3.理解DataFrame和RDD之間的關係,熟練使用DataFrame的API,熟練使用Spark SQL處理結構化資料,通過Spark SQL對接各種資料來源,並將處理後結果寫回到儲存介質中。

4.理解Spark Streaming的核心DStream,掌握DStream的程式設計API並編寫實時計算程式。


學完此階段可解決的現實問題:


熟練使用Scala快速開發Spark大資料應用,通過計算分析大量資料,挖掘出其中有價值的資料,為企業提供決策依據。


學完此階段可擁有的市場價值:


學習完spark並掌握其內容,將具備中級大資料工程師能力,薪水可以達到 20K~25K。


1.Scala函數語言程式設計


介紹:Scala是一門集物件導向和函數語言程式設計與一身的程式語言,其強大的表達能力、優雅的API、高效的效能等優點受到越來越多程式設計師的青睞。Spark底層就是用Scala語言編寫,如果想徹底掌握Spark,就必須學好Scala。

案例:Scala程式設計實戰,基於Akka框架,編寫一個簡單的分散式RPC通訊框架



2.使用Spark處理離線資料


介紹:Spark是基於記憶體計算的大資料平行計算框架,具有高容錯性和高可伸縮性,可以在大量廉價硬體之上部署大規模叢集,在同等條件下要比Hadoop快10到100倍。



3.使用Spark SQL處理結構化資料


介紹:Spark SQL的前身是Shark,專門用來處理結構化的資料,類似Hive,是將SQL轉換成一系列RDD任務提交到Spark叢集中執行,由於是在記憶體中完成計算,要比hive的效能高很多,並且簡化了開發Spark程式的難度同時提高了開發效率。



4.使用Spark Streaming完成實時計算


介紹:Spark Streaming類似於Apache Storm,用於流式資料的處理。根據其官方文件介紹,Spark Streaming有高吞吐量和容錯能力強等特點。Spark Streaming支援的資料輸入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和簡單的TCP套接字等等。資料輸入後可以用Spark的高度抽象原語如:map、reduce、join、window等進行運算。而結果也能儲存在很多地方,如HDFS,資料庫等。另外Spark Streaming也能和MLlib(機器學習)以及Graphx完美融合



5.Spark綜合專案:


介紹:該專案使用了Spark SQL和Spark Streaming對遊戲整個生命週期產生的資料進行了分析,從玩家第一次登入遊戲到每天產生的遊戲日誌,通過大量的資料來分析該遊戲的運營情況和玩家的各種行為:如活躍使用者、使用者留存、充值比例、遊戲收人、外掛分析等。


通過玩家登入遊戲產生的資料分析一天之內各個時間段進入遊戲的情況


通過玩家登陸游戲產生的資料分析玩家在全國地區的分步情況,調整廣告投放策略


使用者留存指標可以分析遊戲對玩家的吸引力,分析使用者流失原因


使用者等級資訊可以分析玩家等等級分佈情況、調整裝備爆率和遊戲難度


通過上面遊戲各個資料指標的分析,可以讓遊戲運維者瞭解遊戲的運維情況,為運維者提供各種個性化的調整策略,從而保證遊戲健康、穩定的運營。


相關文章