目前最火的大資料,很多人想往大資料方向發展,想問該學哪些技術,學習路線是什麼樣的,覺得大資料很火,就業很好,薪資很高。如果自己很迷茫,為了這些原因想往大資料方向發展,也可以,那麼我就想問一下,你的專業是什麼,對於計算機/軟體,你的興趣是什麼?是計算機專業,對作業系統、硬體、網路、伺服器感興趣?是軟體專業,對軟體開發、程式設計、寫程式碼感興趣?還是數學、統計學專業,對資料和數字特別感興趣。
其實這就是想告訴你的大資料的三個發展方向,平臺搭建/優化/運維/監控、大資料開發/ 設計/ 架構、資料分析/挖掘。請不要問我哪個容易,哪個前景好,哪個錢多。
先扯一下大資料的4V特徵:
資料量大,TB->PB
資料型別繁多,結構化、非結構化文字、日誌、視訊、圖片、地理位置等;
商業價值高,但是這種價值需要在海量資料之上,通過資料分析與機器學習更快速的挖掘出來;
處理時效性高,海量資料的處理需求不再侷限在離線計算當中。
現如今,正式為了應對大資料的這幾個特點,開源的大資料框架越來越多,越來越強,先列舉一些常見的:
檔案儲存:Hadoop HDFS、Tachyon、KFS
離線計算:Hadoop MapReduce、Spark
流式、實時計算:Storm、Spark Streaming、S4、Heron
K-V、NOSQL資料庫:HBase、Redis、MongoDB
資源管理:YARN、Mesos
日誌收集:Flume、Scribe、Logstash、Kibana
訊息系統:Kafka、StormMQ、ZeroMQ、RabbitMQ
查詢分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid
分散式協調服務:Zookeeper
叢集管理與監控:Ambari、Ganglia、Nagios、Cloudera Manager
資料探勘、機器學習:Mahout、Spark MLLib
資料同步:Sqoop
任務排程:Oozie
眼花了吧,上面的有30多種吧,別說精通了,全部都會使用的,估計也沒幾個。就我個人而言,主要經驗是在第二個方向(開發/設計/架構),且聽聽我的建議吧,有安裝教程。
初識Hadoop
1.1 學會百度與Google
不論遇到什麼問題,先試試搜尋並自己解決。Google首選,翻不過去的,就用百度吧。
1.2 參考資料首選官方文件
特別是對於入門來說,官方文件永遠是首選文件。相信搞這塊的大多是文化人,英文湊合就行,實在看不下去的,請參考第一步。
1.3 先讓Hadoop跑起來
Hadoop可以算是大資料儲存和計算的開山鼻祖,現在大多開源的大資料框架都依賴Hadoop或者與它能很好的相容。
關於Hadoop,你至少需要搞清楚以下是什麼:
Hadoop 1.0、Hadoop 2.0
MapReduce、HDFS
NameNode、DataNode
JobTracker、TaskTracker
Yarn、ResourceManager、NodeManager
自己搭建Hadoop,請使用第一步和第二步,能讓它跑起來就行。建議先使用安裝包命令列安裝,不要使用管理工具安裝。另外:Hadoop1.0知道它就行了,現在都用Hadoop 2.0.
1.4 試試使用Hadoop
HDFS目錄操作命令;上傳、下載檔案命令;提交執行MapReduce示例程式;開啟Hadoop WEB介面,檢視Job執行狀態,檢視Job執行日誌。知道Hadoop的系統日誌在哪裡。
1.5 你該瞭解它們的原理了
MapReduce:如何分而治之;HDFS:資料到底在哪裡,什麼是副本;
Yarn到底是什麼,它能幹什麼;NameNode到底在幹些什麼;Resource Manager到底在幹些什麼;
1.6 自己寫一個MapReduce程式
請仿照WordCount例子,自己寫一個(照抄也行)WordCount程式,
打包並提交到Hadoop執行。你不會Java?Shell、Python都可以,有個東西叫Hadoop Streaming。如果你認真完成了以上幾步,恭喜你,你的一隻腳已經進來了。
大資料方向的工作目前分為三個主要方向:
01.大資料工程師
02.資料分析師
03.大資料科學家
04.其他(資料探勘本質算是機器學習,不過和資料相關,也可以理解為大資料的一個方向吧)
總結如下:
必須技能10條:
01.Java高階(虛擬機器、併發)
02.Linux 基本操作
03.Hadoop(此處為俠義概念單指HDFS+MapReduce+Yarn )
04.HBase(JavaAPI操作+Phoenix )
05.Hive(Hql基本操作和原理理解)
06.Kafka
07.Storm
08.Scala需要
09.Python
10.Spark (Core+sparksql+Spark streaming )
高階技能6條:
11.機器學習演算法以及mahout庫加MLlib
12.R語言
13.Lambda 架構
14.Kappa架構
15.Kylin
16.Aluxio
二、學習路徑
由於本人是從Java開發通過大概3個月的自學轉到大資料開發的。所以我主要分享一下自己的學習路勁。
第一階段:
01.Linux學習(跟鳥哥學就ok了)
02.Java 高階學習(《深入理解Java虛擬機器》、《Java高併發實戰》)
第二階段:
03.Hadoop (董西成的書)
04.HBase(《HBase權威指南》)
05.Hive(《Hive開發指南》)
06.Scala(《快學Scala》)
07.Spark (《Spark 快速大資料分析》)
08.Python (跟著廖雪峰的部落格學習就ok了)
第三階段:
對應技能需求,到網上多蒐集一些資料就ok了,
我把最重要的事情(要學什麼告訴你了),
剩下的就是你去搜集對應的資料學習就ok了
當然如果你覺得自己看書效率太慢,你可以網上搜集一些課程,跟著課程走也OK 。這個完全根據自己情況決定。如果看書效率不高就很網課,相反的話就自己看書。
三,學習資源推薦:
01.Apache 官網
02.Stackoverflow
04.github
03.Cloudra官網
04.Databrick官網
05.過往的記憶(技術部落格)
06.CSDN,51CTO
07.至於書籍噹噹一搜會有很多,其實內容都差不多。
最後但卻很重要一點:要多關注技術動向,持續學習。
對大資料感興趣的朋友可以關注一下我的微信公共號“程式設計師OfHome”下方掃掃可關注。