1 Java基礎:java
視頻方面:
推薦《畢向東JAVA基礎視頻教程》。學習hadoop不須要過分的深刻,java學習到javase,在Java虛擬機的內存管理、以及多線程、線程池、設計模式、並行化多多理解實踐便可。mysql
書籍方面:linux
推薦李興華的《java開發實戰經典》web
2 Linux基礎:面試
視頻方面:redis
(1)馬哥的高薪Linux視頻課程-Linux入門、sql
(2)兄弟連的新版Linux視頻教程、數據庫
(3)老段的講解鳥哥Linux基礎+私房菜、編程
(4)老男孩的Linux。設計模式
看的過程當中,不可只看不一樣步操做,這是最危險的一件事!不需所有看完。如:基本的Linux操做系統官網下載、安裝(命令行界面和圖形界面)、基本命令、網絡配置、快照、VM tools工具安裝、虛擬機的菜單熟悉等等。這是必需要首先完成的。以後,可回過來再根據須要使用到哪些,再來學習便可。看成工具書!
書籍方面:
(1)《鳥哥的linux私房菜》,
(2)以後,進一步能夠看書籍《鳥哥的服務架設篇》。
(3)Linux隨身指南
(4)老男孩Linux運維
系統學習只要多多實踐,學習linux並不枯燥。
3 hadoop書籍:
(1)《Hadoop實戰 (第1版) 陸嘉恆》、《Hadoop實戰 (第2版) 陸嘉恆》
(2) 《hadoop definitive guide 》,
中文書名是《Hadoop權威指南 (第1版)曾大聃譯》,《Hadoop權威指南 (第2版) 周敏奇譯》,《Hadoop權威指南 (第3版 ) 華東師範大學數據科學與工程學院譯》,固然如今應該是第4版了。
(3)Hadoop技術內幕:《深刻解析Hadoop common和HDFS架構設計與實現原理》 蔡斌
(4)hadoop技術內幕:《深刻解析YARN架構設計與實現原理》董西成
(5)Hadoop技術內幕:《深刻理解MapReduce架構設計與實現原理》 董西成
(5)《Hadoop in Action》,
中文書名是《Hadoop實戰》,
(6) 《Hadoop應用開發技術詳解 劉剛》
(7)《Hadoop 核心技術》 翟周偉
日常多看看hadoop的官網,雖然是官網,但儘可能多學習計算機方面的單詞,對後續學習幫助極大。
日常多看看他人的博客和社區論壇。
日常多總結和作好筆記,及時回過頭來再次屢次整理。
4 Maven書籍:
強烈推薦書籍:Maven實戰 許曉斌著。目前是初版
五、spark書籍:
(1)《Spark大數據處理 技術、應用與性能優化 高彥傑》
(2)《深刻理解Spark核心思想與源碼分析 耿嘉安》
(3)《圖解Spark:核心技術與案例實戰》
摘要: 致目前想要學習大數據,可是卻不瞭解大數據,也不知道該從哪開始學起的同窗,但願這篇文章可以幫到大家。
最近羣裏有不少朋友問我,"初學大數據,不知道怎麼開始學","不知道大數據具體是什麼東西,只是據說很厲害的樣子","學習大數據,須要學習哪些框架,只學習spark能夠嗎?" 等等...相似的問題,針對這些問題,一兩句話解釋不清楚,因此,就在這裏寫一些我本身的見解吧,但願能夠幫助到初學者的你。
大數據初學者,總結下來,大體有這麼幾種狀況:
- 跨行業轉過來的(這一種是最難的,以前可能都沒接觸過編程,這種屬於真正的0基礎)
- 即將畢業的大四學員(包含計算機專業或者其餘專業,這一種稍微好點,最起碼大學的時候多少會接觸一點編程)
- 有軟件開發經驗的老司機(包含,javaweb,.net,c 等)
上面這幾種狀況的同窗都有一個共性,對大數據都是0基礎,相對而言,有軟件開發經驗的老司機學習起來不會很吃力,其他的剛開始學起來會比較吃力,但只要肯比別人多花點時間,多下點功夫,其實並無你想象的那麼難。有付出,纔會有回報!
好了,廢話很少說了,下面就直接說一下,針對全部大數據初學者的一些學習建議吧【適用於上面三種基礎的同窗】
大數據是什麼?
有不少朋友問過我,大數據究竟是什麼?一句話來歸納
- 針對非軟件行業的朋友
- 根據你平時在超市,加油站,飯店等地方的一些消費行爲,經過大數據這個技術,咱們能夠知道你如今的年齡範圍,是否婚配,是否有孩子,孩子大體是幾歲,是否有固定住宅,車大體是什麼價位的等信息。
- 針對軟件行業的朋友
- 平時咱們寫的程序都是在一臺機器上運行,處理能力有限,固然,數據量也是有限的。大數據這個技術,其實就是能夠實現把咱們的代碼分佈在不少臺機器上去並行處理海量的數據,而後從這些海量數據中獲取有價值,有意義的信息。
學習大數據須要的基本功
1. linux基礎是必須的,最起碼須要掌握linux命令行下的基本操做命令
2. javase基礎【包含mysql】,注意是javase,不是javaee。javaweb那一塊的知識針對大數據工程師而言不是必須的
大數據技術板塊劃分
- 數據採集
- flume kafka logstash filebeat ...
- 數據存儲
- mysql redis hbase hdfs ...
- 雖然mysql不屬於大數據範疇 可是我在這也列出來了,由於你在工做中離不開它
- 數據查詢
- hive impala elasticsearch kylin ...
- 數據計算
- 實時計算
- storm sparkstreaming flink ...
- 離線計算
- 其餘框架
下面有一張圖,大體列出來了大數據生態圈周邊的一些技術框架[不夠全面,僅供參考]
其實這張圖中主要列出來了hadoop生態圈的框架,後期有時間的話從新整理一份完整的 。
這個圖中列出來了不少框架,其實,學習大數據,就是要學習大數據生態圈周邊的各類框架。
大數據學習步驟
上面雖然列出來了不少框架,可是最開始學習的時候不必所有都學,就算是在工做中,這些框架也不必定會所有用到。
下面我就大體列一下,各類框架的一個學習步驟吧:
注意:下面列出來的順序只是我的建議,能夠根據我的實際狀況來調整順序
-
linux基礎和javase基礎【包含mysql】
- 這些是基本功,剛開始也不可能學的很精通,最起碼要對linux中的一些基本的命令混個臉熟,後面學習各類框架的時候都會用到,用多了就熟悉了。javase的話建議主要看面向對象,集合,io,多線程,以及jdbc操做便可。
-
zookeeper
- zookeeper是不少大數據框架的基礎,中文名稱是動物園的意思,由於目前的大數據框架的圖標不少都是動物的形狀,因此zookeeper其實就是能夠管理不少大數據框架的。針對這個框架,主要掌握如何搭建單節點和集羣,以及掌握如何在zkcli客戶端下對zookeeper的節點進行增刪改查操做便可。
-
hadoop
- 目前企業中通常都是用hadoop2.x的版本了,因此就沒有必要再去學hadoop1.x版本了,hadoop2.x主要包含三大塊
- hdfs 前期,主要學習hdfs的一些命令便可,上傳,下載,刪除,移動,查看等命令...
- mapreduce 這個須要重點學習下,要理解mr的原理以及代碼實現,雖然如今工做中真正寫mr的代碼次數不多了,可是原理仍是要理解的。
- yarn 前期瞭解便可,只須要知道yarn是一個資源調度平臺,主要負責給任務分配資源便可,yarn不只能夠給mapreduce任務調度資源,還能夠爲spark任務調度資源...yarn是一個公共的資源調度平臺,全部知足條件的框架均可以使用yarn來進行資源調度。
-
hive
- hive是一個數據倉庫,全部的數據都是存儲在hdfs上的,具體【數據倉庫和數據庫】的區別你們能夠去網上搜索一下,有不少介紹。其實若是對mysql的使用比較熟悉的話,使用hive也就簡單不少了,使用hive主要是寫hql,hql是hive的sql語言,很是相似於mysql數據庫的sql,後續學習hive的時候主要理解一些hive的語法特性便可。其實hive在執行hql,底層在執行的時候仍是執行的mapredce程序。
- 注意:其實hive自己是很強大的,數據倉庫的設計在工做中也是很重要的,可是前期學習的時候,主要先學會如何使用就行了。後期能夠好好研究一下hive。
-
hbase
- hbase是一個nosql 數據庫,是一個key-value類型的數據庫,底層的數據存儲在hdfs上。在學習hbase的時候主要掌握 row-key的設計,以及列簇的設計。要注意一個特色就是,hbase基於rowkey查詢效率很快,能夠達到秒級查詢,可是基於列簇中的列進行查詢,特別是組合查詢的時候,若是數據量很大的話,查詢性能會不好。
-
redis
- redis也是一個nosql 數據庫和key-value類型的數據庫,可是這個數據庫是純基於內存的,也就是redis數據庫中的數據都是存儲在內存中的,因此它的一個特色就是適用於快速讀寫的應用場景,讀寫能夠達到10W次/秒,可是不適合存儲海量數據,畢竟機器的內存是有限的,固然,redis也支持集羣,也能夠存儲大量數據。在學習redis的時候主要掌握string,list,set,sortedset,hashmap這幾種數據類型的區別以及使用,還有pipeline管道,這個在批量入庫數據的時候是很是有用的,以及transaction事務功能。
-
flume
- flume是一個日誌採集工具,這個仍是比較經常使用的,最多見的就是採集應用產生的日誌文件中的數據。通常有兩個流程,一個是flume採集數據存儲到kafka中,爲了後面使用storm或者sparkstreaming進行實時處理。另外一個流程是flume採集的數據落盤到hdfs上,爲了後期使用hadoop或者spark進行離線處理。在學習flume的時候其實主要就是學會看flume官網的文檔,學習各類組建的配置參數,由於使用flume就是寫各類的配置。
-
kafka
- kafka 是一個消息隊列,在工做中經常使用於實時處理的場景中,做爲一箇中間緩衝層,例如,flume->kafka->storm/sparkstreaming。學習kafka主要掌握topic,partition,replicate等的概念和原理。
-
storm
- storm是一個實時計算框架,和hadoop的區別就是,hadoop是對離線的海量數據進行處理,而storm是對實時新增的每一條數據進行處理,是一條一條的處理,能夠保證數據處理的時效性。學習storm主要學習topology的編寫,storm並行度的調整,以及storm如何整合kafka實時消費數據。
-
spark
- spark 如今發展的也很不錯,也發展成了一個生態圈,spark裏面包含不少技術,spark core,spark steaming,spark mlib,spark graphx。
- spark生態圈裏麪包含的有離線處理spark core,和實時處理spark streaming,在這裏須要注意一下,storm和spark streaming ,兩個都是實時處理框架,可是主要區別是:storm是真正的一條一條的處理,而spark streaming 是一批一批的處理。
- spark中包含不少框架,在剛開始學習的時候主要學習spark core和spark streaming便可。這個通常搞大數據的都會用到。spark mlib和spark graphx 能夠等後期工做須要或者有時間了在研究便可。
-
elasticsearch
- elasticsearch是一個適合海量數據實時查詢的全文搜索引擎,支持分佈式集羣,其實底層是基於lucene的。在查詢的時候支持快速模糊查詢,求count,distinct,sum,avg等操做,可是不支持join操做。elasticsearch目前也有一個生態圈,elk(elasticsearch logstash kibana)是一個典型的日誌收集,存儲,快速查詢出圖表的一整套解決方案。在學習elasticsearch的時候,前期主要學習如何使用es進行增刪改查,es中的index,type,document的概念,以及es中的mapping的設計。
目前暫且列出來這麼多吧,大數據生態圈目前還有不少比較好的技術框架,這個就須要等你們之後工做以後再去擴展了。
其實上面列出來的這十幾個框架,在學習的時候,要專門挑一兩個着重研究一下,最好針對,底層原理,優化,源碼等部分有所涉獵,這麼的話能夠在面試過程當中脫穎而出。不要想着把每個框架都搞精通,目前是不現實的,其實就算是在工做中也不會每個框架都會用的很深。
若是能過對上面的框架都大體會使用,而且對某一兩個框架研究的比較深的話,其實想去找一份滿意的大數據工做也就水到渠成了。
上面說的這麼多,是根據博主最近幾年的一些經驗總結吧,若是你們有什麼觀點能夠在下面留言討論。
最終,你們仍是要落於找項目來提高本身,必需要有作項目的經驗。如今互聯網時代,別跟我說,找不到學習的資源。谷歌百度你懂的... !!!
其實,說白了,你們仍是要在入門以後,有了必定經驗,更多仍是要去看官網。這是最重要!包括動手去實踐,多敲命令!