Hadoop發(fā)展到今天家族產(chǎn)品已經(jīng)非常豐富,能夠滿足不同場(chǎng)景的大數(shù)據(jù)處理需求。作為目前主流的大數(shù)據(jù)處理技術(shù),市場(chǎng)上很多公司的大數(shù)據(jù)業(yè)務(wù)都是基于Hadoop開(kāi)展,而且對(duì)很多場(chǎng)景已經(jīng)具有非常成熟的解決方案。
作為開(kāi)發(fā)人員掌握Hadoop及其生態(tài)內(nèi)框架的開(kāi)發(fā)技術(shù),就是進(jìn)入大數(shù)據(jù)領(lǐng)域的必經(jīng)之路。
下面詳細(xì)介紹一下,學(xué)習(xí)Hadoop開(kāi)發(fā)技術(shù)的路線圖。
Hadoop本身是用java開(kāi)發(fā)的,所以對(duì)java的支持性非常好,但也可以使用其他語(yǔ)言。
下面的技術(shù)路線側(cè)重?cái)?shù)據(jù)挖掘方向,因?yàn)镻ython開(kāi)發(fā)效率較高所以我們使用Python來(lái)進(jìn)行任務(wù)。
因?yàn)镠adoop是運(yùn)行在Linux系統(tǒng)上的,所以還需要掌握Linux的知識(shí)。
第一階段:Hadoop生態(tài)架構(gòu)技術(shù)
1、語(yǔ)言基礎(chǔ)
Java:掌握javase知識(shí),多理解和實(shí)踐在Java虛擬機(jī)的內(nèi)存管理、以及多線程、線程池、設(shè)計(jì)模式、并行化就可以,不需要深入掌握。
Linux:系統(tǒng)安裝(命令行界面和圖形界面)、基本命令、網(wǎng)絡(luò)配置、Vim編輯器、進(jìn)程管理、Shell腳本、虛擬機(jī)的菜單熟悉等等。
Python:基礎(chǔ)語(yǔ)法,數(shù)據(jù)結(jié)構(gòu),函數(shù),條件判斷,循環(huán)等基礎(chǔ)知識(shí)。
2、環(huán)境準(zhǔn)備
這里介紹在windows電腦搭建完全分布式,1主2從。
VMware虛擬機(jī)、Linux系統(tǒng)(Centos6.5)、Hadoop安裝包,這里準(zhǔn)備好Hadoop完全分布式集群環(huán)境。
3、MapReduce
MapReduce分布式離線計(jì)算框架,是Hadoop核心編程模型。主要適用于大批量的集群任務(wù),由于是批量執(zhí)行,故時(shí)效性偏低。
4、HDFS1.0/2.0
Hadoop分布式文件系統(tǒng)(HDFS)是一個(gè)高度容錯(cuò)性的系統(tǒng),適合部署在廉價(jià)的機(jī)器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問(wèn),非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。
5、Yarn(Hadoop2.0)
前期了解即可,Yarn是一個(gè)資源調(diào)度平臺(tái),主要負(fù)責(zé)給任務(wù)分配資源。Yarn是一個(gè)公共的資源調(diào)度平臺(tái),所有滿足條件的框架都可以使用Yarn來(lái)進(jìn)行資源調(diào)度。
6、Hive
Hive是一個(gè)數(shù)據(jù)倉(cāng)庫(kù),所有的數(shù)據(jù)都是存儲(chǔ)在HDFS上的。使用Hive主要是寫Hql,非常類似于Mysql數(shù)據(jù)庫(kù)的Sql。其實(shí)Hive在執(zhí)行Hql,底層在執(zhí)行的時(shí)候還是執(zhí)行的MapRedce程序。
7、Spark
Spark 是專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎,其是基于內(nèi)存的迭代式計(jì)算。Spark 保留了MapReduce 的優(yōu)點(diǎn),而且在時(shí)效性上有了很大提高。
8、Spark Streaming
Spark Streaming是實(shí)時(shí)處理框架,數(shù)據(jù)是一批一批的處理。
9、Spark Hive
基于Spark的快速Sql檢索。Spark作為Hive的計(jì)算引擎,將Hive的查詢作為Spark的任務(wù)提交到Spark集群上進(jìn)行計(jì)算,可以提高Hive查詢的性能。
10、Storm
Storm是一個(gè)實(shí)時(shí)計(jì)算框架,和MR的區(qū)別就是,MR是對(duì)離線的海量數(shù)據(jù)進(jìn)行處理,而Storm是對(duì)實(shí)時(shí)新增的每一條數(shù)據(jù)進(jìn)行處理,是一條一條的處理,可以保證數(shù)據(jù)處理的時(shí)效性。
11、Zookeeper
Zookeeper是很多大數(shù)據(jù)框架的基礎(chǔ),它是集群的管理者。監(jiān)視著集群中各個(gè)節(jié)點(diǎn)的狀態(tài)根據(jù)節(jié)點(diǎn)提交的反饋進(jìn)行下一步合理操作。
最終,將簡(jiǎn)單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶
12、Hbase
Hbase是一個(gè)Nosql 數(shù)據(jù)庫(kù),是一個(gè)Key-Value類型的數(shù)據(jù)庫(kù),是高可靠、面向列的、可伸縮的、分布式的數(shù)據(jù)庫(kù)。
適用于非結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ),底層的數(shù)據(jù)存儲(chǔ)在HDFS上。
13、Kafka
kafka是一個(gè)消息中間件,在工作中常用于實(shí)時(shí)處理的場(chǎng)景中,作為一個(gè)中間緩沖層。
14、Flume
Flume是一個(gè)日志采集工具,常見(jiàn)的就是采集應(yīng)用產(chǎn)生的日志文件中的數(shù)據(jù),一般有兩個(gè)流程。
一個(gè)是Flume采集數(shù)據(jù)存儲(chǔ)到Kafka中,方便Storm或者SparkStreaming進(jìn)行實(shí)時(shí)處理。
另一個(gè)流程是Flume采集的數(shù)據(jù)存儲(chǔ)到HDFS上,為了后期使用hadoop或者spark進(jìn)行離線處理。
第二階段:數(shù)據(jù)挖掘算法
1、中文分詞
開(kāi)源分詞庫(kù)的離線和在線應(yīng)用
2、自然語(yǔ)言處理
文本相關(guān)性算法
3、推薦算法
基于CB、CF,歸一法,Mahout應(yīng)用。
4、分類算法
NB、SVM
5、回歸算法
LR、Decision Tree
6、聚類算法
層次聚類、Kmeans
7、神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)
NN、Tensorflow
以上就是學(xué)習(xí)Hadoop開(kāi)發(fā)的一個(gè)詳細(xì)路線,鑒于篇幅原因只列舉和解釋了框架作用,如果需要了解具體框架的開(kāi)發(fā)技術(shù),可以百度搜索八斗學(xué)院大綱,詳細(xì)了解。
學(xué)習(xí)完第一階段的知識(shí),已經(jīng)可以從事大數(shù)據(jù)架構(gòu)相關(guān)的工作,可以在企業(yè)中負(fù)責(zé)某些或某個(gè)的開(kāi)發(fā)與維護(hù)工作。
學(xué)習(xí)完第二階段的知識(shí),可以從事數(shù)據(jù)挖掘相關(guān)的工作,這也是目前進(jìn)入大數(shù)據(jù)行業(yè)含金量最高的工作。