A. Java大數據開發要掌握哪些技能
入門的1-3年,需要對Java有一個深入的了解,掌握並發、分布式與微服務等技術,對於Java的類庫也應該有一定程度的掌握。
要入了解Java底層和Java類庫,也就是JVM和JDK的相關內容。而且還要更深入的去了解你所使用的框架,方式比較推薦看源碼或者看官方文檔。進階的3-5年,以不斷提升技能為關鍵。這個階段很容易遇到瓶頸,這個時候不要著急提高自己的技術,已經是時候提高你的影響力了,你可以嘗試去一些知名的公司去提高你的背景,也可以去Github創建一個屬於你的開源項目,去打造自己的產品。
而大數據開發能力,在這個過程當中,需要逐步建立起系統的體系:包括Java初級(虛擬機、並發)、Linux基本操作、Hadoop(HDFS+MapRece+Yarn)、HBase(JavaAPI操作+Phoenix)、Hive(Hql基本操作和原理理解)、Kafka、Storm/JStorm、Scala、python、Spark(Core+sparksql+Spark streaming)、輔佐小工具(Sqoop/Flume/Oozie/Hue等)。
關於Java大數據開發要掌握哪些技能,青藤小編就和您分享到這里了。如果您對大數據工程有濃厚的興趣,希望這篇文章可以為您提供幫助。如果您還想了解更多關於數據分析師、大數據工程師的技巧及素材等內容,可以點擊本站的其他文章進行學習。
B. 大數據開發工程師要學習哪些課程
1.大數據工程師工作中會做什麼?
集群運維:安裝、測試、運維各種大數據組件
數據開發:細分一點的話會有ETL工程師、數據倉庫工程師等
數據系統開發:偏重Web系統開發,比如報表系統、推薦系統等
這裡面有很多內容其實是十分重合的,下面大致聊一下每一塊內容大致需要學什麼,以及側重點。
2.集群運維
數據工程師,基本上是離不開集群搭建,比如hadoop、Spark、Kafka,不要指望有專門的運維幫你搞定,新組件的引入一般都要自己來動手的。
因此這就要求數據工程師了解各種大數據的組件。
由於要自己的安裝各種開源的組件,就要求數據工程師要具備的能力: Linux 。要對Linux比較熟悉,能各種自己折騰著玩。
由於現在的大數據生態系統基本上是 JVM系的,因此在語言上,就不要猶豫了,JVM系的Java和Scala基本上跑不掉,Java基本上要學的很深,Scala就看情況了。
3. ETL
ETL在大數據領域主要體現在各種數據流的處理。這一塊一方面體現在對一些組件的了解上,比如Sqoop、Flume、Kafka、Spark、MapRece;另一方面就是編程語言的需要,Java、Shell和Sql是基本功。
4.系統開發
我們大部分的價值最後都會由系統來體現,比如報表系統和推薦系統。因此就要求有一定的系統開發能力,最常用的就是 Java Web這一套了,當然Python也是挺方便的。
需要注意的是,一般數據開發跑不掉的就是各種提數據的需求,很多是臨時和定製的需求,這種情況下, Sql就跑不掉了,老老實實學一下Sql很必要。
如何入門?
前面提到了一些數據工程師會用到的技能樹,下面給一個入門的建議,完全個人意見。
1.了解行業情況
剛開始一定要了解清楚自己和行業的情況,很多人根本就分不清招聘信息中的大數據和數據挖掘的區別就說自己要轉行,其實是很不負責的。不要總是趕熱點,反正我就是經常被鄙視做什麼大數據開發太Low,做數據就要做數據挖掘,不然永遠都是水貨。
2.選擇學習途徑
如果真是清楚自己明確地想轉數據開發了,要考慮一下自己的時間和精力,能拿出來多少時間,而且在學習的時候最好有人能多指點下,不然太容易走彎路了。
在選擇具體的學習途徑時,要慎重一點,有幾個選擇:
自學
報班
找人指點
別的不說了,報班是可以考慮的,不要全指望報個輔導班就能帶你上天,但是可以靠他幫你梳理思路。如果有專業從事這一行的人多幫幫的話,是最好的。不一定是技術好,主要是可溝通性強。
3.學習路線
學習路線,下面是一個大致的建議:
第一階段
先具備一定的Linux和Java的基礎,不一定要特別深,先能玩起來,Linux的話能自己執行各種操作,Java能寫點小程序。這些事為搭建Hadoop環境做准備。
學習Hadoop,學會搭建單機版的Hadoop,然後是分布式的Hadoop,寫一些MR的程序。
接著學學Hadoop生態系統的其它大數據組件,比如Spark、Hive、Hbase,嘗試去搭建然後跑一些官網的Demo。
Linux、Java、各種組件都有一些基礎後,要有一些項目方面的實踐,這時候找一些成功案例,比如搜搜各種視頻教程中如何搞一個推薦系統,把自己學到的用起來。
第二階段
到這里是一個基本的階段了,大致對數據開發有一些了解了。接著要有一些有意思內容可以選學。
數據倉庫體系:如何搞數據分層,數據倉庫體系該如何建設,可以有一些大致的了解。
用戶畫像和特徵工程:這一部分越早了解越好。
一些系統的實現思路:比如調度系統、元數據系統、推薦系統這些系統如何實現。
第三階段
下面要有一些細分的領域需要深入進行,看工作和興趣來選擇一些來深入進行
分布式理論:比如Gossip、DHT、Paxo這些構成了各種分布式系統的底層協議和演算法,還是要學一下的。
數據挖掘演算法:演算法是要學的,但是不一定純理論,在分布式環境中實現演算法,本身就是一個大的挑戰。
各種系統的源碼學習:比如Hadoop、Spark、Kafka的源碼,想深入搞大數據,源碼跑不掉。
C. 這幾個大數據GitHub項目,太強了吧
大家好,我是 夢想家 Alex 。我們都知道 github 對於程序員們而言,就是一個巨大的「聚寶盆」,上面不僅有很多優質的開源項目,還有很多熱愛開源分享的開發者。但如何從浩如煙海的寶藏中,篩選出適合自己的優質項目呢?本期內容,我就為大家推薦幾個我認為還不錯的大數據學習必備的 牛 X 項目,希望大家看完有所收獲。
首推 heiying 的 BigData-Notes,該項目目前已經有高達 10.2K 的star,正如該倉庫的介紹上簡短幾個字:大數據入門指南。這個項目也是我認為目前 最適合初學者學習和參考的項目 。
為什麼說這個項目適合大數據初學者呢,可以通過觀察項目的介紹文檔,該項目包含了大數據學習必須要掌握的幾種組件,包括 Hadoop,Hive,Spark,Flink,Kafka,Zookeeper,Flume,Sqoop,Azkaban,以及 Scala 函數式編程語言的教程 ,可謂是非常的系統全面
我們再藉助谷歌插件 Octotree 觀察項目的結構,可以看到該項目主要分為 code,notes,pictures,resources 四個目錄
其中 code 目錄主要用來存放各個組件使用相關的代碼,正如統計的結果一樣,這個項目中 Java 代碼佔了 94.8%,Scala 佔了 5.2%,所以對於喜歡用 Java 編寫代碼的小夥伴們來說,這是一個不容錯過的寶藏學習機會。
notes 部分主要存放相關組件的介紹和使用文檔,其中 installation 子目錄主要存放了相關組件編譯,以及在Linux環境下各個組件的安裝,單機/集群環境搭建的教程,我看過了內容,介紹的非常清晰詳細。
另外兩個目錄 pictures 和 resources 就不做過多介紹了,一個是存放相關的圖片教程,另一個是存放編寫的代碼中所需要用到的文本文件。
這個項目同樣給力,是由 BAT 高級大數據架構師 王知無 創建的,該項目目前也已經斬獲高達 5.2k star,是為數不多, 集基礎學習和進階實戰 於一體的優質項目。
該項目按照大數據不同階段的學習,所列舉不同的文章干貨
大數據開發基礎篇
大數據框架學習篇
大數據開發實戰進階篇
大數據開發面試篇
從不同的分類足以見 王老師 的用心。同時,王知無前輩也是 51CTO 上的認證講師,來看看官方的介紹 。
相信很多同學在學習大數據的過程中,不清楚 Java 需要學習哪些內容,掌握到什麼程度,這個時候完全可以借鑒王老師的這個倉庫內容。
同時,學習這個倉庫的內容,可以學習到作者作為架構師本身對於 JVM,分布式理論和基礎,大數據框架基石之網路通信Netty,以及各個框架的源碼學習,可謂「 真.寶藏倉庫 」
除了基礎的理論學習以外,還有大量實戰性的內容可以借鑒參考
以及大量的面試題,還有自己從零到大數據專家一路走來的心路歷程,學習路徑指南,和自己對於技術學習的一些深入思考,相信大家拜讀過後一定能收獲滿滿,
這個項目比較特殊,是一個國外開發者開源的項目,英文翻譯過來的意思是「很棒的大數據」,實際上呢~他列舉的是很多很棒的大數據框架、資源和其他很棒的精選列表。靈感來自 awesome-php 、 awesome-python 、 awesome-ruby 、 hadoopecosystemtable 和 big-data 。目前也已經斬獲 10.2K 的 star,非常強勢。
為了方便閱讀,我將其全部翻譯成中文進行展示。
我們跳轉到 分布式編程,可以看到很多我們熟悉的技術,例如 Flink,Spark,Pig,MapRece 等等 ....
亦或者「分布式文件系統」,我們所熟知的 HDFS,Ku,GFS ...
點擊對應的鏈接,可以跳轉到對應的官方介紹頁,方便我們減少搜索成本,快速了解不同領域大數據常用的技術組件,為我們之後做技術調研省了很多的時間。
讓我厚顏無恥的夾帶一下「私貨」。這是我在今年年初的時候,創建的一個倉庫,目前也已經有了快 200 的star 。從資歷和star的數量顯然不能跟前面幾個大佬相比,但卻是我第一次花費了大量精力,將一個項目像孩子一樣進行「培養」。
為了設計一個好看的圖標,還花了不少的精力。設置不同媒體平台的徽標設計,還參考了像 JavaGuide 這樣的頭部項目,也算是在親力親為的這個過程中,學到了不少東西。
可以放點內容給大家show一下
另外,我還開設了「福利」專欄,將自己學習過程中收集到的學習干貨毫無保留地分享給大家,方便大家獲取。
顯而易見,這個是專注於 flink 學習的開源項目,其中的內容包含Flink 入門、概念、原理、實戰、性能調優、源碼解析等等,目前已經斬獲了 10.5k 的 star,非常強勢。
其維護的開發人員也是非常用心負責,一路跟隨 flink 的版本,不停的在維護更新 。
同時,主要維護者 zisheng 還將 flink 的研究做到了極致,不僅有 flink 成體系的博客鏈接,還有對應的源碼系列。
還自己創建了專欄《從1到100深入學習Flink》,並將大家學習過程中有疑惑的地方解決過程統一記錄下來,方便有需要的同學查看。雖然是付費的星球專享,但我覺得是真的值!感興趣的話大家可以自行去了解。
D. 怎樣使用Java 開發大數據
未來10年將是大數據,人工智慧爆發的時代,到時將會有大量的企業需要藉助大數據,而Java最大的優勢就是它在大數據領域的地位,目前很多的大數據架構都是通過Java來完成的。
在這個Android、iOS相繼沒落,PHP相繼飽和的時候,只有Java大數據保持著旺盛的需求。那麼,Java大數據需要學習什麼技術呢?
首先我們要學習Java語言和Linux操作系統。很多人入門編程語言就是Java,你或許還不知道Java的方向有JavaSE、JavaEE、JavaME,學習Java大數據需要學習JavaSE、JavaEE。了解Java怎麼連接資料庫,掌握JDBC,學習Hibernate/Mybatis的原理,以及API,這樣可以增加你對Java操作資料庫的理解,因為這兩個技術的核心就是Java的反射加上JDBC的各種使用。
接下來就需要學習Linux操作系統,因為大數據相關軟體都是在Linux上運行的,學好Linux對你快速掌握大數據相關技術有很大的幫助,能讓你更好的理解hadoop、hive、hbase、spark等大數據軟體的運行環境和網路環境配置,能少踩很多坑,學會shell就能看懂腳本,這樣能更容易理解和配置大數據集群。還能讓你對以後新出的大數據技術學習起來更快。
最後當然是Hadoop的學習,這幾乎已經成為大數據的代名詞,Hadoop裡麵包括組件HDFS、MapRece和YARN,HDFS是存儲數據的地方,就像電腦的硬碟一樣,文件都存儲在這個上面,MapRece是對數據進行處理計算的,它有個特點就是不管多大的數據只要給它時間它就能把數據跑完,但是時間可能不是很快,所以它叫數據的批處理。YARN是體現Hadoop平台概念的重要組件,有了它大數據生態體系的其它軟體就能在hadoop上運行了,這樣就能更好的利用HDFS大存儲的優勢和節省更多的資源,比如我們就不用再單獨建一個spark的集群了,讓它直接跑在現有的hadoop yarn上面就可以了。
學了這些,可以勝任初級Java工程師了,當然還是有很有可以提高的地方,比如學習下python,可以用它來編寫網路爬蟲。這樣我們就可以自己造數據了,網路上的各種數據你高興都可以下載到你的集群上去處理。