2024-04-16 分類: 網(wǎng)站建設(shè)
導(dǎo)讀:第一章:初識(shí)Hadoop第二章:更高效的WordCount第三章:把別處的數(shù)據(jù)搞到Hadoop上第四章:把Hadoop上的數(shù)據(jù)搞到別處去第五章:快一點(diǎn)吧,我的SQL第六章:一夫多妻制第七章:越來(lái)越多的分析任務(wù)第八章:我的數(shù)據(jù)要實(shí)時(shí)第九章:我的數(shù)據(jù)要對(duì)外第十章:牛逼高大上的機(jī)器學(xué)習(xí)
其實(shí)這就是想告訴你的大數(shù)據(jù)的三個(gè)發(fā)展方向,平臺(tái)搭建/優(yōu)化/運(yùn)維/監(jiān)控、大數(shù)據(jù)開(kāi)發(fā)/設(shè)計(jì)/架構(gòu)、數(shù)據(jù)分析/挖掘。請(qǐng)不要問(wèn)我哪個(gè)容易,哪個(gè)前景好,哪個(gè)錢多。
數(shù)據(jù)量大,TB->PB數(shù)據(jù)類型繁多,結(jié)構(gòu)化、非結(jié)構(gòu)化文本、日志、視頻、圖片、地理位置等;商業(yè)價(jià)值高,但是這種價(jià)值需要在海量數(shù)據(jù)之上,通過(guò)數(shù)據(jù)分析與機(jī)器學(xué)習(xí)更快速的挖掘出來(lái);處理時(shí)效性高,海量數(shù)據(jù)的處理需求不再局限在離線計(jì)算當(dāng)中。現(xiàn)如今,正式為了應(yīng)對(duì)大數(shù)據(jù)的這幾個(gè)特點(diǎn),開(kāi)源的大數(shù)據(jù)框架越來(lái)越多,越來(lái)越強(qiáng),先列舉一些常見(jiàn)的:
文件存儲(chǔ):Hadoop HDFS、Tachyon、KFS
離線計(jì)算:Hadoop MapReduce、Spark
流式、實(shí)時(shí)計(jì)算:Storm、Spark Streaming、S4、Heron
資源管理:YARN、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
……
眼花了吧,上面的有30多種吧,別說(shuō)精通了,全部都會(huì)使用的,估計(jì)也沒(méi)幾個(gè)。
就我個(gè)人而言,主要經(jīng)驗(yàn)是在第二個(gè)方向(開(kāi)發(fā)/設(shè)計(jì)/架構(gòu)),且聽(tīng)聽(tīng)我的建議吧。
第一章:初識(shí)Hadoop1.1 學(xué)會(huì)百度與Google
不論遇到什么問(wèn)題,先試試搜索并自己解決。
Google選,翻不過(guò)去的,就用百度吧。
1.2 參考資料選官方文檔
特別是對(duì)于入門來(lái)說(shuō),官方文檔永遠(yuǎn)是選文檔。
相信搞這塊的大多是文化人,英文湊合就行,實(shí)在看不下去的,請(qǐng)參考第一步。
1.3 先讓Hadoop跑起來(lái)
Hadoop可以算是大數(shù)據(jù)存儲(chǔ)和計(jì)算的開(kāi)山鼻祖,現(xiàn)在大多開(kāi)源的大數(shù)據(jù)框架都依賴Hadoop或者與它能很好的兼容。
關(guān)于Hadoop,你至少需要搞清楚以下是什么:
Hadoop 1.0、Hadoop 2.0MapReduce、HDFSNameNode、DataNodeJobTracker、TaskTrackerYarn、ResourceManager、NodeManager自己搭建Hadoop,請(qǐng)使用第一步和第二步,能讓它跑起來(lái)就行。
建議先使用安裝包命令行安裝,不要使用管理工具安裝。
另外:Hadoop1.0知道它就行了,現(xiàn)在都用Hadoop 2.0.
1.4 試試使用Hadoop
HDFS目錄操作命令;
上傳、下載文件命令;
提交運(yùn)行MapReduce示例程序;
打開(kāi)Hadoop WEB界面,查看Job運(yùn)行狀態(tài),查看Job運(yùn)行日志。
知道Hadoop的系統(tǒng)日志在哪里。
1.5 你該了解它們的原理了
MapReduce:如何分而治之;
HDFS:數(shù)據(jù)到底在哪里,什么是副本;
Yarn到底是什么,它能干什么;
NameNode到底在干些什么;
ResourceManager到底在干些什么;
1.6 自己寫(xiě)一個(gè)MapReduce程序
請(qǐng)仿照WordCount例子,自己寫(xiě)一個(gè)(照抄也行)WordCount程序,
打包并提交到Hadoop運(yùn)行。
你不會(huì)Java?Shell、Python都可以,有個(gè)東西叫Hadoop Streaming。
如果你認(rèn)真完成了以上幾步,恭喜你,你的一只腳已經(jīng)進(jìn)來(lái)了。
第二章:更高效的WordCount2.1 學(xué)點(diǎn)SQL吧
你知道數(shù)據(jù)庫(kù)嗎?你會(huì)寫(xiě)SQL嗎?
如果不會(huì),請(qǐng)學(xué)點(diǎn)SQL吧。
2.2 SQL版WordCount
在1.6中,你寫(xiě)(或者抄)的WordCount一共有幾行代碼?
給你看看我的:
SELECT word,COUNT(1) FROM wordcount GROUP BY word;
這便是SQL的魅力,編程需要幾十行,甚至上百行代碼,我這一句就搞定;使用SQL處理分析Hadoop上的數(shù)據(jù),方便、高效、易上手、更是趨勢(shì)。不論是離線計(jì)算還是實(shí)時(shí)計(jì)算,越來(lái)越多的大數(shù)據(jù)處理框架都在積極提供SQL接口。
2.3 SQL On Hadoop之Hive
什么是Hive?官方給的解釋是:
The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax.
為什么說(shuō)Hive是數(shù)據(jù)倉(cāng)庫(kù)工具,而不是數(shù)據(jù)庫(kù)工具呢?有的朋友可能不知道數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)倉(cāng)庫(kù)是邏輯上的概念,底層使用的是數(shù)據(jù)庫(kù),數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)有這兩個(gè)特點(diǎn):最全的歷史數(shù)據(jù)(海量)、相對(duì)穩(wěn)定的;所謂相對(duì)穩(wěn)定,指的是數(shù)據(jù)倉(cāng)庫(kù)不同于業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù),數(shù)據(jù)經(jīng)常會(huì)被更新,數(shù)據(jù)一旦進(jìn)入數(shù)據(jù)倉(cāng)庫(kù),很少會(huì)被更新和刪除,只會(huì)被大量查詢。而Hive,也是具備這兩個(gè)特點(diǎn),因此,Hive適合做海量數(shù)據(jù)的數(shù)據(jù)倉(cāng)庫(kù)工具,而不是數(shù)據(jù)庫(kù)工具。
2.4 安裝配置Hive
請(qǐng)參考1.1 和 1.2 完成Hive的安裝配置。可以正常進(jìn)入Hive命令行。
2.5 試試使用Hive
請(qǐng)參考1.1 和 1.2 ,在Hive中創(chuàng)建wordcount表,并運(yùn)行2.2中的SQL語(yǔ)句。
在Hadoop WEB界面中找到剛才運(yùn)行的SQL任務(wù)。
看SQL查詢結(jié)果是否和1.4中MapReduce中的結(jié)果一致。
2.6 Hive是怎么工作的
明明寫(xiě)的是SQL,為什么Hadoop WEB界面中看到的是MapReduce任務(wù)?
2.7 學(xué)會(huì)Hive的基本命令
創(chuàng)建、刪除表;
加載數(shù)據(jù)到表;
下載Hive表的數(shù)據(jù);
請(qǐng)參考1.2,學(xué)習(xí)更多關(guān)于Hive的語(yǔ)法和命令。
如果你已經(jīng)按照《寫(xiě)給大數(shù)據(jù)開(kāi)發(fā)初學(xué)者的話》中第一章和第二章的流程認(rèn)真完整的走了一遍,那么你應(yīng)該已經(jīng)具備以下技能和知識(shí)點(diǎn):
0和Hadoop2.0的區(qū)別;MapReduce的原理(還是那個(gè)經(jīng)典的題目,一個(gè)10G大小的文件,給定1G大小的內(nèi)存,如何使用Java程序統(tǒng)計(jì)出現(xiàn)次數(shù)最多的10個(gè)單詞及次數(shù));HDFS讀寫(xiě)數(shù)據(jù)的流程;向HDFS中PUT數(shù)據(jù);從HDFS中下載數(shù)據(jù);自己會(huì)寫(xiě)簡(jiǎn)單的MapReduce程序,運(yùn)行出現(xiàn)問(wèn)題,知道在哪里查看日志;會(huì)寫(xiě)簡(jiǎn)單的SELECT、WHERE、GROUP BY等SQL語(yǔ)句;Hive SQL轉(zhuǎn)換成MapReduce的大致流程;Hive中常見(jiàn)的語(yǔ)句:創(chuàng)建表、刪除表、往表中加載數(shù)據(jù)、分區(qū)、將表中數(shù)據(jù)下載到本地;從上面的學(xué)習(xí),你已經(jīng)了解到,HDFS是Hadoop提供的分布式存儲(chǔ)框架,它可以用來(lái)存儲(chǔ)海量數(shù)據(jù),MapReduce是Hadoop提供的分布式計(jì)算框架,它可以用來(lái)統(tǒng)計(jì)和分析HDFS上的海量數(shù)據(jù),而Hive則是SQL On Hadoop,Hive提供了SQL接口,開(kāi)發(fā)人員只需要編寫(xiě)簡(jiǎn)單易上手的SQL語(yǔ)句,Hive負(fù)責(zé)把SQL翻譯成MapReduce,提交運(yùn)行。
此時(shí),你的大數(shù)據(jù)平臺(tái)是這樣的:
那么問(wèn)題來(lái)了,海量數(shù)據(jù)如何到HDFS上呢?
第三章:把別處的數(shù)據(jù)搞到Hadoop上此處也可以叫做數(shù)據(jù)采集,把各個(gè)數(shù)據(jù)源的數(shù)據(jù)采集到Hadoop上。
3.1 HDFS PUT命令
這個(gè)在前面你應(yīng)該已經(jīng)使用過(guò)了。
put命令在實(shí)際環(huán)境中也比較常用,通常配合shell、python等腳本語(yǔ)言來(lái)使用。
建議熟練掌握。
3.2 HDFS API
HDFS提供了寫(xiě)數(shù)據(jù)的API,自己用編程語(yǔ)言將數(shù)據(jù)寫(xiě)入HDFS,put命令本身也是使用API。
實(shí)際環(huán)境中一般自己較少編寫(xiě)程序使用API來(lái)寫(xiě)數(shù)據(jù)到HDFS,通常都是使用其他框架封裝好的方法。比如:Hive中的INSERT語(yǔ)句,Spark中的saveAsTextfile等。
建議了解原理,會(huì)寫(xiě)Demo。
3.3 Sqoop
Sqoop是一個(gè)主要用于Hadoop/Hive與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)Oracle/MySQL/SQLServer等之間進(jìn)行數(shù)據(jù)交換的開(kāi)源框架。
就像Hive把SQL翻譯成MapReduce一樣,Sqoop把你指定的參數(shù)翻譯成MapReduce,提交到Hadoop運(yùn)行,完成Hadoop與其他數(shù)據(jù)庫(kù)之間的數(shù)據(jù)交換。
自己下載和配置Sqoop(建議先使用Sqoop1,Sqoop2比較復(fù)雜)。
了解Sqoop常用的配置參數(shù)和方法。
使用Sqoop完成從MySQL同步數(shù)據(jù)到HDFS;
使用Sqoop完成從MySQL同步數(shù)據(jù)到Hive表;
PS:如果后續(xù)選型確定使用Sqoop作為數(shù)據(jù)交換工具,那么建議熟練掌握,否則,了解和會(huì)用Demo即可。
3.4 Flume
Flume是一個(gè)分布式的海量日志采集和傳輸框架,因?yàn)椴杉蛡鬏斂蚣?,所以它并不適合關(guān)系型數(shù)據(jù)庫(kù)的數(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;
PS:Flume的配置和使用較為復(fù)雜,如果你沒(méi)有足夠的興趣和耐心,可以先跳過(guò)Flume。
3.5 阿里開(kāi)源的DataX
之所以介紹這個(gè),是因?yàn)槲覀児灸壳笆褂玫腍adoop與關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)交換的工具,就是之前基于DataX開(kāi)發(fā)的,非常好用。
可以參考我的博文《異構(gòu)數(shù)據(jù)源海量數(shù)據(jù)交換工具-Taobao DataX 下載和使用》。
現(xiàn)在DataX已經(jīng)是3.0版本,支持很多數(shù)據(jù)源。
你也可以在其之上做二次開(kāi)發(fā)。
PS:有興趣的可以研究和使用一下,對(duì)比一下它與Sqoop。
如果你認(rèn)真完成了上面的學(xué)習(xí)和實(shí)踐,此時(shí),你的大數(shù)據(jù)平臺(tái)應(yīng)該是這樣的:
第四章:把Hadoop上的數(shù)據(jù)搞到別處去前面介紹了如何把數(shù)據(jù)源的數(shù)據(jù)采集到Hadoop上,數(shù)據(jù)到Hadoop上之后,便可以使用Hive和MapReduce進(jìn)行分析了。那么接下來(lái)的問(wèn)題是,分析完的結(jié)果如何從Hadoop上同步到其他系統(tǒng)和應(yīng)用中去呢?
其實(shí),此處的方法和第三章基本一致的。
4.1 HDFS GET命令
把HDFS上的文件GET到本地。需要熟練掌握。
4.2 HDFS API
同3.2.
4.3 Sqoop
同3.3.
使用Sqoop完成將HDFS上的文件同步到MySQL;
使用Sqoop完成將Hive表中的數(shù)據(jù)同步到MySQL;
4.4 DataX
同3.5.
如果你認(rèn)真完成了上面的學(xué)習(xí)和實(shí)踐,此時(shí),你的大數(shù)據(jù)平臺(tái)應(yīng)該是這樣的:
如果你已經(jīng)按照《寫(xiě)給大數(shù)據(jù)開(kāi)發(fā)初學(xué)者的話2》中第三章和第四章的流程認(rèn)真完整的走了一遍,那么你應(yīng)該已經(jīng)具備以下技能和知識(shí)點(diǎn):
知道如何把已有的數(shù)據(jù)采集到HDFS上,包括離線采集和實(shí)時(shí)采集;
你已經(jīng)知道sqoop(或者還有DataX)是HDFS和其他數(shù)據(jù)源之間的數(shù)據(jù)交換工具;
你已經(jīng)知道flume可以用作實(shí)時(shí)的日志采集。
從前面的學(xué)習(xí),對(duì)于大數(shù)據(jù)平臺(tái),你已經(jīng)掌握的不少的知識(shí)和技能,搭建Hadoop集群,把數(shù)據(jù)采集到Hadoop上,使用Hive和MapReduce來(lái)分析數(shù)據(jù),把分析結(jié)果同步到其他數(shù)據(jù)源。
接下來(lái)的問(wèn)題來(lái)了,Hive使用的越來(lái)越多,你會(huì)發(fā)現(xiàn)很多不爽的地方,特別是速度慢,大多情況下,明明我的數(shù)據(jù)量很小,它都要申請(qǐng)資源,啟動(dòng)MapReduce來(lái)執(zhí)行。
第五章:快一點(diǎn)吧,我的SQL其實(shí)大家都已經(jīng)發(fā)現(xiàn)Hive后臺(tái)使用MapReduce作為執(zhí)行引擎,實(shí)在是有點(diǎn)慢。
因此SQL On Hadoop的框架越來(lái)越多,按我的了解,最常用的按照流行度依次為SparkSQL、Impala和Presto.
這三種框架基于半內(nèi)存或者全內(nèi)存,提供了SQL接口來(lái)快速查詢分析Hadoop上的數(shù)據(jù)。關(guān)于三者的比較,請(qǐng)參考1.1.
我們目前使用的是SparkSQL,至于為什么用SparkSQL,原因大概有以下吧:
使用Spark還做了其他事情,不想引入過(guò)多的框架;
Impala對(duì)內(nèi)存的需求太大,沒(méi)有過(guò)多資源部署;
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中的表。
PS: Spark不是一門短時(shí)間內(nèi)就能掌握的技術(shù),因此建議在了解了Spark之后,可以先從SparkSQL入手,循序漸進(jìn)。
關(guān)于Spark和SparkSQL,可參考http://lxw1234.com/archives/category/spark
如果你認(rèn)真完成了上面的學(xué)習(xí)和實(shí)踐,此時(shí),你的大數(shù)據(jù)平臺(tái)應(yīng)該是這樣的:
第六章:一夫多妻制請(qǐng)不要被這個(gè)名字所誘惑。其實(shí)我想說(shuō)的是數(shù)據(jù)的一次采集、多次消費(fèi)。
在實(shí)際業(yè)務(wù)場(chǎng)景下,特別是對(duì)于一些監(jiān)控日志,想即時(shí)的從日志中了解一些指標(biāo)(關(guān)于實(shí)時(shí)計(jì)算,后面章節(jié)會(huì)有介紹),這時(shí)候,從HDFS上分析就太慢了,盡管是通過(guò)Flume采集的,但Flume也不能間隔很短就往HDFS上滾動(dòng)文件,這樣會(huì)導(dǎo)致小文件特別多。
為了滿足數(shù)據(jù)的一次采集、多次消費(fèi)的需求,這里要說(shuō)的便是Kafka。
6.1 關(guān)于Kafka
什么是Kafka?
Kafka的核心概念及名詞解釋。
6.2 如何部署和使用Kafka
使用單機(jī)部署Kafka,并成功運(yùn)行自帶的生產(chǎn)者和消費(fèi)者例子。
使用Java程序自己編寫(xiě)并運(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ù)平臺(tái)應(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)按照《寫(xiě)給大數(shù)據(jù)開(kāi)發(fā)初學(xué)者的話3》中第五章和第六章的流程認(rèn)真完整的走了一遍,那么你應(yīng)該已經(jīng)具備以下技能和知識(shí)點(diǎn):
為什么Spark比MapReduce快。使用SparkSQL代替Hive,更快的運(yùn)行SQL。使用Kafka完成數(shù)據(jù)的一次收集,多次消費(fèi)架構(gòu)。自己可以寫(xiě)程序完成Kafka的生產(chǎn)者和消費(fèi)者。從前面的學(xué)習(xí),你已經(jīng)掌握了大數(shù)據(jù)平臺(tái)中的數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)和計(jì)算、數(shù)據(jù)交換等大部分技能,而這其中的每一步,都需要一個(gè)任務(wù)(程序)來(lái)完成,各個(gè)任務(wù)之間又存在一定的依賴性,比如,必須等數(shù)據(jù)采集任務(wù)成功完成后,數(shù)據(jù)計(jì)算任務(wù)才能開(kāi)始運(yùn)行。如果一個(gè)任務(wù)執(zhí)行失敗,需要給開(kāi)發(fā)運(yùn)維人員發(fā)送告警,同時(shí)需要提供完整的日志來(lái)方便查錯(cuò)。
第七章:越來(lái)越多的分析任務(wù)不僅僅是分析任務(wù),數(shù)據(jù)采集、數(shù)據(jù)交換同樣是一個(gè)個(gè)的任務(wù)。這些任務(wù)中,有的是定時(shí)觸發(fā),有點(diǎn)則需要依賴其他任務(wù)來(lái)觸發(fā)。當(dāng)平臺(tái)中有幾百上千個(gè)任務(wù)需要維護(hù)和運(yùn)行時(shí)候,僅僅靠crontab遠(yuǎn)遠(yuǎn)不夠了,這時(shí)便需要一個(gè)調(diào)度監(jiān)控系統(tǒng)來(lái)完成這件事。調(diào)度監(jiān)控系統(tǒng)是整個(gè)數(shù)據(jù)平臺(tái)的中樞系統(tǒng),類似于AppMaster,負(fù)責(zé)分配和監(jiān)控任務(wù)。
7.1 Apache Oozie
1. Oozie是什么?有哪些功能?
2. Oozie可以調(diào)度哪些類型的任務(wù)(程序)?
3. Oozie可以支持哪些任務(wù)觸發(fā)方式?
4. 安裝配置Oozie。
7.2 其他開(kāi)源的任務(wù)調(diào)度系統(tǒng)
Azkaban:
https://azkaban.github.io/
light-task-scheduler:
https://github.com/ltsopensource/light-task-scheduler
Zeus:
https://github.com/alibaba/zeus
等等……
另外,我這邊是之前單獨(dú)開(kāi)發(fā)的任務(wù)調(diào)度與監(jiān)控系統(tǒng),具體請(qǐng)參考《大數(shù)據(jù)平臺(tái)任務(wù)調(diào)度與監(jiān)控系統(tǒng)》.
如果你認(rèn)真完成了上面的學(xué)習(xí)和實(shí)踐,此時(shí),你的大數(shù)據(jù)平臺(tái)應(yīng)該是這樣的:
第八章:我的數(shù)據(jù)要實(shí)時(shí)在第六章介紹Kafka的時(shí)候提到了一些需要實(shí)時(shí)指標(biāo)的業(yè)務(wù)場(chǎng)景,實(shí)時(shí)基本可以分為絕對(duì)實(shí)時(shí)和準(zhǔn)實(shí)時(shí),絕對(duì)實(shí)時(shí)的延遲要求一般在毫秒級(jí),準(zhǔn)實(shí)時(shí)的延遲要求一般在秒、分鐘級(jí)。對(duì)于需要絕對(duì)實(shí)時(shí)的業(yè)務(wù)場(chǎng)景,用的比較多的是Storm,對(duì)于其他準(zhǔn)實(shí)時(shí)的業(yè)務(wù)場(chǎng)景,可以是Storm,也可以是Spark Streaming。當(dāng)然,如果可以的話,也可以自己寫(xiě)程序來(lái)做。
8.1 Storm
1. 什么是Storm?有哪些可能的應(yīng)用場(chǎng)景?
2. Storm由哪些核心組件構(gòu)成,各自擔(dān)任什么角色?
3. Storm的簡(jiǎn)單安裝和部署。
4. 自己編寫(xiě)Demo程序,使用Storm完成實(shí)時(shí)數(shù)據(jù)流計(jì)算。
8.2 Spark Streaming
1. 什么是Spark Streaming,它和Spark是什么關(guān)系?
2. Spark Streaming和Storm比較,各有什么優(yōu)缺點(diǎn)?
3. 使用Kafka + Spark Streaming,完成實(shí)時(shí)計(jì)算的Demo程序。
如果你認(rèn)真完成了上面的學(xué)習(xí)和實(shí)踐,此時(shí),你的大數(shù)據(jù)平臺(tái)應(yīng)該是這樣的:
至此,你的大數(shù)據(jù)平臺(tái)底層架構(gòu)已經(jīng)成型了,其中包括了數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)與計(jì)算(離線和實(shí)時(shí))、數(shù)據(jù)同步、任務(wù)調(diào)度與監(jiān)控這幾大模塊。接下來(lái)是時(shí)候考慮如何更好的對(duì)外提供數(shù)據(jù)了。
第九章:我的數(shù)據(jù)要對(duì)外通常對(duì)外(業(yè)務(wù))提供數(shù)據(jù)訪問(wèn),大體上包含以下方面:
離線:比如,每天將前一天的數(shù)據(jù)提供到指定的數(shù)據(jù)源(DB、FILE、FTP)等;離線數(shù)據(jù)的提供可以采用Sqoop、DataX等離線數(shù)據(jù)交換工具。
實(shí)時(shí):比如,在線網(wǎng)站的推薦系統(tǒng),需要實(shí)時(shí)從數(shù)據(jù)平臺(tái)中獲取給用戶的推薦數(shù)據(jù),這種要求延時(shí)非常低(50毫秒以內(nèi))。
根據(jù)延時(shí)要求和實(shí)時(shí)數(shù)據(jù)的查詢需要,可能的方案有:HBase、Redis、MongoDB、ElasticSearch等。
OLAP分析:OLAP除了要求底層的數(shù)據(jù)模型比較規(guī)范,另外,對(duì)查詢的響應(yīng)速度要求也越來(lái)越高,可能的方案有:Impala、Presto、SparkSQL、Kylin。如果你的數(shù)據(jù)模型比較規(guī)模,那么Kylin是最好的選擇。
即席查詢:即席查詢的數(shù)據(jù)比較隨意,一般很難建立通用的數(shù)據(jù)模型,因此可能的方案有:Impala、Presto、SparkSQL。
這么多比較成熟的框架和方案,需要結(jié)合自己的業(yè)務(wù)需求及數(shù)據(jù)平臺(tái)技術(shù)架構(gòu),選擇合適的。原則只有一個(gè):越簡(jiǎn)單越穩(wěn)定的,就是最好的。
如果你已經(jīng)掌握了如何很好的對(duì)外(業(yè)務(wù))提供數(shù)據(jù),那么你的大數(shù)據(jù)平臺(tái)應(yīng)該是這樣的:
第十章:牛逼高大上的機(jī)器學(xué)習(xí)關(guān)于這塊,我這個(gè)門外漢也只能是簡(jiǎn)單介紹一下了。數(shù)學(xué)專業(yè)畢業(yè)的我非常慚愧,很后悔當(dāng)時(shí)沒(méi)有好好學(xué)數(shù)學(xué)。
在我們的業(yè)務(wù)中,遇到的能用機(jī)器學(xué)習(xí)解決的問(wèn)題大概這么三類:
分類問(wèn)題:包括二分類和多分類,二分類就是解決了預(yù)測(cè)的問(wèn)題,就像預(yù)測(cè)一封郵件是否垃圾郵件;多分類解決的是文本的分類;聚類問(wèn)題:從用戶搜索過(guò)的關(guān)鍵詞,對(duì)用戶進(jìn)行大概的歸類。推薦問(wèn)題:根據(jù)用戶的歷史瀏覽和點(diǎn)擊行為進(jìn)行相關(guān)推薦。大多數(shù)行業(yè),使用機(jī)器學(xué)習(xí)解決的,也就是這幾類問(wèn)題。
入門學(xué)習(xí)線路:
數(shù)學(xué)基礎(chǔ);
機(jī)器學(xué)習(xí)實(shí)戰(zhàn)(Machine Learning in Action),懂Python最好;
SparkMlLib提供了一些封裝好的算法,以及特征處理、特征選擇的方法。
機(jī)器學(xué)習(xí)確實(shí)牛逼高大上,也是我學(xué)習(xí)的目標(biāo)。
那么,可以把機(jī)器學(xué)習(xí)部分也加進(jìn)你的大數(shù)據(jù)平臺(tái)了。
慧都大數(shù)據(jù)為企業(yè)提供大數(shù)據(jù)平臺(tái)搭建與實(shí)施,多行業(yè)大數(shù)據(jù)解決方案與一體化技術(shù)服務(wù),實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)發(fā)展,通過(guò)數(shù)據(jù)創(chuàng)造業(yè)務(wù)價(jià)值。歡迎溝通交流!
非常感謝您讀完創(chuàng)新互聯(lián)的這篇文章:"寫(xiě)給大數(shù)據(jù)開(kāi)發(fā)初學(xué)者的話|附教程",僅為提供更多信息供用戶參考使用或?yàn)閷W(xué)習(xí)交流的方便。我們公司提供:網(wǎng)站建設(shè)、網(wǎng)站制作、官網(wǎng)建設(shè)、SEO優(yōu)化、小程序制作等服務(wù),歡迎聯(lián)系我們提供您的需求。
新聞名稱:寫(xiě)給大數(shù)據(jù)開(kāi)發(fā)初學(xué)者的話|附教程
URL標(biāo)題:http://jinyejixie.com/news37/323837.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、品牌網(wǎng)站設(shè)計(jì)、軟件開(kāi)發(fā)、企業(yè)網(wǎng)站制作、用戶體驗(yàn)、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容