大數(shù)據(jù)應用開發(fā)工程師專業(yè)的核心課程是Hadoop框架的學習,那么這個框架就類似于Java應用開發(fā)的SSH/SSM框架,都是Apache基金會或者其他Java開源社區(qū)團體的能人牛人開發(fā)的貢獻給大家使用的一種開源Java框架。我一直在向?qū)W生說Java語言是王道就是這個道理,Java的核心代碼是開源的,是經(jīng)過全球能人牛人共同學習共同研發(fā)共同檢驗的,所以說Java是最經(jīng)得住檢驗的語言,而且任何人都可以學習Java核心技術(shù)并且使用核心技術(shù)開發(fā)出像android一樣的系統(tǒng)和Hadoop一樣的框架。如果把編程的世界比作一棵樹,那么Java是根,SSH和Hadoop這樣的框架都是它開得枝散得葉。
由于大數(shù)據(jù)應用開發(fā)工程師是目前IT培訓界最熱門的專業(yè),大數(shù)據(jù)技術(shù)人才是引領(lǐng)智能革命的弄潮兒,是智能時代最直接的受益者,這么重要的專業(yè)我一定要給大家講解的詳細透徹,以Hadoop生態(tài)圈為主,介紹目前大數(shù)據(jù)應用級開發(fā)工程師在工作當中所用到的全部技術(shù),建議大家在學習大數(shù)據(jù)應用開發(fā)工程師專業(yè)之前,要有一定的Java基本語法和框架的學習經(jīng)驗。
開源的Hadoop大數(shù)據(jù)開發(fā)平臺
hadoop是一個能夠?qū)Υ罅繑?shù)據(jù)進行分布式處理的軟件框架,hadoop以一種可靠、高效、可伸縮的方式進行數(shù)據(jù)處理,用戶之所以可以輕松的在hadoop上開發(fā)和運行處理海量數(shù)據(jù)的應用數(shù)據(jù),是因為hadoop具有高可靠性、高擴展性、高效性、高容錯性等優(yōu)點。
hadoop大數(shù)據(jù)生態(tài)系統(tǒng):
分布式文件系統(tǒng)-HDFS
提起hadoop文件系統(tǒng),首先想到的是HDFS(Hadoop Distributed File System),HDFS是hadoop主要的文件系統(tǒng),是Hadoop存儲數(shù)據(jù)的平臺,建立在網(wǎng)絡(luò)上的分布式存儲系統(tǒng)。hadoop還集成了其他文件系統(tǒng),hadoop的文件系統(tǒng)是一個抽象的概念,HDFS只是其中的一種實現(xiàn)。
分布式計算框架-MapReduce
MapReduce是一種編程模型,是Hadoop處理數(shù)據(jù)的平臺。用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算。概念"Map(映射)"和"Reduce(歸約)",和它們的主要思想,都是從函數(shù)式編程語言里借來的,還有從矢量編程語言里借來的特性。它極大地方便了編程人員在不會分布式并行編程的情況下,將自己的程序運行在分布式系統(tǒng)上。
分布式開源數(shù)據(jù)庫-Hbase
HBase – Hadoop Database,HBase是一個分布式的、面向列的開源數(shù)據(jù)庫。適合于非結(jié)構(gòu)化數(shù)據(jù)存儲,保留數(shù)據(jù)多個時間段版本。Hbase極大的方便擴展了Hadoop對于數(shù)據(jù)的處理和應用。
大數(shù)據(jù)開發(fā)平臺模塊生態(tài)圈
Hive
Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,處理結(jié)構(gòu)化SQL查詢功能。可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供簡單的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進行運行并提交到集群上去執(zhí)行。 其優(yōu)點是學習成本低,可以通過類SQL語句快速實現(xiàn)簡單的MapReduce統(tǒng)計,不必開發(fā)專門的MapReduce應用,不用使用Java編程,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析。
學習Hive時,對于Hive QL中的DDL和DML就是必須要掌握的基礎(chǔ);表的定義、數(shù)據(jù)導出以及常用的查詢語句的掌握是完成大數(shù)據(jù)統(tǒng)計分析的基礎(chǔ)。學會針對Hive進行編程:使用Java API開操作Hive、開發(fā)Hive UDF函數(shù)。掌握好Hive部分高級的特性能大大提升Hive的執(zhí)行效率。在優(yōu)化過程中可以很好的借助于執(zhí)行計劃來進行分析,學習Hive時需要注意Hive性能優(yōu)化是在生產(chǎn)中的最重要的環(huán)節(jié),如何解決數(shù)據(jù)傾斜是關(guān)鍵; 梳理清楚Hive元數(shù)據(jù)各個表之間的關(guān)聯(lián)關(guān)系也能提升對Hive的把握能力。
Pig
MapReduce之上高級過程編程腳本語言,用于查詢大型半結(jié)構(gòu)化數(shù)據(jù)集。
Zookeeper協(xié)調(diào)Hadoop生態(tài)圈各個模塊共同工作
從英文含義上來看Hadoop是小象,Hive是蜜蜂,pig是豬,Zookeeper是動物管理員。那么很顯然Zookeeper的作用是分布式應用程序協(xié)調(diào)服務(wù),為各個模塊提供一致性服務(wù)的。
數(shù)據(jù)導入導出框架Sqoop
Sqoop是一款開源的工具,英文含義是象夫,就是喂養(yǎng)大象的人,主要用于在Hadoop(Hive)與傳統(tǒng)的數(shù)據(jù)庫(mysql、postgresql...)間進行數(shù)據(jù)的傳遞,可以將一個關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)導進到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導進到關(guān)系型數(shù)據(jù)庫中。
學習目標:
1.了解Sqoop是什么、能做什么及架構(gòu) ;
2.能夠進行Sqoop環(huán)境部署 ;
3.掌握Sqoop在生產(chǎn)中的使用 ;
4.能夠使用Sqoop進行ETL操作 。
Oozie
Oozie的英文含義是馴象人,非常形象,Oozie的作用是協(xié)調(diào)Hadoop各個模塊數(shù)據(jù)處理任務(wù),給它們安排一個工作計劃。
Ambari
Ambari的英文含義可以理解為籬笆,這個模塊開發(fā)者的意思是把Hadoop生態(tài)圈或者形象的叫做動物園圍起來,負責各個模塊部署安裝,版本配合、升級。
大數(shù)據(jù)圖形展示框架HUE
HUE是Cloudrea公司開源的,與Hadoop生態(tài)系統(tǒng)緊密結(jié)合的一個Web UI應用程序,可以通過Hue來查看、管理HDFS上面的文件,通過Hue從界面編寫Hive的SQL語句對Hive進行查詢,并使用圖表直觀的展示查詢結(jié)果,可以與Oozie集成,用戶創(chuàng)建和監(jiān)控工作流程。
學習目標:
1.了解HUE是什么、能做什么及架構(gòu) ;
2.能夠進行HUE環(huán)境部署 ;
3.掌握HUE在生產(chǎn)中的使用 。
Spark
Spark是目前最流行的大數(shù)據(jù)處理框架,以簡單、易用、性能卓越著稱。豐富的程序接口和庫文件也使得Spark成為業(yè)內(nèi)數(shù)據(jù)快速處理和分布式機器學習的必備工具。
學習目標:
1.了解Spark的組件和應用場景 ;
2.能夠部署Spark Standalone模式 ;
3.能夠使用Spark進行交互式開發(fā) ;
4.能夠發(fā)布獨立應用程序并使用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的特點 ;
14.掌握流式處理的基本操作 ;
15.理解狀態(tài)操作和窗口操作的概念 。
16.能夠根據(jù)生產(chǎn)環(huán)境特點,組織基于spark sql 的周期任務(wù)完成基本日志系統(tǒng)的構(gòu)建。
17.掌握不同需求下Spark組件的選擇 ;
18.掌握Spark參數(shù)調(diào)優(yōu) ;
19.掌握各組件之間的調(diào)用及thrift接口的使用 。
20.了解Spark作為機器學習工具的優(yōu)勢 ;
21.了解機器學習算法的分類 ;
22.通過K-means算法進行玩家付費行為聚類 。
*擴展技能:
python開發(fā)基礎(chǔ)、數(shù)據(jù)分析與數(shù)據(jù)挖掘
學習數(shù)據(jù)挖掘工具Sklearn,熟悉數(shù)據(jù)挖掘樸素貝葉斯算法和數(shù)據(jù)挖掘SVM分類算法,并且最終使用Sklearn實現(xiàn)貝葉斯以及SVM算法 。
Storm大數(shù)據(jù)分布式實時計算
Storm是分布式數(shù)據(jù)處理的框架,Storm可以方便地在一個計算機集群中編寫與擴展復雜的實時計算,Storm用于實時處理,就好比 Hadoop 用于批處理。如果說MapReduce降低了并行批處理復雜性,Storm是降低了進行實時處理的復雜性。
Scala編程開發(fā)
Scala是一種函數(shù)式面向?qū)ο笳Z言,類似于RUBY和GROOVY語言,它無縫結(jié)合了許多前所未有的特性形成一門多范式語言,其中高層并發(fā)模型適用于大數(shù)據(jù)開發(fā)。而同時又運行于JAVA虛擬機之上。