從0到1,成為大數據行業領袖
目前最火的大數據,很多人想往大數據方向發展,想問該學哪些技術,學習路線是什麼樣的,覺得大數據很火,就業很好,薪資很高。如果自己很迷茫,為了這些原因想往大數據方向發展,也可以,那麼我就想問一下,你的專業是什麼,對於計算機/軟體,你的興趣是什麼?是計算機專業,對操作系統、硬體、網路、伺服器感興趣?是軟體專業,對軟體開發、編程、寫代碼感興趣?還是數學、統計學專業,對數據和數字特別感興趣。
其實這就是想告訴你的大數據的三個發展方向,平台搭建/優化/運維/監控、大數據開發/ 設計/ 架構、數據分析/挖掘。請不要問我哪個容易,哪個前景好,哪個錢多。
先扯一下大數據的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.至於書籍噹噹一搜會有很多,其實內容都差不多。
最後但卻很重要一點:要多關注技術動向,持續學習。


TAG:Java高級架構 |