1. 程式人生 > >最全的大資料入門學習路線

最全的大資料入門學習路線

摘要:第一階段:Linux課程講解Linux基礎操作,講的是在命令列下進行檔案系統的操作,這是Hadoop學習的基礎,後面的所有視訊都是基於linux操作的。鑑於很多學員沒有linux基礎,特增加該內容,保證零linux基礎入門。如果你從沒有使用過linux,別擔心,本節內容可以讓你入門。Linux認識linux如何使用vmware安裝linux映象認識linux的桌面環境、shell環境在shell環境下進行檔案系統的操作,掌握more、touch、cp、mv、rm等20多個常用。

第一階段:Linux課程

講解Linux基礎操作,講的是在命令列下進行檔案系統的操作,這是Hadoop學習的基礎,後面的所有視訊都是基於linux操作的。鑑於很多學員沒有linux基礎,特增加該內容,保證零linux基礎入門。

我還是要推薦下我自己建立的大資料資料分享群142973723,這是大資料學習交流的地方,不管你是小白還是大牛,小編都歡迎,不定期分享乾貨,包括我整理的一份適合零基礎學習大資料資料和入門教程。 

如果你從沒有使用過linux,別擔心,本節內容可以讓你入門。

 

Linux

認識linux

如何使用vmware安裝linux映象

認識linux的桌面環境、shell環境

在shell環境下進行檔案系統的操作,掌握more、touch、cp、mv、rm等20多個常用命令

學習linux的網路管理,掌握ip、hostname等設定

學習vmware與linux的通訊設定,掌握如何實現host-only、bridge、nat等網路連線方式

學習linux的程序管理,掌握如何檢視、刪除程序

學習linux的軟體管理,掌握java、mysql等安裝

學習環境變數配置,掌握如何設定環境變數

學習linux的ssh管理,掌握如何實現免密碼登入

學習linux的防火牆管理,掌握如何關閉防火牆及開放指定埠

學習linux的排程管理,掌握crontab的使用

 

第二階段:hadoop2課程

 

搭建偽分佈實驗環境: 本節是最基本的課程,屬於入門級別,主要講述在linux單機上面安裝hadoop的偽分佈模式,在linux叢集上面安裝hadoop叢集。對於不熟悉linux的同學,課程中會簡單的講解常用的linux命令。這兩種是必須要掌握的。通過現在的教學發現,很多同學並不能正確的配置環境。

 

搭建偽分佈實驗環境

Hadoop概念、版本、歷史

Hadoop和核心組成介紹及hdfs、mapreduce體系結構

Hadoop的叢集結構

Hadoop偽分佈的詳細安裝步驟

如何通過命令列和瀏覽器觀察hadoop

介紹HDFS體系結構及shell、Java操作方式: 本節是對hadoop核心之一——hdfs的講解。hdfs是所有hadoop操作的基礎,屬於基本的內容。對本節內容的理解直接影響以後所有課程的學習。在本節學習中,我們會講述hdfs的體系結構,以及使用shell、java不同方式對hdfs的操作。在工作中,這兩種方式都非常常用。學會了本節內容,就可以自己開發網盤應用了。在本節學習中,我們不僅對理論和操作進行講解,也會講解hdfs的原始碼,方便部分學員以後對hadoop原始碼進行修改。最後,還要講解hadoop的RPC機制,這是hadoop執行的基礎,通過該節學習,我們就可以明白hadoop是怎麼明白的了,不必糊塗了,本節內容特別重要。

 

介紹HDFS體系結構及

shell、java操作方式

Hdfs體系結構詳述

NameNode、DataNode、SecondaryNameNode體系結構

如果保證namenode的高可靠

Datanode中block的劃分原理和儲存方式

如何修改namenode、datanode資料儲存位置

如何使用命令列操縱hdfs

如何使用java操作hdfs

介紹rpc機制

通過檢視原始碼,知曉hadoop是建構在rpc之上的

通過檢視hdfs原始碼,知曉客戶端是如何與Namenode通過rpc通訊的

介紹MapReduce體系結構及各種演算法(1): 本節開始對hadoop核心之一——mapreduce的講解。mapreduce是hadoop的核心,是以後各種框架執行的基礎,這是必須掌握的。在本次講解中,掌握mapreduce執行的詳細過程,以單詞計數為例,講解mapreduce的詳細執行過程。還講解hadoop的序列化機制和資料型別,並使用自定義型別實現電信日誌資訊的統計。

 

介紹MapReduce體

繫結構及各種演算法(1)

Mapreduce原理

Mapreduce執行的八大步驟

詳細講述如何使用mapreduce實現單詞計數功能

詳細講述如何覆蓋Mapper功能、如何覆蓋Reducer功能。在各種hadoop認證中,這是考察重點

詳細講述hadoop的自定義型別Writable介面

通過電信上網日誌例項講述如何自定義hadoop型別

例項講述hadoop1的各種輸入來源處理器,包括資料庫輸入、xml檔案、多檔案輸入等,並且講解如何自定

義輸入來源處理器

例項講述hadoop1的各種輸出來源,包括資料庫輸出、檔案輸出等,並且講解如何自定義輸出來源處理器,

實現自定義輸出檔名稱

通過原始碼講述hadoop是如何讀取hdfs檔案,並且轉化為鍵值對,供map方法呼叫的

介紹MapReduce體系結構及各種演算法(2): 本節繼續講解mapreduce,會把舊api的用法、計數器、combiner、partitioner、排序演算法、分組演算法等全部講解完畢。通過這兩次課程學習,學員可以把整個mapreduce的執行細節搞清楚,把各個可擴充套件點都搞明白。本節內容在目前市面可見的圖書、視訊中還沒有發現如此全面的哪。

 

介紹MapReduce體

繫結構及各種演算法(2)

講解新舊api的區別,如何使用舊api完成操作

介紹如何打包成jar,在命令列執行hadoop程式

介紹hadoop的內建計數器,以及自定義計數器

介紹合併(combiner)概念、為什麼使用、如何使用、使用時有什麼限制條件

介紹了hadoop內建的分割槽(partitioner)概念、為什麼使用、如何使用

介紹了hadoop內建的排序演算法,以及如何自定義排序規則

介紹了hadoop內建的分組演算法,以及如何自定義分組規則

介紹了mapreduce的常見應用場景,以及如何實現mapreduce演算法講解

如何優化mapreduce演算法,實現更高的執行效率

第三階段:zookeeper課程

本節內容與hadoop關係不大,只是在Hbase叢集安裝時才用到。但是,zookeeper在分散式專案中應用較多。

 

zookeeper

Zookeeper是什麼

搭建zookeeper叢集環境

如何使用命令列操作zookeeper

如何使用java操作zookeeper

第四階段:HBase課程

hbase是個好東西,在以後工作中會經常遇到,特別是電信、銀行、保險等行業。本節講解hbase的偽分佈和叢集的安裝,講解基本理論和各種操作。我們通過對hbase原理的講解,讓大家明白為什麼hbase會這麼適合大資料的實時查詢。最後講解hbase如何設計表結構,這是hbase優化的重點。

 

HBase

hbase的概述

hbase的資料模型

hbase的表設計

hbase的偽分散式和叢集安裝

hbase的shell操作

hbase的JavaAPI操作

hbase的資料遷移

hbase的資料備份及恢復

Hbase結合Hive使用

hbase的叢集管理

hbase的效能調優

第五階段:CM+CDH叢集管理課程

由cloudera公司開發的叢集web管理工具cloudera manager(簡稱CM)和CDH目前在企業中使用的比重很大,掌握CM+CDH叢集管理和使用 不僅簡化了叢集安裝、配置、調優等工作,而且對任務監控、叢集預警、快速定位問題都有很大的幫助。

 

CM+CDH叢集管理

CM + CDH叢集的安裝

基於CM主機及各種服務元件的管理

CDH叢集的配置和引數調優

CDH叢集HA配置及叢集升級

CM的監控管理

叢集管理的注意事項

第六階段:Hive課程

在《hadoop1零基礎拿高薪》課程中我們涉及了Hive框架內容,不過內容偏少,作為入門講解可以,但是在工作中還會遇到很多課程中沒有的。本課程的目的就是把Hive框架的邊邊角角都涉獵到,重點講解Hive的資料庫管理、資料表管理、表連線、查詢優化、如何設計Hive表結構。這都是工作中最急需的內容,是工作中的重點。

 

Hive的概述、安裝

與基本操作

大家習慣把Hive稱為hadoop領域的資料倉庫。Hive使用起來非常像MySQL,但是比使用MySQL更有意思。

我們在這裡要講述Hive的體系結構、如何安裝Hive。還會講述Hive的基本操作,目的是為了下面的繼續學習。

(理論所佔比重★★★ 實戰所佔比重★★)

Hive支援的資料型別

Hive的支援的資料型別逐漸增多。其中複合資料型別,可以把關係資料庫中的一對多關係挪到Hive的一張表中,

這是一個很神奇的事情,顛覆了我們之前的資料庫設計正規化。我們會講解如何使用這種資料型別,如何把關係數

據庫的表遷移到Hive表。

(理論所佔比重★★ 實戰所佔比重★★★)

Hive資料的管理

我們總拿Hive與MySQL做類比。其中,Hive對資料的操作方法是與MySQL最大的不同。我們會學習如何匯入數

據、匯出資料,會學習如何分割槽匯入、如何增量匯入,會學習匯入過程中如何優化操作等內容。這部分內容是工

作中使用頻率最高的內容之一。

(理論所佔比重★ 實戰所佔比重★★★★)

Hive的查詢

這部分內容講解Hive查詢語句的基本結構,重點講解表連線。其中,有一些我們原來不知道的語法如left semi-

join、sort by、cluster by等。這部分也在工作中用的是最多的內容之一。

(理論所佔比重★★ 實戰所佔比重★★★)

Hive的函式

Hive是對查詢語法的擴充,Hive執行我們非常方便的使用java來編寫函式,特別方便。我們除了簡單介紹常見的

單行函式、聚合函式、表函式之外,還會介紹如何自定義函式。這樣,我們就可以擴充原有函式庫,實現自己的

業務邏輯。這是體系我們能力的好地方!

(理論所佔比重★★★ 實戰所佔比重★★)

Hive的檔案格式

Hive的儲存除了普通檔案格式,也包括序列化檔案格式和列式儲存格式。講解分別如何使用他們,已經何種場景

下使用他們。最後講解如何自定義資料儲存格式。

(理論所佔比重★★★ 實戰所佔比重★★)

Hive的效能調優

終於來到效能調優部分。我們會講解本地模式、嚴格模式、並行執行、join優化等內容。通過實驗對比發現優化

手段的價值所在。這是整個課程的精華,也是我們以後工作能力的最重要的體現。

(理論所佔比重★ 實戰所佔比重★★★★)

專案實戰

我們會通過一個電信專案來把前面的內容綜合運用起來。這是一個來自於真實工作環境的專案,學習如何使用各

個知識點滿足專案要求。並有真實資料提供給大家,供大家課下自己練習。

(理論所佔比重★ 實戰所佔比重★★★★)

雜記

包括一些瑣碎知識點,比如檢視、索引、與HBase整合等。這些不好歸入前面的某個章節,單獨列出。並且根據

學員就業面試情況,也不會不斷增補內容。

(理論所佔比重★★★ 實戰所佔比重★★)

第七階段:Sqoop課程

sqoop適用於在關係資料庫與hdfs之間進行雙向資料轉換的,在企業中,非常常用。

 

Sqoop

Sqoop是什麼

實戰:講解Sqoop如何把mysql中的資料匯入到hdfs中

實戰:講解Sqoop如何把hdfs中的資料匯出到mysql中

Sqoop如何做成job,方便以後快速執行

第八階段:Flume課程

Flume是cloudera公佈的分散式日誌收集系統,是用來把各個的伺服器中資料收集,統一提交到hdfs或者其他目的地,是hadoop儲存資料的來源,企業中非常流行。

 

Flume

Flume是什麼

詳細Flume的體系結構

講述如何書寫flume的agent配置資訊

實戰:flume如何動態監控資料夾中檔案變化

實戰:flume如何把資料匯入到hdfs中

實戰:講解如何通過flume動態監控日誌檔案變化,然後匯入到hdfs中

第九階段:Kafka課程

Kafka是訊息系統,類似於ActiveMQ、RabbitMQ,但是效率更高。

 

Kafka

kafka是什麼

kafka體系結構

kafka的安裝

kafka的儲存策略

kafka的釋出與訂閱

使用Zookeeper協調管理

實戰:Kafka和Storm的綜合應用

第十階段:Storm課程

Storm是專門用於解決實時計算的,與hadoop框架搭配使用。本課程講解Storm的基礎結構、理論體系,如何部署Storm叢集,如何進行本地開發和分散式開發。通過本課程,大家可以進入到Storm殿堂,看各種Storm技術文章不再難,進行Storm開發也不再畏懼。

 

Storm

Storm是什麼,包括基本概念和應用領域

Storm的體系結構、工作原理

Storm的單機環境配置、叢集環境配置

Storm核心元件,包括Spout、Bolt、Stream Groupings等等

Storm如何實現訊息處理的安全性,保證訊息處理無遺漏

Storm的批處理事務處理

實戰:使用Storm完成單詞計數等操作

實戰:計算網站的pv、uv等操作

第十一階段:Redis課程

Redis是一款高效能的基於記憶體的鍵值資料庫,在網際網路公司中應用很廣泛。

 

Redis

redis特點、與其他資料庫的比較

如何安裝redis

如何使用命令列客戶端

redis的字串型別

redis的雜湊型別

redis的列表型別

redis的集合型別

如何使用java訪問redis

redis的事務(transaction)

redis的管道(pipeline)

redis持久化(AOF+RDB)

redis優化

redis的主從複製

redis的sentinel高可用

redis3.x叢集安裝配置

第十二階段:Scala課程

Scala是學習Spark的必備基礎語言,必須要掌握的。

 

Scala

scala直譯器、變數、常用資料型別等

scala的條件表示式、輸入輸出、迴圈等控制結構

scala的函式、預設引數、變長引數等

scala的陣列、變長陣列、多維陣列等

scala的對映、元祖等操作

scala的類,包括bean屬性、輔助構造器、主構造器等

scala的物件、單例物件、伴生物件、擴充套件類、apply方法等

scala的包、引入、繼承等概念

scala的特質

scala的操作符

scala的高階函式(這是重點,spark的原始碼幾乎全是高階函式)

scala的集合

第十三階段:Spark課程

Spark是一款高效能的分散式計算框架,傳言比MapReduce計算快100倍,本課程為你揭祕。

 

Spark

Spark入門

Spark與Hadoop的比較

Spark環境搭建

實戰:使用Spark完成單詞計數

Spark快取策略

Spark的transformation和action

Spark的容錯機制

Spark的核心元件

Spark的各種RDD

Spark的流計算

第十四階段:Oozie課程

oozie是Hadoop生態系統中比較重要的框架,在系統中扮演的角色是工作流引擎伺服器,用於執行Hadoop Map/Reduce任務工作流(包括MR、Hive、Pig、Sqoop等),企業中多由於整個專案流程任務排程。

 

Oozie

Oozie入門介紹

Oozie安裝配置及其簡單操作

hPDL語言學習及流程定義

oozie工作流配置及元資料庫定義

oozie定時任務排程和oozie API操作

第十五階段:Impala課程

Impala是Cloudera公司參照 Google Dreme系統進行設計並主導開發的新型查詢系統,它提供複雜SQL語義,能查詢儲存在Hadoop的HDFS和HBase中的PB級大資料。

 

Impala

Impala及其架構介紹

Impala使用方法

Impala配置及其調優

Impala專案應用

Impala和spark SQL對比

第十六階段:Kettle課程

Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上執行,資料抽取高效穩定。ETL是指資料的抽取(extract)、轉換(transform)、載入(load)至目的端。

 

Kettle

kettle簡介

windows開發環境的搭建和使用

linux下伺服器的搭建和使用

資源庫、變數、共享庫的配置

kettle常用元件

kettle的應用案例

第十七階段:Ganglia課程

Ganglia是一個對於數以萬計的節點的各個指標的圖表監控框架,提供完整的一套圖形監控介面,支援C、C++、Python擴充套件自定義指標和使用者檢視。

 

Ganglia

ganglia的基本原

搭建和使用ganglia監控伺服器的指標

配置和使用ganglia監控大資料hadoop和habase叢集、flume監控

編寫和使用自定義指標

第十八階段:Tachyon課程

Tachyon是一個開源分散式記憶體儲存系統,擁有高效能、高容錯等優點。並具有類Java的檔案API、外掛式的底層檔案系統、相容Hadoop MapReduce和 Apache Spark 等特徵。Tachyon能夠為叢集框架(如Spark、MapReduce等)提供記憶體級速度的跨叢集檔案共享服務,官方號稱最高比HDFS吞吐量高300倍。

 

Tachyon

Tachyon簡介

Tachyon架構詳解

Tachyon安裝

Tachyon引數配置

Tachyon結合Hadoop使用

Tachyon結合Spark使用

第十九階段:Solr課程

Solr

Solr簡介

Solr安裝部署

Solr example詳解

solr配置資訊詳解

solr fact查詢

solr複雜查詢

自定義中文分詞工具和詞庫

使用solrj實現java操作solr

solr高亮元件

solr優化

solr主從結構部署

solrcloud叢集安裝部署

solr實現應用

第二十階段:elasticsearch課程

elasticsearch

elasticsearch簡介

elasticsearch和solr的對比

elasticsearch安裝部署

elasticsearch service wrapper啟動外掛

使用curl操作elasticsearch索引庫

elasticsearch DSL查詢

elasticsearch批量查詢meet

elasticsearch批量操作bulk

elasticsearch外掛介紹

elasticsearch配置檔案詳解

java操作elasticsearch

elasticsearch的分頁查詢

elasticsearch中文分詞工具的整合

elasticsearch優化

elasticsearch叢集部署

第二十一階段:多執行緒課程

多執行緒

執行緒管理

執行緒的同步,包括使用synchronized、lock、定時器、訊號量等

執行緒池的建立和管理

併發集合的使用

第二十二階段:Java虛擬機器優化課程

Java虛擬機器優化

認識jvm

java 記憶體區域與記憶體的分配

垃圾收集器與回收機制

虛擬機器效能監控與故障處理常用工具

執行緒安全與鎖優化

大資料中的jvm 優化

第二十三階段:Python課程

Python

Python 簡介

Python 基本語法

使用 Python 寫 MapReduce 程式、Spark 程式

第二十四階段:Mahout課程

Mahout是資料探勘和機器學習領域的利器,本課程是帶領大家進入到這個領域中。課程內容包括Mahout體系結構介紹、Mahout如何在推薦、分類、聚類領域中使用。

 

Mahout

Mahout是什麼,有哪些應用場景

Mahout機器學習環境的搭建和部署

Mahout中支援哪些高大上的演算法

使用Mahout完成推薦引擎

實戰:實現基於web訪問的推薦程式

什麼是聚類

基於Mahout的常見聚類演算法,如k-means演算法

實戰:實現新聞內容的聚類

什麼是分類

分類的工作原理

提取特徵構建分類器

實戰:構建分類伺服器

第二十五階段:實戰專案

xx論壇日誌分析(錄播): 該專案的資料來自於黑馬程式設計師(CSDN學院-IT實戰派)論壇的日誌,該專案是為本課程量身定做的,非常適合我們hadoop課程學習。有的同學覺得應該介紹更多專案,其實做過幾個專案後,就會發現專案的思路是相同的,只是業務不同而已。大家寫過這個專案後,就對hadoop的各個框架在專案中是如何使用的,有個比較清晰的認識,對hadoop與javaEE結合有個比較清晰的認識了。

注:很多學員進入公司後發現,公司中大部分hadoop日誌分析專案,都是該專案的開發過程,千真萬確!

 

xx論壇日誌分析(錄播)

專案背景介紹

資料規模介紹

業務關鍵指標介紹

使用flume把日誌資料匯入到hdfs中

編寫MapReduce程式碼進行資料清洗

使用hbase儲存明細日誌,實現基於ip查詢

使用hive對資料進行多維分析

使用sqoop把hive分析結果匯出到MySQL中

網際網路電商爬蟲專案: 該專案使用分散式爬蟲爬取網際網路各大電商網站商品資料,前臺實現對資料的快速精準查詢和商品對比。

 

網際網路電商爬蟲

商品頁面抓取和解析

分散式爬蟲設計細節

分析url連結和頁面內容如何儲存

分散式爬蟲監控功能

爬蟲頻繁爬取資料ip被封問題解決方案

分析爬取失敗url如何處理

抓取需要登入的網站資料

使用solr實現海量資料精準查詢

使用hbase實現海量資料快速查詢

高頻資料實時流處理專案: 該專案實現對業務資料系統的高頻日誌資料進行實時收集和業務處理。

 

高頻資料實時流處理

使用avro方式實現高頻日誌資料實時採集

flume sink原始碼分析

自定義kafkasink實現對收集的高頻日誌資料進行緩衝

使用kafkaspout實現對kafka中的資料進行實時讀取

使用storm實時計算框架對日誌資料進行分析處理

flume和kafka的整合

Kafka和storm的整合

國內排名前50名的某網站網際網路日誌分析專案: 通過大資料工具將網際網路中的日誌的採集、清洗、分析統計出常見的網際網路指標;開發各種維度UV的分佈報表、各個指標每日、月指標報表,用於對產品做出正確的決策,資料的正確性校對問題,臨時性的圖表的開發。

 

某網站網際網路日誌分析

使用hadoop、mapreduce、hive清理和分析UV、PV、登入、留存等常見指標

使用storm實時分析充值、消費等的趨勢

各種維度的趨勢對比、各個指標每日、月指標報表生成

使用kettle資料的正確性校對問題和郵件報警

移動業務感知專案: 移動業務感知系統主要是利用hadoop叢集強大的計算能力對移動的大批量離線話單資料進行分析,統計移動使用者使用移動業務(流量套餐、話費套餐、鈴聲套餐等)情況,達到感知使用者行為和使用習慣,確定移動業務推廣走向的一套系統。