1. 程式人生 > >整理的最全大資料學習之路「大神必修課」

整理的最全大資料學習之路「大神必修課」

前言:

一、背景介紹

二、大資料介紹

正文:

一、大資料相關的工作介紹

二、大資料工程師的技能要求

三、大資料學習規劃

四、持續學習資源推薦(書籍,部落格,網站)

五、專案案例分析(批處理+實時處理)

前言

一、背景介紹

本人目前是一名大資料工程師,專案資料50T,日均資料增長20G左右,個人是從Java後端開發,經過3個月的業餘自學成功轉型大資料工程師。

二、大資料介紹

對大資料的概念都是模糊不清的,大資料是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,網際網路科技發展蓬勃興起,人工智慧時代來臨,抓住下一個風口。為幫助那些往想網際網路方向轉行想學習,卻因為時間不夠,資源不足而放棄的人。我自己整理的一份最新的大資料進階資料和高階開發教程,大資料學習群:868847735   歡迎進階中和進想深入大資料的小夥伴加入。

大資料本質也是資料,但是又有了新的特徵,包括資料來源廣、資料格式多樣化(結構化資料、非結構化資料、Excel檔案、文字檔案等)、資料量大(最少也是TB級別的、甚至可能是PB級別)、資料增長速度快等。

針對以上主要的4個特徵我們需要考慮以下問題:

資料來源廣,該如何採集彙總?,對應出現了Sqoop,Cammel,Datax等工具。

資料採集之後,該如何儲存?,對應出現了GFS,HDFS,TFS等分散式檔案儲存系統。

由於資料增長速度快,資料儲存就必須可以水平擴充套件。

資料儲存之後,該如何通過運算快速轉化成一致的格式,該如何快速運算出自己想要的結果?

對應的MapReduce這樣的分散式運算框架解決了這個問題;但是寫MapReduce需要Java程式碼量很大,所以出現了Hive,Pig等將SQL轉化成MapReduce的解析引擎;

普通的MapReduce處理資料只能一批一批地處理,時間延遲太長,為了實現每輸入一條資料就能得到結果,於是出現了Storm/JStorm這樣的低時延的流式計算框架;

但是如果同時需要批處理和流處理,按照如上就得搭兩個叢集,Hadoop叢集(包括HDFS+MapReduce+Yarn)和Storm叢集,不易於管理,所以出現了Spark這樣的一站式的計算框架,既可以進行批處理,又可以進行流處理(實質上是微批處理)。

而後Lambda架構,Kappa架構的出現,又提供了一種業務處理的通用架構。

為了提高工作效率,加快運速度,出現了一些輔助工具:

Ozzie,azkaban:定時任務排程的工具。

Hue,Zepplin:圖形化任務執行管理,結果檢視工具。

Scala語言:編寫Spark程式的最佳語言,當然也可以選擇用Python。

Python語言:編寫一些指令碼時會用到。

Allluxio,Kylin等:通過對儲存的資料進行預處理,加快運算速度的工具。

以上大致就把整個大資料生態裡面用到的工具所解決的問題列舉了一遍,知道了他們為什麼而出現或者說出現是為了解決什麼問題,進行學習的時候就有的放矢了。

正文

一、大資料相關工作介紹

大資料方向的工作目前主要分為三個主要方向:

大資料工程師

資料分析師

大資料科學家

其他(資料探勘等)

二、大資料工程師的技能要求

附上大資料工程師技能圖:

 

2018年年末整理的最全大資料學習之路「大神必修課」

 

 

必須掌握的技能11條

Java高階(虛擬機器、併發)

Linux 基本操作

Hadoop(HDFS+MapReduce+Yarn )

HBase(JavaAPI操作+Phoenix )

Hive(Hql基本操作和原理理解)

Kafka

Storm/JStorm

Scala

Python

Spark (Core+sparksql+Spark streaming )

輔助小工具(Sqoop/Flume/Oozie/Hue等)

高階技能6條

機器學習演算法以及mahout庫加MLlib

R語言

Lambda 架構

Kappa架構

Kylin

Alluxio

三、學習路徑

假設每天可以抽出3個小時的有效學習時間,加上週末每天保證10個小時的有效學習時間;

3個月會有(21*3+4*2*10)*3=423小時的學習時間。

 

第一階段(基礎階段)

1)Linux學習(跟鳥哥學就ok了)—–20小時

Linux作業系統介紹與安裝。

Linux常用命令。

Linux常用軟體安裝。

Linux網路。

防火牆。

Shell程式設計等。

官網:https://www.centos.org/download/

中文社群:http://www.linuxidc.com/Linux/2017-09/146919.htm

2)Java 高階學習(《深入理解Java虛擬機器》、《Java高併發實戰》)—30小時

掌握多執行緒。

掌握併發包下的佇列。

瞭解JMS。

掌握JVM技術。

掌握反射和動態代理。

官網:https://www.java.com/zh_CN/

中文社群:http://www.java-cn.com/index.html

3)Zookeeper學習(可以參照這篇部落格進行學習:http://www.cnblogs.com/wuxl360/p/5817471.html)

Zookeeper分散式協調服務介紹。

Zookeeper叢集的安裝部署。

Zookeeper資料結構、命令。

Zookeeper的原理以及選舉機制。

官網:http://zookeeper.apache.org/

中文社群:http://www.aboutyun.com/forum-149-1.html

第二階段(攻堅階段)

4)Hadoop (《Hadoop 權威指南》)—80小時

HDFS

HDFS的概念和特性。

HDFS的shell操作。

HDFS的工作機制。

HDFS的Java應用開發。

MapReduce

執行WordCount示例程式。

瞭解MapReduce內部的執行機制。

MapReduce程式執行流程解析。

MapTask併發數的決定機制。

MapReduce中的combiner元件應用。

MapReduce中的序列化框架及應用。

MapReduce中的排序。

MapReduce中的自定義分割槽實現。

MapReduce的shuffle機制。

MapReduce利用資料壓縮進行優化。

MapReduce程式與YARN之間的關係。

MapReduce引數優化。

MapReduce的Java應用開發

5)Hive(《Hive開發指南》)–20小時

Hive 基本概念

Hive 應用場景。

Hive 與hadoop的關係。

Hive 與傳統資料庫對比。

Hive 的資料儲存機制。

Hive 基本操作

Hive 中的DDL操作。

在Hive 中如何實現高效的JOIN查詢。

Hive 的內建函式應用。

Hive shell的高階使用方式。

Hive 常用引數配置。

Hive 自定義函式和Transform的使用技巧。

Hive UDF/UDAF開發例項。

Hive 執行過程分析及優化策略

6)HBase(《HBase權威指南》)—20小時

hbase簡介。

habse安裝。

hbase資料模型。

hbase命令。

hbase開發。

hbase原理。

7)Scala(《快學Scala》)–20小時

Scala概述。

Scala編譯器安裝。

Scala基礎。

陣列、對映、元組、集合。

類、物件、繼承、特質。

模式匹配和樣例類。

瞭解Scala Actor併發程式設計。

理解Akka。

理解Scala高階函式。

理解Scala隱式轉換。

8)Spark (《Spark 權威指南》)—60小時

 

2018年年末整理的最全大資料學習之路「大神必修課」

 

 

Spark core

Spark概述。

Spark叢集安裝。

執行第一個Spark案例程式(求PI)。

RDD

 

2018年年末整理的最全大資料學習之路「大神必修課」

 

 

RDD概述。

建立RDD。

RDD程式設計API(Transformation 和 Action Operations)。

RDD的依賴關係

RDD的快取

DAG(有向無環圖)

Spark SQL and DataFrame/DataSet

 

2018年年末整理的最全大資料學習之路「大神必修課」

 

 

Spark SQL概述。

DataFrames。

DataFrame常用操作。

編寫Spark SQL查詢程式。

Spark Streaming

 

2018年年末整理的最全大資料學習之路「大神必修課」

 

 

2018年年末整理的最全大資料學習之路「大神必修課」

 

 

park Streaming概述。

理解DStream。

DStream相關操作(Transformations 和 Output Operations)。

Structured Streaming

其他(MLlib and GraphX )

這個部分一般工作中如果不是資料探勘,機器學習一般用不到,可以等到需要用到的時候再深入學習。

9)Python

10)自己用虛擬機器搭建一個叢集,把所有工具都裝上,自己開發一個小demo —30小時

可以自己用VMware搭建4臺虛擬機器,然後安裝以上軟體,搭建一個小叢集(本人親測,I7,64位,16G記憶體,完全可以執行起來

 

第三階段(輔助工具工學習階段)

11)Sqoop(CSDN,51CTO ,以及官網)—20小時

 

2018年年末整理的最全大資料學習之路「大神必修課」

 

 

資料匯出概念介紹

Sqoop基礎知識

Sqoop原理及配置說明

Sqoop資料匯入實戰

Sqoop資料匯出實戰、

Sqoop批量作業操作

12)Flume—20小時

 

2018年年末整理的最全大資料學習之路「大神必修課」

 

 

FLUME日誌採集框架介紹。

FLUME工作機制。

FLUME核心元件。

FLUME引數配置說明。

FLUME採集nginx日誌案例(案例一定要實踐一下)

13)Oozie–20小時

 

2018年年末整理的最全大資料學習之路「大神必修課」

 

 

任務排程系統概念介紹。

常用任務排程工具比較。

Oozie介紹。

Oozie核心概念。

Oozie的配置說明。

Oozie實現mapreduce/hive等任務排程實戰案例。

4)Hue–20小時

四階段(不斷學習階段)

每天都會有新的東西出現,需要關注最新技術動態,不斷學習。任何一般技術都是先學習理論,然後在實踐中不斷完善理論的過程。

備註

1)如果你覺得自己看書效率太慢,你可以網上搜集一些課程,跟著課程走也OK 。如果看書效率不高就很網課,相反的話就自己看書。

2)企業目前更傾向於使用Spark進行微批處理,Storm只有在對時效性要求極高的情況下,才會使用,所以可以做了解。重點學習Spark Streaming。

3)快速學習的能力、解決問題的能力、溝通能力**真的很重要。

4)要善於使用StackOverFlow和Google(遇到解決不了的問題,先Google,如果Google找不到解決方能就去StackOverFlow提問】