進階指南|三個月大資料工程師學習計劃

weixin_33766805發表於2018-11-17

申明:本文旨在為普通程式設計師(Java程式設計師最佳)提供一個入門級別的大資料技術學習路徑,不適用於大資料工程師的進階學習,也不適用於零程式設計基礎的同學。

前言

一、背景介紹

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

很多初學者,對大資料的概念都是模糊不清的,大資料是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大資料學習qq群:458345782,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大資料講師給大家免費授課,給大家分享目前國內最完整的大資料高階實戰實用學習流程體系。

二、大資料介紹

大資料本質也是資料,但是又有了新的特徵,包括資料來源廣、資料格式多樣化(結構化資料、非結構化資料、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等:通過對儲存的資料進行預處理,加快運算速度的工具。

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

正文

一、大資料相關工作介紹

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

大資料工程師

資料分析師

大資料科學家

其他(資料探勘等)

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

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

14291549-7d0bd98282edacdb

必須掌握的技能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個月會有(213+4210)3=423小時的學習時間。

第一階段(基礎階段)

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

Linux作業系統介紹與安裝。

Linux常用命令。

Linux常用軟體安裝。

Linux網路。

防火牆。

Shell程式設計等。

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

掌握多執行緒。

掌握併發包下的佇列。

瞭解JMS。

掌握JVM技術。

掌握反射和動態代理。


3)Zookeeper學習

Zookeeper分散式協調服務介紹。

Zookeeper叢集的安裝部署。

Zookeeper資料結構、命令。

Zookeeper的原理以及選舉機制。


第二階段(攻堅階段)

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小時

14291549-e4111148e8c30746

Spark core

Spark概述。

Spark叢集安裝。

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

RDD

14291549-e39b10d10812c550

RDD概述。

建立RDD。

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

RDD的依賴關係。

RDD的快取。

DAG(有向無環圖)。

Spark SQL and DataFrame/DataSet

14291549-9aff0a62cc8fb9de

Spark SQL概述。

DataFrames。

DataFrame常用操作。

編寫Spark SQL查詢程式。

Spark Streaming

14291549-0da086fca56ea13a
14291549-89381a416dc6f22e

Spark Streaming概述。

理解DStream。

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

Structured Streaming

其他(MLlib and GraphX )

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

很多初學者,對大資料的概念都是模糊不清的,大資料是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大資料學習qq群:458345782,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大資料講師給大家免費授課,給大家分享目前國內最完整的大資料高階實戰實用學習流程體系。

相關文章