所有萌生入行的想法與想要學(xué)習(xí)Java的同學(xué)的初衷是一樣的。崗位非撑亢ǎ火梨树,就業(yè)薪資比較高,,前景非翅可觀抡四。基本都是這個(gè)原因而向往大數(shù)據(jù)仗谆,但是對大數(shù)據(jù)卻不甚了解指巡。
如果你想學(xué)習(xí),那么首先你需要學(xué)會編程隶垮,其次你需要掌握數(shù)學(xué)藻雪,統(tǒng)計(jì)學(xué)的知識,最后融合應(yīng)用狸吞,就可以想在數(shù)據(jù)方向發(fā)展勉耀,籠統(tǒng)來說,就是這樣的蹋偏。但是僅僅這樣并沒有什么幫助便斥。
這里還是要推薦下小編的大數(shù)據(jù)學(xué)習(xí)QQ裙:532218147,不管你是小白還是大牛威始,小編我都?xì)g迎椭住,不定期分享干貨,包括小編自己整理的一份2018最新的大數(shù)據(jù)資料和0基礎(chǔ)入門教程字逗,歡迎初學(xué)和進(jìn)階中的小伙伴京郑。在不忙的時(shí)間我會給解答
現(xiàn)在你需要問自己幾個(gè)問題:
對于計(jì)算機(jī)/軟件,你的興趣是什么葫掉?
是計(jì)算機(jī)專業(yè)些举,對操作系統(tǒng)、硬件俭厚、網(wǎng)絡(luò)户魏、服務(wù)器感興趣?
是軟件專業(yè),對軟件開發(fā)叼丑、編程关翎、寫代碼感興趣?
還是數(shù)學(xué)鸠信、統(tǒng)計(jì)學(xué)專業(yè)纵寝,對數(shù)據(jù)和數(shù)字特別感興趣。
你自己的專業(yè)又是什么星立?
如果你是金融專業(yè)爽茴,你可以學(xué)習(xí),因?yàn)檫@結(jié)合起來你自己的專業(yè)绰垂,將讓你在只有你專業(yè)知識的競爭者之中脫穎而出室奏,畢竟現(xiàn)在AI+已經(jīng)涉及到金融行業(yè)了。
說了這么多劲装,無非就是想告訴你胧沫,大數(shù)據(jù)的三個(gè)大的發(fā)展方向:
平臺搭建/優(yōu)化/運(yùn)維/監(jiān)控;
大數(shù)據(jù)開發(fā)/ 設(shè)計(jì)/ 架構(gòu)占业;
數(shù)據(jù)分析/挖掘琳袄。
請不要問我哪個(gè)容易,只能說能掙錢的都不簡單纺酸。
說一下大數(shù)據(jù)的四個(gè)典型的特征:
數(shù)據(jù)量大窖逗;
數(shù)據(jù)類型繁多,(結(jié)構(gòu)化餐蔬、非結(jié)構(gòu)化文本碎紊、日志、視頻樊诺、圖片仗考、地理位置等);
商業(yè)價(jià)值高词爬,但需要在海量數(shù)據(jù)之上秃嗜,通過數(shù)據(jù)分析與機(jī)器學(xué)習(xí)快速的挖掘出來;
處理時(shí)效性高顿膨,海量數(shù)據(jù)的處理需求不再局限在離線計(jì)算當(dāng)中锅锨。
現(xiàn)如今,為了應(yīng)對大數(shù)據(jù)的這幾個(gè)特點(diǎn)恋沃,開源的大數(shù)據(jù)框架越來越多必搞,越來越強(qiáng),先列舉一些常見的:
文件存儲: N囊咏、Mesos
日志收集:Flume恕洲、Scribe塔橡、Logstash、Kibana
消息系統(tǒng):Kafka霜第、StormMQ葛家、ZeroMQ、RabbitMQ
查詢分析:Hive泌类、Impala癞谒、Pig、Presto末誓、Phoenix、SparkSQL书蚪、Drill喇澡、Flink、Kylin殊校、Druid
分布式協(xié)調(diào)服務(wù):Zookeeper
集群管理與監(jiān)控:Ambari晴玖、Ganglia、Nagios为流、Cloudera Manager
數(shù)據(jù)挖掘呕屎、機(jī)器學(xué)習(xí):Mahout、Spark MLLib
數(shù)據(jù)同步:Sqoop
任務(wù)調(diào)度:Oozie
是不是眼花繚亂了敬察,上面的這些內(nèi)容秀睛,別談精通了,就算全部都會使用的莲祸,應(yīng)該也沒幾個(gè)蹂安。咱們接下來就大數(shù)據(jù)開發(fā)/ 設(shè)計(jì)/ 架構(gòu)方向來了解一下學(xué)習(xí)路線。
在接下的學(xué)習(xí)中锐帜,不論遇到什么問題田盈,先試試搜索并自己解決。Google首選缴阎,其次百度允瞧。
于入門者而言,官方文檔永遠(yuǎn)是首選文檔蛮拔。
第一章:Hadoop
在大數(shù)據(jù)存儲和計(jì)算中Hadoop可以算是開山鼻祖述暂,現(xiàn)在大多開源的大數(shù)據(jù)框架都依賴Hadoop或者與它能很好的兼容。
關(guān)于Hadoop建炫,你至少需要搞清楚這些是什么:
Hadoop 1.0贸典、Hadoop 2.0
MapReduce、HDFS
NameNode踱卵、DataNode
JobTracker廊驼、TaskTracker
Yarn据过、ResourceManager、NodeManager
自己學(xué)會如何搭建Hadoop妒挎,先讓它跑起來绳锅。建議先使用安裝包命令行安裝,不要使用管理工具安裝≡脱冢現(xiàn)在都用Hadoop 2.0鳞芙。
HDFS目錄操作命令;上傳期虾、下載文件命令原朝;提交運(yùn)行MapReduce示例程序;打開Hadoop WEB界面镶苞,查看Job運(yùn)行狀態(tài)喳坠,查看Job運(yùn)行日志。知道Hadoop的系統(tǒng)日志在哪里茂蚓。
以上完成之后壕鹉,就應(yīng)該去了解他們的原理了:
MapReduce:如何分而治之;HDFS:數(shù)據(jù)到底在哪里聋涨,究竟什么才是副本晾浴;
Yarn到底是什么,它能干什么牍白;NameNode到底在干些什么脊凰;Resource Manager到底在干些什么;
如果有合適的學(xué)習(xí)網(wǎng)站茂腥,視頻就去聽課笙各,如果沒有或者比較喜歡書籍,也可以啃書础芍。當(dāng)然最好的方法是先去搜索出來這些是干什么的杈抢,大概有了概念之后,然后再去聽視頻仑性。
之后便是自己尋找一個(gè)例子:
自己寫一個(gè)(照抄也行)WordCount程序惶楼,
打包并提交到Hadoop運(yùn)行。你不會Java诊杆?Shell歼捐、Python都可以,有個(gè)東西叫Hadoop Streaming晨汹。如果你認(rèn)真完成了以上幾步豹储,恭喜你,你的一只腳已經(jīng)進(jìn)來了淘这。
第二章:更高效的WordCount
在這里剥扣,一定要學(xué)習(xí)SQL巩剖,它會對你的工作有很大的幫助。
就像是你寫(或者抄)的WordCount一共有幾行代碼钠怯?但是你用SQL就非常簡單了佳魔,例如:
SELECT word,COUNT(1) FROM wordcount GROUP BY word;
這便是SQL的魅力晦炊,編程需要幾十行鞠鲜,甚至上百行代碼,而SQL一行搞定断国;使用SQL處理分析Hadoop上的數(shù)據(jù)贤姆,方便、高效稳衬、易上手霞捡、更是趨勢。不論是離線計(jì)算還是實(shí)時(shí)計(jì)算宋彼,越來越多的大數(shù)據(jù)處理框架都在積極提供SQL接口弄砍。
另外就是SQL On Hadoop之Hive于大數(shù)據(jù)而言一定要學(xué)習(xí)的仙畦。
什么是Hive输涕?
官方解釋如下:The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax。
為什么說Hive是數(shù)據(jù)倉庫工具慨畸,而不是數(shù)據(jù)庫工具呢莱坎?
有的朋友可能不知道數(shù)據(jù)倉庫,數(shù)據(jù)倉庫是邏輯上的概念寸士,底層使用的是數(shù)據(jù)庫檐什,數(shù)據(jù)倉庫中的數(shù)據(jù)有這兩個(gè)特點(diǎn):最全的歷史數(shù)據(jù)(海量)、相對穩(wěn)定的弱卡;所謂相對穩(wěn)定乃正,指的是數(shù)據(jù)倉庫不同于業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫,數(shù)據(jù)經(jīng)常會被更新婶博,數(shù)據(jù)一旦進(jìn)入數(shù)據(jù)倉庫瓮具,很少會被更新和刪除,只會被大量查詢凡人。而Hive名党,也是具備這兩個(gè)特點(diǎn),因此挠轴,Hive適合做海量數(shù)據(jù)的數(shù)據(jù)倉庫工具传睹,而不是數(shù)據(jù)庫工具。
了解了它的作用之后岸晦,就是安裝配置Hive的環(huán)節(jié)欧啤,當(dāng)可以正常進(jìn)入Hive命令行是睛藻,就是安裝配置成功了。
了解Hive是怎么工作的
學(xué)會Hive的基本命令:
創(chuàng)建堂油、刪除表修档;加載數(shù)據(jù)到表;下載Hive表的數(shù)據(jù)府框;
MapReduce的原理(還是那個(gè)經(jīng)典的題目吱窝,一個(gè)10G大小的文件,給定1G大小的內(nèi)存迫靖,如何使用Java程序統(tǒng)計(jì)出現(xiàn)次數(shù)最多的10個(gè)單詞及次數(shù))院峡;
HDFS讀寫數(shù)據(jù)的流程;向HDFS中PUT數(shù)據(jù)系宜;從HDFS中下載數(shù)據(jù)照激;
自己會寫簡單的MapReduce程序,運(yùn)行出現(xiàn)問題盹牧,知道在哪里查看日志俩垃;
會寫簡單的Select、Where汰寓、group by等SQL語句口柳;
Hive SQL轉(zhuǎn)換成MapReduce的大致流程;
Hive中常見的語句:創(chuàng)建表有滑、刪除表跃闹、往表中加載數(shù)據(jù)、分區(qū)毛好、將表中數(shù)據(jù)下載到本地望艺;
從上面的學(xué)習(xí),你已經(jīng)了解到肌访,HDFS是Hadoop提供的分布式存儲框架找默,它可以用來存儲海量數(shù)據(jù),MapReduce是Hadoop提供的分布式計(jì)算框架吼驶,它可以用來統(tǒng)計(jì)和分析HDFS上的海量數(shù)據(jù)惩激,而Hive則是SQL On Hadoop,Hive提供了SQL接口旨剥,開發(fā)人員只需要編寫簡單易上手的SQL語句咧欣,Hive負(fù)責(zé)把SQL翻譯成MapReduce瓮孙,提交運(yùn)行栏渺。
此時(shí),你的”大數(shù)據(jù)平臺”是這樣的:那么問題來了骂维,海量數(shù)據(jù)如何到HDFS上呢蚌父?
第三章:數(shù)據(jù)采集
把各個(gè)數(shù)據(jù)源的數(shù)據(jù)采集到Hadoop上哮兰。
3.1 HDFS PUT命令
這個(gè)在前面你應(yīng)該已經(jīng)使用過了毛萌。put命令在實(shí)際環(huán)境中也比較常用,通常配合shell喝滞、python等腳本語言來使用阁将。建議熟練掌握。
3.2 HDFS API
HDFS提供了寫數(shù)據(jù)的API右遭,自己用編程語言將數(shù)據(jù)寫入HDFS做盅,put命令本身也是使用API。
實(shí)際環(huán)境中一般自己較少編寫程序使用API來寫數(shù)據(jù)到HDFS窘哈,通常都是使用其他框架封裝好的方法吹榴。比如:Hive中的INSERT語句,Spark中的saveAsTextfile等滚婉。建議了解原理图筹,會寫Demo。
3.3 Sqoop
Sqoop是一個(gè)主要用于Hadoop/Hive與傳統(tǒng)關(guān)系型數(shù)據(jù)庫让腹,Oracle远剩、MySQL、SQLServer等之間進(jìn)行數(shù)據(jù)交換的開源框架骇窍。就像Hive把SQL翻譯成MapReduce一樣瓜晤,Sqoop把你指定的參數(shù)翻譯成MapReduce,提交到Hadoop運(yùn)行像鸡,完成Hadoop與其他數(shù)據(jù)庫之間的數(shù)據(jù)交換活鹰。
自己下載和配置Sqoop(建議先使用Sqoop1哈恰,Sqoop2比較復(fù)雜)只估。了解Sqoop常用的配置參數(shù)和方法。
使用Sqoop完成從MySQL同步數(shù)據(jù)到HDFS着绷;使用Sqoop完成從MySQL同步數(shù)據(jù)到Hive表蛔钙;如果后續(xù)選型確定使用Sqoop作為數(shù)據(jù)交換工具,那么建議熟練掌握荠医,否則吁脱,了解和會用Demo即可。
3.4 Flume
Flume是一個(gè)分布式的海量日志采集和傳輸框架彬向,因?yàn)椤安杉蛡鬏斂蚣堋奔婀保运⒉贿m合關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)采集和傳輸。Flume可以實(shí)時(shí)的從網(wǎng)絡(luò)協(xié)議娃胆、消息系統(tǒng)遍希、文件系統(tǒng)采集日志,并傳輸?shù)紿DFS上里烦。
因此凿蒜,如果你的業(yè)務(wù)有這些數(shù)據(jù)源的數(shù)據(jù)禁谦,并且需要實(shí)時(shí)的采集,那么就應(yīng)該考慮使用Flume废封。
下載和配置Flume州泊。使用Flume監(jiān)控一個(gè)不斷追加數(shù)據(jù)的文件,并將數(shù)據(jù)傳輸?shù)紿DFS漂洋;Flume的配置和使用較為復(fù)雜遥皂,如果你沒有足夠的興趣和耐心,可以先跳過Flume刽漂。
3.5 阿里開源的DataX
之所以介紹這個(gè)渴肉,是因?yàn)槲覀児灸壳笆褂玫腍adoop與關(guān)系型數(shù)據(jù)庫數(shù)據(jù)交換的工具,就是之前基于DataX開發(fā)的爽冕,非常好用仇祭。
可以參考我的博文《異構(gòu)數(shù)據(jù)源海量數(shù)據(jù)交換工具-Taobao DataX 下載和使用》。現(xiàn)在DataX已經(jīng)是3.0版本颈畸,支持很多數(shù)據(jù)源乌奇。你也可以在其之上做二次開發(fā)。有興趣的可以研究和使用一下眯娱,對比一下它與Sqoop礁苗。
第四章:把Hadoop上的數(shù)據(jù)搞到別處去
Hive和MapReduce進(jìn)行分析了。那么接下來的問題是徙缴,分析完的結(jié)果如何從Hadoop上同步到其他系統(tǒng)和應(yīng)用中去呢试伙?其實(shí),此處的方法和第三章基本一致的于样。
HDFS GET命令:把HDFS上的文件GET到本地疏叨。需要熟練掌握。
HDFS API:同3.2.
Sqoop:同3.3.使用Sqoop完成將HDFS上的文件同步到MySQL穿剖;使用Sqoop完成將Hive表中的數(shù)據(jù)同步到MySQL蚤蔓。
如果你已經(jīng)按照流程認(rèn)真完整的走了一遍,那么你應(yīng)該已經(jīng)具備以下技能和知識點(diǎn):
知道如何把已有的數(shù)據(jù)采集到HDFS上糊余,包括離線采集和實(shí)時(shí)采集秀又;
知道sqoop是HDFS和其他數(shù)據(jù)源之間的數(shù)據(jù)交換工具;
知道flume可以用作實(shí)時(shí)的日志采集贬芥。
從前面的學(xué)習(xí)吐辙,對于大數(shù)據(jù)平臺,你已經(jīng)掌握的不少的知識和技能蘸劈,搭建Hadoop集群昏苏,把數(shù)據(jù)采集到Hadoop上,使用Hive和MapReduce來分析數(shù)據(jù),把分析結(jié)果同步到其他數(shù)據(jù)源捷雕。
接下來的問題來了椒丧,Hive使用的越來越多,你會發(fā)現(xiàn)很多不爽的地方救巷,特別是速度慢壶熏,大多情況下,明明我的數(shù)據(jù)量很小浦译,它都要申請資源棒假,啟動MapReduce來執(zhí)行。
第五章:SQL
其實(shí)大家都已經(jīng)發(fā)現(xiàn)Hive后臺使用MapReduce作為執(zhí)行引擎精盅,實(shí)在是有點(diǎn)慢帽哑。因此SQL On Hadoop的框架越來越多,按我的了解叹俏,最常用的按照流行度依次為SparkSQL妻枕、Impala和Presto.這三種框架基于半內(nèi)存或者全內(nèi)存,提供了SQL接口來快速查詢分析Hadoop上的數(shù)據(jù)粘驰。
我們目前使用的是SparkSQL屡谐,至于為什么用SparkSQL,原因大概有以下吧:使用Spark還做了其他事情蝌数,不想引入過多的框架愕掏;Impala對內(nèi)存的需求太大,沒有過多資源部署顶伞。
5.1 關(guān)于Spark和SparkSQL
什么是Spark饵撑,什么是SparkSQL。
Spark有的核心概念及名詞解釋唆貌。
SparkSQL和Spark是什么關(guān)系滑潘,SparkSQL和Hive是什么關(guān)系。
SparkSQL為什么比Hive跑的快挠锥。
5.2 如何部署和運(yùn)行SparkSQL
Spark有哪些部署模式众羡?
如何在Yarn上運(yùn)行SparkSQL侨赡?
使用SparkSQL查詢Hive中的表蓖租。Spark不是一門短時(shí)間內(nèi)就能掌握的技術(shù),因此建議在了解了Spark之后羊壹,可以先從SparkSQL入手蓖宦,循序漸進(jìn)。
關(guān)于Spark和SparkSQL油猫,如果你認(rèn)真完成了上面的學(xué)習(xí)和實(shí)踐稠茂,此時(shí),你的”大數(shù)據(jù)平臺”應(yīng)該是這樣的。
第六章:數(shù)據(jù)多次利用
請不要被這個(gè)名字所誘惑睬关。其實(shí)我想說的是數(shù)據(jù)的一次采集诱担、多次消費(fèi)。
在實(shí)際業(yè)務(wù)場景下电爹,特別是對于一些監(jiān)控日志蔫仙,想即時(shí)的從日志中了解一些指標(biāo)(關(guān)于實(shí)時(shí)計(jì)算,后面章節(jié)會有介紹)丐箩,這時(shí)候摇邦,從HDFS上分析就太慢了,盡管是通過Flume采集的屎勘,但Flume也不能間隔很短就往HDFS上滾動文件施籍,這樣會導(dǎo)致小文件特別多。
為了滿足數(shù)據(jù)的一次采集概漱、多次消費(fèi)的需求丑慎,這里要說的便是Kafka。
關(guān)于Kafka:什么是Kafka瓤摧?Kafka的核心概念及名詞解釋立哑。
如何部署和使用Kafka:使用單機(jī)部署Kafka,并成功運(yùn)行自帶的生產(chǎn)者和消費(fèi)者例子姻灶。使用Java程序自己編寫并運(yùn)行生產(chǎn)者和消費(fèi)者程序铛绰。Flume和Kafka的集成,使用Flume監(jiān)控日志产喉,并將日志數(shù)據(jù)實(shí)時(shí)發(fā)送至Kafka捂掰。
如果你認(rèn)真完成了上面的學(xué)習(xí)和實(shí)踐,此時(shí)曾沈,你的”大數(shù)據(jù)平臺”應(yīng)該是這樣的这嚣。
這時(shí),使用Flume采集的數(shù)據(jù)塞俱,不是直接到HDFS上姐帚,而是先到Kafka,Kafka中的數(shù)據(jù)可以由多個(gè)消費(fèi)者同時(shí)消費(fèi)障涯,其中一個(gè)消費(fèi)者罐旗,就是將數(shù)據(jù)同步到HDFS。
如果你已經(jīng)認(rèn)真完整的學(xué)習(xí)了以上的內(nèi)容唯蝶,那么你應(yīng)該已經(jīng)具備以下技能和知識點(diǎn):
為什么Spark比MapReduce快九秀。
使用SparkSQL代替Hive,更快的運(yùn)行SQL粘我。
使用Kafka完成數(shù)據(jù)的一次收集鼓蜒,多次消費(fèi)架構(gòu)。
自己可以寫程序完成Kafka的生產(chǎn)者和消費(fèi)者。
從前面的學(xué)習(xí)都弹,你已經(jīng)掌握了大數(shù)據(jù)平臺中的數(shù)據(jù)采集娇豫、數(shù)據(jù)存儲和計(jì)算、數(shù)據(jù)交換等大部分技能畅厢,而這其中的每一步锤躁,都需要一個(gè)任務(wù)(程序)來完成,各個(gè)任務(wù)之間又存在一定的依賴性或详,比如系羞,必須等數(shù)據(jù)采集任務(wù)成功完成后,數(shù)據(jù)計(jì)算任務(wù)才能開始運(yùn)行霸琴。如果一個(gè)任務(wù)執(zhí)行失敗椒振,需要給開發(fā)運(yùn)維人員發(fā)送告警,同時(shí)需要提供完整的日志來方便查錯(cuò)梧乘。
第七章:越來越多的分析任務(wù)
不僅僅是分析任務(wù)澎迎,數(shù)據(jù)采集、數(shù)據(jù)交換同樣是一個(gè)個(gè)的任務(wù)选调。這些任務(wù)中夹供,有的是定時(shí)觸發(fā),有點(diǎn)則需要依賴其他任務(wù)來觸發(fā)仁堪。當(dāng)平臺中有幾百上千個(gè)任務(wù)需要維護(hù)和運(yùn)行時(shí)候哮洽,僅僅靠crontab遠(yuǎn)遠(yuǎn)不夠了,這時(shí)便需要一個(gè)調(diào)度監(jiān)控系統(tǒng)來完成這件事弦聂。調(diào)度監(jiān)控系統(tǒng)是整個(gè)數(shù)據(jù)平臺的中樞系統(tǒng)鸟辅,類似于AppMaster,負(fù)責(zé)分配和監(jiān)控任務(wù)莺葫。
7.1 Apache Oozie
Oozie是什么匪凉?有哪些功能?
Oozie可以調(diào)度哪些類型的任務(wù)(程序)捺檬?
Oozie可以支持哪些任務(wù)觸發(fā)方式再层?
安裝配置Oozie。
7.2 其他開源的任務(wù)調(diào)度系統(tǒng)
Azkaban堡纬,light-task-scheduler聂受,Zeus,等等隐轩。另外饺饭,我這邊是之前單獨(dú)開發(fā)的任務(wù)調(diào)度與監(jiān)控系統(tǒng),具體請參考《大數(shù)據(jù)平臺任務(wù)調(diào)度與監(jiān)控系統(tǒng)》职车。如果你認(rèn)真完成了上面的學(xué)習(xí)和實(shí)踐,此時(shí),你的”大數(shù)據(jù)平臺”應(yīng)該是這樣的:
第八章:我的數(shù)據(jù)要實(shí)時(shí)
在第六章介紹Kafka的時(shí)候提到了一些需要實(shí)時(shí)指標(biāo)的業(yè)務(wù)場景悴灵,實(shí)時(shí)基本可以分為絕對實(shí)時(shí)和準(zhǔn)實(shí)時(shí)扛芽,絕對實(shí)時(shí)的延遲要求一般在毫秒級,準(zhǔn)實(shí)時(shí)的延遲要求一般在秒积瞒、分鐘級川尖。對于需要絕對實(shí)時(shí)的業(yè)務(wù)場景,用的比較多的是Storm茫孔,對于其他準(zhǔn)實(shí)時(shí)的業(yè)務(wù)場景叮喳,可以是Storm,也可以是Spark Streaming缰贝。當(dāng)然馍悟,如果可以的話,也可以自己寫程序來做剩晴。
8.1 Storm
什么是Storm锣咒?有哪些可能的應(yīng)用場景?
Storm由哪些核心組件構(gòu)成赞弥,各自擔(dān)任什么角色毅整?
Storm的簡單安裝和部署。
自己編寫Demo程序绽左,使用Storm完成實(shí)時(shí)數(shù)據(jù)流計(jì)算悼嫉。
8.2 Spark Streaming
什么是Spark Streaming,它和Spark是什么關(guān)系拼窥?
Spark Streaming和Storm比較承粤,各有什么優(yōu)缺點(diǎn)?
使用Kafka + Spark Streaming闯团,完成實(shí)時(shí)計(jì)算的Demo程序辛臊。
至此,你的大數(shù)據(jù)平臺底層架構(gòu)已經(jīng)成型了房交,其中包括了數(shù)據(jù)采集彻舰、數(shù)據(jù)存儲與計(jì)算(離線和實(shí)時(shí))、數(shù)據(jù)同步候味、任務(wù)調(diào)度與監(jiān)控這幾大模塊刃唤。接下來是時(shí)候考慮如何更好的對外提供數(shù)據(jù)了。
第九章:數(shù)據(jù)要對外
通常對外(業(yè)務(wù))提供數(shù)據(jù)訪問白群,大體上包含以下方面尚胞。
離線:比如,每天將前一天的數(shù)據(jù)提供到指定的數(shù)據(jù)源(DB帜慢、FILE笼裳、FTP)等唯卖;離線數(shù)據(jù)的提供可以采用Sqoop、DataX等離線數(shù)據(jù)交換工具躬柬。
實(shí)時(shí):比如拜轨,在線網(wǎng)站的推薦系統(tǒng),需要實(shí)時(shí)從數(shù)據(jù)平臺中獲取給用戶的推薦數(shù)據(jù)允青,這種要求延時(shí)非常低(50毫秒以內(nèi))橄碾。根據(jù)延時(shí)要求和實(shí)時(shí)數(shù)據(jù)的查詢需要,可能的方案有:HBase颠锉、Redis法牲、MongoDB、ElasticSearch等琼掠。
OLAP分析:OLAP除了要求底層的數(shù)據(jù)模型比較規(guī)范拒垃,另外,對查詢的響應(yīng)速度要求也越來越高眉枕,可能的方案有:Impala恶复、Presto、SparkSQL速挑、Kylin谤牡。如果你的數(shù)據(jù)模型比較規(guī)模,那么Kylin是最好的選擇姥宝。
即席查詢:即席查詢的數(shù)據(jù)比較隨意翅萤,一般很難建立通用的數(shù)據(jù)模型,因此可能的方案有:Impala腊满、Presto套么、SparkSQL。
這么多比較成熟的框架和方案碳蛋,需要結(jié)合自己的業(yè)務(wù)需求及數(shù)據(jù)平臺技術(shù)架構(gòu)胚泌,選擇合適的。原則只有一個(gè):越簡單越穩(wěn)定的肃弟,就是最好的玷室。
如果你已經(jīng)掌握了如何很好的對外(業(yè)務(wù))提供數(shù)據(jù),那么你的“大數(shù)據(jù)平臺”應(yīng)該是這樣的:
第十章:牛逼高大上的機(jī)器學(xué)習(xí)
關(guān)于這塊笤受,也只能是簡單介紹一下了穷缤,研究不深入。在業(yè)務(wù)中箩兽,遇到的能用機(jī)器學(xué)習(xí)解決的問題大概這么三類:
分類問題:包括二分類和多分類津肛,二分類就是解決了預(yù)測的問題,就像預(yù)測一封郵件是否垃圾郵件汗贫;多分類解決的是文本的分類身坐;
聚類問題:從用戶搜索過的關(guān)鍵詞秸脱,對用戶進(jìn)行大概的歸類。
推薦問題:根據(jù)用戶的歷史瀏覽和點(diǎn)擊行為進(jìn)行相關(guān)推薦掀亥。
大多數(shù)行業(yè)撞反,使用機(jī)器學(xué)習(xí)解決的也就是這幾類問題妥色。
入門學(xué)習(xí)線路搪花,數(shù)學(xué)基礎(chǔ);機(jī)器學(xué)習(xí)實(shí)戰(zhàn)嘹害,懂Python最好撮竿;SparkMlLib提供了一些封裝好的算法,以及特征處理笔呀、特征選擇的方法幢踏。
機(jī)器學(xué)習(xí)確實(shí)牛逼高大上,也是我學(xué)習(xí)的目標(biāo)许师。那么房蝉,可以把機(jī)器學(xué)習(xí)部分也加進(jìn)你的“大數(shù)據(jù)平臺”了。
準(zhǔn)備好接受大數(shù)據(jù)了嗎微渠?開始學(xué)習(xí)吧搭幻,提高技能,提高核心競爭力逞盆。也給自己的未來一個(gè)機(jī)會檀蹋。