申明:本文旨在為普通程式員(Java程式員最佳)提供一個入門級别的大資料技術學習路徑,不适用于大資料工程師的進階學習,也不适用于零程式設計基礎的同學。
前言
一、背景介紹
本人目前是一名大資料工程師,項目資料50T,日均資料增長20G左右,個人是從Java後端開發,經過3個月的業餘自學成功轉型大資料工程師。
二、大資料介紹
大資料本質也是資料,但是又有了新的特征,包括資料來源廣、資料格式多樣化(結構化資料、非結構化資料、Excel檔案、文本檔案等)、資料量大(最少也是TB級别的、甚至可能是PB級别)、資料增長速度快等。
如果你對大資料開發感興趣,想系統學習大資料的話,可以加入大資料技術學習交流扣群:數字4583+數字45782,私信管理者即可免費領取開發工具以及入門學習資料
針對以上主要的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等:通過對存儲的資料進行預處理,加快運算速度的工具。
以上大緻就把整個大資料生态裡面用到的工具所解決的問題列舉了一遍,知道了他們為什麼而出現或者說出現是為了解決什麼問題,進行學習的時候就有的放矢了。
正文
一、大資料相關工作介紹
大資料方向的工作目前主要分為三個主要方向:
大資料工程師
資料分析師
大資料科學家
其他(資料挖掘等)
二、大資料工程師的技能要求
附上大資料工程師技能圖:
必須掌握的技能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隐式轉換。
如果你對大資料開發感興趣,想系統學習大資料的話,可以加入大資料技術學習交流扣群:數字4583+數字45782,私信管理者即可免費領取開發工具以及入門學習資料
8)Spark (《Spark 權威指南》)---60小時
Spark core
Spark概述。
Spark叢集安裝。
執行第一個Spark案例程式(求PI)。
RDD
RDD概述。
建立RDD。
RDD程式設計API(Transformation 和 Action Operations)。
RDD的依賴關系。
RDD的緩存。
DAG(有向無環圖)。
Spark SQL and DataFrame/DataSet
Spark SQL概述。
DataFrames。
DataFrame常用操作。
編寫Spark SQL查詢程式。
Spark Streaming
Spark Streaming概述。
了解DStream。
DStream相關操作(Transformations 和 Output Operations)。
Structured Streaming
其他(MLlib and GraphX )
這個部分一般工作中如果不是資料挖掘,機器學習一般用不到,可以等到需要用到的時候再深入學習。