大數(shù)據(jù)應(yīng)用開發(fā)工程師專業(yè)的核心課程是Hadoop框架的學(xué)習(xí),那么這個(gè)框架就類似于Java應(yīng)用開發(fā)的SSH/SSM框架,都是Apache基金會(huì)或者其他Java開源社區(qū)團(tuán)體的能人牛人開發(fā)的貢獻(xiàn)給大家使用的一種開源Java框架。我一直在向?qū)W生說Java語(yǔ)言是王道就是這個(gè)道理,Java的核心代碼是開源的,是經(jīng)過全球能人牛人共同學(xué)習(xí)共同研發(fā)共同檢驗(yàn)的,所以說Java是最經(jīng)得住檢驗(yàn)的語(yǔ)言,而且任何人都可以學(xué)習(xí)Java核心技術(shù)并且使用核心技術(shù)開發(fā)出像android一樣的系統(tǒng)和Hadoop一樣的框架。如果把編程的世界比作一棵樹,那么Java是根,SSH和Hadoop這樣的框架都是它開得枝散得葉。
由于大數(shù)據(jù)應(yīng)用開發(fā)工程師是目前IT培訓(xùn)界最熱門的專業(yè),大數(shù)據(jù)技術(shù)人才是引領(lǐng)智能革命的弄潮兒,是智能時(shí)代最直接的受益者,這么重要的專業(yè)我一定要給大家講解的詳細(xì)透徹,以Hadoop生態(tài)圈為主,介紹目前大數(shù)據(jù)應(yīng)用級(jí)開發(fā)工程師在工作當(dāng)中所用到的全部技術(shù),建議大家在學(xué)習(xí)大數(shù)據(jù)應(yīng)用開發(fā)工程師專業(yè)之前,要有一定的Java基本語(yǔ)法和框架的學(xué)習(xí)經(jīng)驗(yàn)。
開源的Hadoop大數(shù)據(jù)開發(fā)平臺(tái)
hadoop是一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架,hadoop以一種可靠、高效、可伸縮的方式進(jìn)行數(shù)據(jù)處理,用戶之所以可以輕松的在hadoop上開發(fā)和運(yùn)行處理海量數(shù)據(jù)的應(yīng)用數(shù)據(jù),是因?yàn)閔adoop具有高可靠性、高擴(kuò)展性、高效性、高容錯(cuò)性等優(yōu)點(diǎn)。
hadoop大數(shù)據(jù)生態(tài)系統(tǒng):
分布式文件系統(tǒng)-HDFS
提起hadoop文件系統(tǒng),首先想到的是HDFS(Hadoop Distributed File System),HDFS是hadoop主要的文件系統(tǒng),是Hadoop存儲(chǔ)數(shù)據(jù)的平臺(tái),建立在網(wǎng)絡(luò)上的分布式存儲(chǔ)系統(tǒng)。hadoop還集成了其他文件系統(tǒng),hadoop的文件系統(tǒng)是一個(gè)抽象的概念,HDFS只是其中的一種實(shí)現(xiàn)。
分布式計(jì)算框架-MapReduce
MapReduce是一種編程模型,是Hadoop處理數(shù)據(jù)的平臺(tái)。用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算。概念"Map(映射)"和"Reduce(歸約)",和它們的主要思想,都是從函數(shù)式編程語(yǔ)言里借來的,還有從矢量編程語(yǔ)言里借來的特性。它極大地方便了編程人員在不會(huì)分布式并行編程的情況下,將自己的程序運(yùn)行在分布式系統(tǒng)上。
分布式開源數(shù)據(jù)庫(kù)-Hbase
HBase – Hadoop Database,HBase是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫(kù)。適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ),保留數(shù)據(jù)多個(gè)時(shí)間段版本。Hbase極大的方便擴(kuò)展了Hadoop對(duì)于數(shù)據(jù)的處理和應(yīng)用。
大數(shù)據(jù)開發(fā)平臺(tái)模塊生態(tài)圈

Hive
Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,處理結(jié)構(gòu)化SQL查詢功能?梢詫⒔Y(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供簡(jiǎn)單的sql查詢功能,可以將sql語(yǔ)句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行并提交到集群上去執(zhí)行。 其優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過類SQL語(yǔ)句快速實(shí)現(xiàn)簡(jiǎn)單的MapReduce統(tǒng)計(jì),不必開發(fā)專門的MapReduce應(yīng)用,不用使用Java編程,十分適合數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)計(jì)分析。
學(xué)習(xí)Hive時(shí),對(duì)于Hive QL中的DDL和DML就是必須要掌握的基礎(chǔ);表的定義、數(shù)據(jù)導(dǎo)出以及常用的查詢語(yǔ)句的掌握是完成大數(shù)據(jù)統(tǒng)計(jì)分析的基礎(chǔ)。學(xué)會(huì)針對(duì)Hive進(jìn)行編程:使用Java API開操作Hive、開發(fā)Hive UDF函數(shù)。掌握好Hive部分高級(jí)的特性能大大提升Hive的執(zhí)行效率。在優(yōu)化過程中可以很好的借助于執(zhí)行計(jì)劃來進(jìn)行分析,學(xué)習(xí)Hive時(shí)需要注意Hive性能優(yōu)化是在生產(chǎn)中的最重要的環(huán)節(jié),如何解決數(shù)據(jù)傾斜是關(guān)鍵; 梳理清楚Hive元數(shù)據(jù)各個(gè)表之間的關(guān)聯(lián)關(guān)系也能提升對(duì)Hive的把握能力。
Pig
MapReduce之上高級(jí)過程編程腳本語(yǔ)言,用于查詢大型半結(jié)構(gòu)化數(shù)據(jù)集。
Zookeeper協(xié)調(diào)Hadoop生態(tài)圈各個(gè)模塊共同工作
從英文含義上來看Hadoop是小象,Hive是蜜蜂,pig是豬,Zookeeper是動(dòng)物管理員。那么很顯然Zookeeper的作用是分布式應(yīng)用程序協(xié)調(diào)服務(wù),為各個(gè)模塊提供一致性服務(wù)的。
數(shù)據(jù)導(dǎo)入導(dǎo)出框架Sqoop
Sqoop是一款開源的工具,英文含義是象夫,就是喂養(yǎng)大象的人,主要用于在Hadoop(Hive)與傳統(tǒng)的數(shù)據(jù)庫(kù)(mysql、postgresql...)間進(jìn)行數(shù)據(jù)的傳遞,可以將一個(gè)關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)進(jìn)到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導(dǎo)進(jìn)到關(guān)系型數(shù)據(jù)庫(kù)中。
學(xué)習(xí)目標(biāo):
1.了解Sqoop是什么、能做什么及架構(gòu) ;
2.能夠進(jìn)行Sqoop環(huán)境部署 ;
3.掌握Sqoop在生產(chǎn)中的使用 ;
4.能夠使用Sqoop進(jìn)行ETL操作 。
Oozie
Oozie的英文含義是馴象人,非常形象,Oozie的作用是協(xié)調(diào)Hadoop各個(gè)模塊數(shù)據(jù)處理任務(wù),給它們安排一個(gè)工作計(jì)劃。
Ambari
Ambari的英文含義可以理解為籬笆,這個(gè)模塊開發(fā)者的意思是把Hadoop生態(tài)圈或者形象的叫做動(dòng)物園圍起來,負(fù)責(zé)各個(gè)模塊部署安裝,版本配合、升級(jí)。
大數(shù)據(jù)圖形展示框架HUE
HUE是Cloudrea公司開源的,與Hadoop生態(tài)系統(tǒng)緊密結(jié)合的一個(gè)Web UI應(yīng)用程序,可以通過Hue來查看、管理HDFS上面的文件,通過Hue從界面編寫Hive的SQL語(yǔ)句對(duì)Hive進(jìn)行查詢,并使用圖表直觀的展示查詢結(jié)果,可以與Oozie集成,用戶創(chuàng)建和監(jiān)控工作流程。
學(xué)習(xí)目標(biāo):
1.了解HUE是什么、能做什么及架構(gòu) ;
2.能夠進(jìn)行HUE環(huán)境部署 ;
3.掌握HUE在生產(chǎn)中的使用 。
Spark
Spark是目前最流行的大數(shù)據(jù)處理框架,以簡(jiǎn)單、易用、性能卓越著稱。豐富的程序接口和庫(kù)文件也使得Spark成為業(yè)內(nèi)數(shù)據(jù)快速處理和分布式機(jī)器學(xué)習(xí)的必備工具。
學(xué)習(xí)目標(biāo):
1.了解Spark的組件和應(yīng)用場(chǎng)景 ;
2.能夠部署Spark Standalone模式 ;
3.能夠使用Spark進(jìn)行交互式開發(fā) ;
4.能夠發(fā)布獨(dú)立應(yīng)用程序并使用spark-submit 提交 。
5.掌握Pair RDD的操作 ;
6.掌握Pair RDD如何與一般RDD結(jié)合 ;
7.掌握RDD的輸出操作 ;
8.了解RDD的持久化、累加器和廣播變量 。
9.掌握DataFrame的操作 ;
10.掌握不同數(shù)據(jù)源的加載方法 ;
11.了解UDF的定義方法 。
12.掌握Spark圖形化工具的查看 。
13.了解Spark Streaming的特點(diǎn) ;
14.掌握流式處理的基本操作 ;
15.理解狀態(tài)操作和窗口操作的概念 。
16.能夠根據(jù)生產(chǎn)環(huán)境特點(diǎn),組織基于spark sql 的周期任務(wù)完成基本日志系統(tǒng)的構(gòu)建。
17.掌握不同需求下Spark組件的選擇 ;
18.掌握Spark參數(shù)調(diào)優(yōu) ;
19.掌握各組件之間的調(diào)用及thrift接口的使用 。
20.了解Spark作為機(jī)器學(xué)習(xí)工具的優(yōu)勢(shì) ;
21.了解機(jī)器學(xué)習(xí)算法的分類 ;
22.通過K-means算法進(jìn)行玩家付費(fèi)行為聚類 。
*擴(kuò)展技能:
python開發(fā)基礎(chǔ)、數(shù)據(jù)分析與數(shù)據(jù)挖掘
學(xué)習(xí)數(shù)據(jù)挖掘工具Sklearn,熟悉數(shù)據(jù)挖掘樸素貝葉斯算法和數(shù)據(jù)挖掘SVM分類算法,并且最終使用Sklearn實(shí)現(xiàn)貝葉斯以及SVM算法 。
Storm大數(shù)據(jù)分布式實(shí)時(shí)計(jì)算
Storm是分布式數(shù)據(jù)處理的框架,Storm可以方便地在一個(gè)計(jì)算機(jī)集群中編寫與擴(kuò)展復(fù)雜的實(shí)時(shí)計(jì)算,Storm用于實(shí)時(shí)處理,就好比 Hadoop 用于批處理。如果說MapReduce降低了并行批處理復(fù)雜性,Storm是降低了進(jìn)行實(shí)時(shí)處理的復(fù)雜性。
Scala編程開發(fā)
Scala是一種函數(shù)式面向?qū)ο笳Z(yǔ)言,類似于RUBY和GROOVY語(yǔ)言,它無縫結(jié)合了許多前所未有的特性形成一門多范式語(yǔ)言,其中高層并發(fā)模型適用于大數(shù)據(jù)開發(fā)。而同時(shí)又運(yùn)行于JAVA虛擬機(jī)之上。