久久99国产精品尤物|久久黄色视频二区|三级在线播放试看无码一区二区|国产综合在线观看精品12

電話:+86 574 88168918 郵(you)箱:sales@aliance.cn

首頁-新聞動態-新聞詳情

大數據架構師從入門到精通 學習必看寶典

發布(bu)時間:作者:cobinet瀏覽:530次(ci)來源:jifang360
CobiNet(寧波)推薦文章:

經(jing)常有初學(xue)(xue)者在博客和(he)QQ問(wen)我,自己想往(wang)大數據方向發(fa)展,該學(xue)(xue)哪些技(ji)術,學(xue)(xue)習路線(xian)是(shi)(shi)什么樣的,覺得大數據很(hen)(hen)(hen)火,就業(ye)(ye)很(hen)(hen)(hen)好,薪(xin)資很(hen)(hen)(hen)高。如(ru)果自己很(hen)(hen)(hen)迷茫,為了這些原因想往(wang)大數據方向發(fa)展,也可以,那么我就想問(wen)一下,你的專(zhuan)業(ye)(ye)是(shi)(shi)什么,對于(yu)計(ji)(ji)算機/軟(ruan)(ruan)件(jian)(jian),你的興趣是(shi)(shi)什么?是(shi)(shi)計(ji)(ji)算機專(zhuan)業(ye)(ye),對操作系統(tong)(tong)、硬件(jian)(jian)、網絡(luo)、服務(wu)器感興趣?是(shi)(shi)軟(ruan)(ruan)件(jian)(jian)專(zhuan)業(ye)(ye),對軟(ruan)(ruan)件(jian)(jian)開發(fa)、編程、寫代(dai)碼(ma)感興趣?還(huan)是(shi)(shi)數學(xue)(xue)、統(tong)(tong)計(ji)(ji)學(xue)(xue)專(zhuan)業(ye)(ye),對數據和(he)數字特(te)別感興趣。

其實這就是(shi)想告訴你的大(da)數據(ju)的三個發(fa)展方向,平臺搭建/優化/運維/監控、大(da)數據(ju)開發(fa)/ 設計/ 架構、數據(ju)分(fen)析/挖掘。請(qing)不要問我哪個容易,哪個前(qian)景(jing)好,哪個錢多。

先扯一下大數據的4V特(te)征:

數據量大,TB- PB

數(shu)據類(lei)型繁多(duo),結構化(hua)、非結構化(hua)文本、日志、視頻、圖(tu)片、地理位置等;

商業價(jia)值高,但是(shi)這種價(jia)值需要(yao)在海量(liang)數據(ju)之上,通過(guo)數據(ju)分析(xi)與機器學習更(geng)快速的挖(wa)掘出來(lai);

處(chu)理(li)時效性(xing)高,海(hai)量數據的處(chu)理(li)需求不再局限在離線計算(suan)當中(zhong)。

現如今,正式為了應對大(da)(da)數(shu)據的這幾(ji)個特點,開源(yuan)的大(da)(da)數(shu)據框架越(yue)來(lai)越(yue)多(duo),越(yue)來(lai)越(yue)強,先(xian)列(lie)舉一些常見的:

文件存(cun)儲(chu):Hadoop HDFS、Tachyon、KFS

離線計算:Hadoop MapReduce、Spark

流(liu)式、實(shi)時(shi)計(ji)算:Storm、Spark Streaming、S4、Heron

K-V、NOSQL數據庫:HBase、Redis、MongoDB

資源管理:YARN、Mesos

日志收集:Flume、Scribe、Logstash、Kibana

消息系統:Kafka、StormMQ、ZeroMQ、RabbitMQ

查詢分(fen)析(xi):Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid

分布式協(xie)調服務:Zookeeper

集群管理與監控(kong):Ambari、Ganglia、Nagios、Cloudera Manager

數據挖掘(jue)、機器學習:Mahout、Spark MLLib

數據同步:Sqoop

任務(wu)調度:Oozie

眼花了吧,上(shang)面的有30多種吧,別說精(jing)通了,全部都(dou)會(hui)使用(yong)的,估計(ji)也沒幾個(ge)。就我個(ge)人而言,主要(yao)經驗是在(zai)第二個(ge)方(fang)向(開發/設計(ji)/架構),且聽(ting)聽(ting)我的建議吧。

第(di)一章:初(chu)識(shi)Hadoop

1.1 學會百(bai)度與Google

不論(lun)遇(yu)到(dao)什(shen)么問題,先試試搜索并自己解決。Google首選,翻不過(guo)去的,就(jiu)用百度吧(ba)。

1.2 參考資料首(shou)選官方文檔

特(te)別是(shi)對于入門來說,官方(fang)文(wen)檔永遠(yuan)是(shi)首選(xuan)文(wen)檔。相信搞這塊的大(da)多(duo)是(shi)文(wen)化(hua)人,英(ying)文(wen)湊合就(jiu)行,實在看不下去的,請參考第一步。

1.3 先讓(rang)Hadoop跑(pao)起來(lai)

Hadoop可以算是大數據(ju)存儲(chu)和計(ji)算的(de)開山(shan)鼻祖(zu),現在大多開源的(de)大數據(ju)框架都依賴Hadoop或者與它能很好的(de)兼容。

關于Hadoop,你至少需要搞清楚以下是什么:

Hadoop 1.0、Hadoop 2.0

MapReduce、HDFS

NameNode、DataNode

JobTracker、TaskTracker

Yarn、ResourceManager、NodeManager

自己搭(da)建Hadoop,請使用第一步(bu)和第二步(bu),能讓它(ta)跑(pao)起(qi)來就行。建議先使用安裝(zhuang)包(bao)命令(ling)行安裝(zhuang),不要使用管理工(gong)具(ju)安裝(zhuang)。另外(wai):Hadoop1.0知道它(ta)就行了,現在(zai)都(dou)用Hadoop 2.0.

1.4 試(shi)試(shi)使(shi)用Hadoop

HDFS目錄操作(zuo)命令;上傳、下載文件命令;提(ti)交運行MapReduce示例(li)程序(xu);打開Hadoop WEB界(jie)面,查看Job運行狀(zhuang)態,查看Job運行日志。知道Hadoop的系統日志在哪里。

1.5 你該了(le)解它(ta)們的原理了(le)

MapReduce:如(ru)何(he)分而治之;HDFS:數據到底在哪里,什么(me)是副本;

Yarn到底是什(shen)么(me),它(ta)能(neng)干什(shen)么(me);NameNode到底在(zai)干些(xie)什(shen)么(me);Resource Manager到底在(zai)干些(xie)什(shen)么(me);

1.6 自(zi)己寫一個(ge)MapReduce程序

請(qing)仿照WordCount例子,自(zi)己寫一個(照抄(chao)也行)WordCount程序,

打包(bao)并提交到Hadoop運(yun)行。你(ni)不(bu)會Java?Shell、Python都(dou)可(ke)以(yi),有個東西叫Hadoop Streaming。如果(guo)你(ni)認真完成(cheng)了以(yi)上幾步(bu),恭喜你(ni),你(ni)的一只腳已(yi)經進來了。

第二章:更高效的WordCount

2.1 學點SQL吧

你(ni)知(zhi)道數(shu)據庫嗎?你(ni)會(hui)寫SQL嗎?如果不會(hui),請學(xue)點SQL吧。

2.2 SQL版WordCount

在1.6中,你(ni)寫(或者抄)的WordCount一共有幾行代碼?給你(ni)看看我的:

SELECT word,COUNT(1) FROM wordcount GROUP BY word;

這便是(shi)(shi)SQL的(de)魅力,編程需要(yao)幾十行(xing)(xing),甚至上百行(xing)(xing)代(dai)碼,我這一句就搞定;使用SQL處(chu)理分析Hadoop上的(de)數(shu)據(ju),方便、高效(xiao)、易上手、更(geng)是(shi)(shi)趨(qu)勢。不論(lun)是(shi)(shi)離線計算還是(shi)(shi)實時計算,越來越多的(de)大數(shu)據(ju)處(chu)理框架都在(zai)積極提供SQL接口。

2.3 SQL On Hadoop之Hive

什么是(shi)Hive?官方給的解釋(shi)如下:The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax.

為什么說Hive是(shi)數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)倉庫工具,而不(bu)(bu)是(shi)數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)庫工具呢?有的(de)(de)(de)(de)朋友可(ke)能不(bu)(bu)知道數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)倉庫,數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)倉庫是(shi)邏輯上(shang)的(de)(de)(de)(de)概念,底層使用的(de)(de)(de)(de)是(shi)數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)庫,數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)倉庫中的(de)(de)(de)(de)數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)有這兩個特點:最全的(de)(de)(de)(de)歷史數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)(海量)、相對(dui)(dui)穩(wen)(wen)定(ding)的(de)(de)(de)(de);所謂(wei)相對(dui)(dui)穩(wen)(wen)定(ding),指的(de)(de)(de)(de)是(shi)數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)倉庫不(bu)(bu)同(tong)于業務(wu)系統數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)庫,數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)經常(chang)會被(bei)更新,數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)一(yi)旦進入數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)倉庫,很(hen)少會被(bei)更新和刪除,只(zhi)會被(bei)大量查(cha)詢(xun)。而Hive,也是(shi)具備這兩個特點,因此,Hive適(shi)合做(zuo)海量數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)的(de)(de)(de)(de)數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)倉庫工具,而不(bu)(bu)是(shi)數(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(ju)庫工具。

2.4 安裝配置Hive

請參考1.1 和 1.2 完成Hive的安裝配置。可以正(zheng)常進(jin)入Hive命令行。

2.5 試(shi)試(shi)使用Hive

請(qing)參考1.1 和 1.2 ,在Hive中(zhong)創建wordcount表,并運行2.2中(zhong)的SQL語句。

在Hadoop WEB界面中找到剛才運行的SQL任務。看(kan)SQL查詢結(jie)果是否和1.4中MapReduce中的結(jie)果一(yi)致。

2.6 Hive是怎么工作的

明(ming)明(ming)寫的是SQL,為什么Hadoop WEB界面中看到的是MapReduce任務?

2.7 學會Hive的基本命(ming)令

創(chuang)建、刪(shan)除表;加載數(shu)據到表;下載Hive表的(de)數(shu)據;請參考1.2,學習更多關于Hive的(de)語法和(he)命令。

如果你已(yi)經按照《寫(xie)給(gei)大數據開(kai)發初學者的(de)話》中第一(yi)章和(he)第二章的(de)流程認真完(wan)整的(de)走了一(yi)遍,那么你應該(gai)已(yi)經具備以下技能(neng)和(he)知(zhi)識點:

MapReduce的(de)原理(還是那個經典的(de)題目,一個10G大(da)小的(de)文件,給定1G大(da)小的(de)內存,如何使用Java程(cheng)序統計出現次數最多的(de)10個單詞及(ji)次數);

HDFS讀寫數(shu)據(ju)的流程;向HDFS中PUT數(shu)據(ju);從HDFS中下載數(shu)據(ju);

自己會寫(xie)簡單的MapReduce程序(xu),運行出(chu)現問題,知道(dao)在哪(na)里查(cha)看日志;

會寫簡單(dan)的SELECT、WHERE、GROUP BY等SQL語句(ju);

Hive SQL轉換(huan)成MapReduce的大致流(liu)程;

Hive中常見的語句:創建(jian)表、刪(shan)除表、往表中加載(zai)數據、分區、將表中數據下載(zai)到本(ben)地;

從上(shang)面的(de)(de)學習,你已(yi)經(jing)了解到,HDFS是(shi)(shi)Hadoop提供(gong)的(de)(de)分(fen)布(bu)式存儲框(kuang)架(jia),它可以(yi)用(yong)來存儲海量數據,MapReduce是(shi)(shi)Hadoop提供(gong)的(de)(de)分(fen)布(bu)式計算框(kuang)架(jia),它可以(yi)用(yong)來統計和(he)分(fen)析HDFS上(shang)的(de)(de)海量數據,而Hive則(ze)是(shi)(shi)SQL On Hadoop,Hive提供(gong)了SQL接口,開發(fa)人員只需(xu)要(yao)編寫簡單易上(shang)手的(de)(de)SQL語句,Hive負責把SQL翻譯成MapReduce,提交運行(xing)。

此(ci)時,你的 大數(shu)(shu)據平(ping)臺(tai) 是(shi)這(zhe)樣(yang)的:那么問題來了,海(hai)量(liang)數(shu)(shu)據如何到HDFS上呢?

第(di)三章:把別處的數據搞到Hadoop上(shang)

此處也可(ke)以叫(jiao)做數(shu)據采(cai)集,把各個(ge)數(shu)據源的數(shu)據采(cai)集到Hadoop上。

3.1 HDFS PUT命令(ling)

這個在(zai)前面你應該已經(jing)使用過(guo)了(le)。put命令在(zai)實際環境(jing)中(zhong)也(ye)比較(jiao)常(chang)用,通常(chang)配合shell、python等腳本語言(yan)來(lai)使用。建議熟練(lian)掌握。

3.2 HDFS API

HDFS提供了寫數(shu)據的API,自己用編(bian)程語言將(jiang)數(shu)據寫入HDFS,put命(ming)令本身(shen)也是使用API。

實際環(huan)境中一般(ban)自己較少編寫程序(xu)使(shi)(shi)用API來寫數據到HDFS,通常(chang)都是使(shi)(shi)用其他(ta)框架(jia)封裝好的方法。比如:Hive中的INSERT語句,Spark中的saveAsTextfile等。建議了(le)解原理,會寫Demo。

3.3 Sqoop

Sqoop是(shi)一個主要用(yong)于(yu)Hadoop/Hive與傳統關系型數據(ju)庫(ku),Oracle、MySQL、SQLServer等(deng)之間進行數據(ju)交(jiao)換的開源框架。就像Hive把SQL翻譯成MapReduce一樣(yang),Sqoop把你指定的參數翻譯成MapReduce,提交(jiao)到Hadoop運行,完(wan)成Hadoop與其他數據(ju)庫(ku)之間的數據(ju)交(jiao)換。

自己下載和配置(zhi)Sqoop(建(jian)議先使用(yong)Sqoop1,Sqoop2比較復雜)。了解(jie)Sqoop常用(yong)的配置(zhi)參數和方法(fa)。

使(shi)用Sqoop完(wan)成從(cong)MySQL同步數據(ju)到HDFS;使(shi)用Sqoop完(wan)成從(cong)MySQL同步數據(ju)到Hive表(biao);如果(guo)后(hou)續選型確定使(shi)用Sqoop作為數據(ju)交換(huan)工具,那么建議熟練掌握,否則,了解和(he)會(hui)用Demo即可。

3.4 Flume

Flume是一個分布式的(de)海量日志采集(ji)(ji)和(he)傳輸(shu)框架,因為 采集(ji)(ji)和(he)傳輸(shu)框架 ,所以(yi)它并不適(shi)合關系(xi)型數據庫的(de)數據采集(ji)(ji)和(he)傳輸(shu)。Flume可以(yi)實時的(de)從網絡協(xie)議、消息系(xi)統(tong)、文件(jian)系(xi)統(tong)采集(ji)(ji)日志,并傳輸(shu)到HDFS上(shang)。

因(yin)此(ci),如果(guo)你的(de)業務有這些數據源的(de)數據,并(bing)且需要(yao)實時(shi)的(de)采(cai)集(ji),那(nei)么就應(ying)該考慮使用Flume。

下載(zai)和(he)配(pei)置Flume。使用Flume監(jian)控(kong)一個不斷追加數(shu)據的文件,并將數(shu)據傳輸到HDFS;Flume的配(pei)置和(he)使用較為復雜,如果(guo)你沒有(you)足夠(gou)的興趣和(he)耐心,可(ke)以(yi)先跳過Flume。

3.5 阿(a)里開源的(de)DataX

之所以介紹(shao)這個,是(shi)因為我們(men)公(gong)司目(mu)前(qian)使用的Hadoop與關系型數據(ju)庫(ku)數據(ju)交換的工具,就(jiu)是(shi)之前(qian)基于DataX開發的,非常好用。

可(ke)(ke)以參考我的博(bo)文《異(yi)構數據(ju)源(yuan)海(hai)量(liang)數據(ju)交換工具(ju)-Taobao DataX 下載(zai)和使用》。現在(zai)DataX已經是3.0版本,支(zhi)持很(hen)多數據(ju)源(yuan)。你(ni)也可(ke)(ke)以在(zai)其之上做二次開(kai)發。有(you)興趣的可(ke)(ke)以研究和使用一下,對比一下它(ta)與Sqoop。

第四章:把Hadoop上(shang)的(de)數(shu)據搞到(dao)別(bie)處去

Hive和MapReduce進行分(fen)析了(le)。那么接(jie)下來(lai)的(de)問題是,分(fen)析完的(de)結果如何從(cong)Hadoop上同步到其他系統和應用中去呢?其實,此(ci)處的(de)方法和第三(san)章基(ji)本一致的(de)。

4.1 HDFS GET命令(ling)

把HDFS上的文件GET到本地。需要熟練掌握。

4.2 HDFS API

同3.2.

4.3 Sqoop

同3.3.使(shi)用(yong)Sqoop完成(cheng)將(jiang)(jiang)HDFS上的(de)(de)文件同步到MySQL;使(shi)用(yong)Sqoop完成(cheng)將(jiang)(jiang)Hive表中的(de)(de)數據同步到MySQL。

4.4 DataX

同3.5. 如果你認真完成(cheng)了上面的學習和(he)實踐,此時,你的 大數據平(ping)臺 應該是這(zhe)樣的:

如果你(ni)已(yi)經按照《寫(xie)給大數據開發初學者的(de)話2》中第三章(zhang)和第四(si)章(zhang)的(de)流程認真完整的(de)走(zou)了一遍,那么你(ni)應該(gai)已(yi)經具備以(yi)下技能和知識點(dian):

知道如何(he)把已有(you)的(de)數(shu)據采集(ji)(ji)到HDFS上,包括離線(xian)采集(ji)(ji)和實(shi)時采集(ji)(ji);你已經知道sqoop(或者還有(you)DataX)是HDFS和其他數(shu)據源之間的(de)數(shu)據交換工具;你已經知道flume可(ke)以用作(zuo)實(shi)時的(de)日志采集(ji)(ji)。

從前(qian)面的(de)學習,對于大數(shu)據平臺,你已(yi)經(jing)掌握的(de)不(bu)少的(de)知識和(he)技能(neng),搭建Hadoop集群,把(ba)數(shu)據采集到Hadoop上,使用Hive和(he)MapReduce來分(fen)析數(shu)據,把(ba)分(fen)析結果(guo)同步到其(qi)他(ta)數(shu)據源。

接下(xia)來的(de)問題來了,Hive使(shi)用的(de)越來越多(duo),你會發(fa)現很多(duo)不爽的(de)地方,特別是(shi)速度慢,大多(duo)情況(kuang)下(xia),明明我的(de)數據量很小,它都要申(shen)請資源,啟動MapReduce來執(zhi)行。

第五章:快一點(dian)吧,我的SQL

其實大家都已經發現Hive后臺使用MapReduce作為執行引(yin)擎,實在是有點慢。因此(ci)SQL On Hadoop的框(kuang)架越來越多,按(an)我的了解,最常(chang)用的按(an)照流行度依次為SparkSQL、Impala和Presto.這三種框(kuang)架基于半內(nei)存(cun)或者全內(nei)存(cun),提供了SQL接(jie)口來快速查詢分析Hadoop上的數據(ju)。關于三者的比較,請參考1.1.

我們(men)目前使(shi)用的是SparkSQL,至于(yu)為什么(me)用SparkSQL,原(yuan)因(yin)大概有以下吧:使(shi)用Spark還做了其他事情,不想引入過(guo)多的框架(jia);Impala對內存的需(xu)求太大,沒有過(guo)多資源部署(shu)。

5.1 關于Spark和SparkSQL

什么(me)是Spark,什么(me)是SparkSQL。

Spark有的(de)核心概念及(ji)名詞解釋。

SparkSQL和(he)(he)Spark是(shi)什么(me)關系,SparkSQL和(he)(he)Hive是(shi)什么(me)關系。

SparkSQL為什(shen)么比Hive跑的快。

5.2 如何(he)部署和運行SparkSQL

Spark有哪些部署模式?

如何在Yarn上(shang)運行(xing)SparkSQL?

使用SparkSQL查(cha)詢Hive中的表(biao)。Spark不是一門短時間內就能掌握的技術,因此建議在了解了Spark之后,可以先從SparkSQL入手,循(xun)序漸(jian)進。

關于Spark和SparkSQL,如果(guo)你認真完成了上面的學習和實踐,此時,你的 大數據平臺(tai) 應該是這(zhe)樣的。

第六章:一夫(fu)多(duo)妻制(zhi)

 請不要被這個名字所(suo)誘惑。其實我想說的(de)是數據的(de)一(yi)次(ci)采集、多次(ci)消費。

在實際業務場景下,特(te)別(bie)是(shi)對于一些(xie)監(jian)控日志,想即時(shi)的(de)從(cong)日志中了(le)解一些(xie)指標(關于實時(shi)計算,后面(mian)章節會有介紹),這(zhe)時(shi)候,從(cong)HDFS上分析就太慢了(le),盡管是(shi)通過Flume采集(ji)的(de),但Flume也不能間隔很短就往(wang)HDFS上滾動文件,這(zhe)樣(yang)會導(dao)致小文件特(te)別(bie)多。

為了(le)滿足數(shu)據的(de)一次采集、多次消費(fei)的(de)需(xu)求(qiu),這(zhe)里要說的(de)便(bian)是Kafka。

6.1 關于Kafka

什么(me)是Kafka?Kafka的核(he)心概念(nian)及名詞(ci)解釋。

6.2 如何部署(shu)和(he)使用Kafka

使(shi)用單機部署Kafka,并(bing)成功(gong)運行(xing)自帶的生產者和(he)消費者例子。使(shi)用Java程(cheng)序(xu)自己編寫(xie)并(bing)運行(xing)生產者和(he)消費者程(cheng)序(xu)。Flume和(he)Kafka的集成,使(shi)用Flume監(jian)控日志,并(bing)將日志數據實時發送至Kafka。

如果你認(ren)真完成了上面的(de)學習和實(shi)踐,此時,你的(de) 大(da)數(shu)據平臺 應該是這樣的(de)。

這時,使用Flume采集的數據(ju),不是(shi)直接(jie)到HDFS上(shang),而是(shi)先(xian)到Kafka,Kafka中的數據(ju)可以由多個消費(fei)(fei)者同時消費(fei)(fei),其(qi)中一個消費(fei)(fei)者,就是(shi)將數據(ju)同步(bu)到HDFS。

如果你已經按照(zhao)《寫給大數據開發(fa)初學者的(de)話3》中第五章和第六章的(de)流程(cheng)認(ren)真完整的(de)走(zou)了一遍(bian),那(nei)么你應該已經具備(bei)以下技能和知識點(dian):

為什么Spark比(bi)MapReduce快。

使用SparkSQL代替Hive,更快的(de)運(yun)行SQL。

使用Kafka完成數據的一(yi)次(ci)(ci)收集,多次(ci)(ci)消費(fei)架構。

自己可以寫程序完成Kafka的生產者和消費者。

從前面(mian)的(de)學習,你已經(jing)掌握(wo)了(le)大(da)數(shu)據(ju)平臺中的(de)數(shu)據(ju)采集、數(shu)據(ju)存儲和(he)計算、數(shu)據(ju)交換等大(da)部(bu)分技能,而(er)這其中的(de)每一(yi)(yi)步,都(dou)需要(yao)一(yi)(yi)個任(ren)務(wu)(程(cheng)序)來完成(cheng),各個任(ren)務(wu)之間(jian)又存在一(yi)(yi)定的(de)依(yi)賴性,比如,必須等數(shu)據(ju)采集任(ren)務(wu)成(cheng)功(gong)完成(cheng)后,數(shu)據(ju)計算任(ren)務(wu)才(cai)能開(kai)始運行。如果一(yi)(yi)個任(ren)務(wu)執行失敗,需要(yao)給開(kai)發運維人員發送告警,同(tong)時需要(yao)提供完整的(de)日(ri)志(zhi)來方便查錯。

第七章(zhang):越來(lai)越多的分析任務

不僅僅是(shi)分(fen)析任務(wu),數據采集、數據交換同樣是(shi)一個(ge)個(ge)的任務(wu)。這(zhe)些(xie)任務(wu)中(zhong),有(you)的是(shi)定時觸(chu)發,有(you)點(dian)則需要(yao)依賴其他(ta)任務(wu)來(lai)觸(chu)發。當平臺(tai)中(zhong)有(you)幾百上(shang)千個(ge)任務(wu)需要(yao)維護和(he)運行時候,僅僅靠crontab遠(yuan)遠(yuan)不夠了(le),這(zhe)時便需要(yao)一個(ge)調度(du)監控(kong)系(xi)(xi)統來(lai)完成這(zhe)件事。調度(du)監控(kong)系(xi)(xi)統是(shi)整個(ge)數據平臺(tai)的中(zhong)樞(shu)系(xi)(xi)統,類似于(yu)AppMaster,負(fu)責分(fen)配(pei)和(he)監控(kong)任務(wu)。

7.1 Apache Oozie

1. Oozie是什么?有哪些功(gong)能?

2. Oozie可以調度哪些類型的任務(程序(xu))?

3. Oozie可以支持哪些(xie)任務觸發方式?

4. 安裝配置Oozie。

7.2 其他開源的任務(wu)調度系統

Azkaban,light-task-scheduler,Zeus,等等。另外,我這邊(bian)是之前單獨開發(fa)的(de)任務調度與(yu)監(jian)控(kong)系統,具體(ti)請參考《大(da)數(shu)據平(ping)臺任務調度與(yu)監(jian)控(kong)系統》。如果(guo)你(ni)認真完(wan)成了上面的(de)學習和實(shi)踐,此時,你(ni)的(de) 大(da)數(shu)據平(ping)臺 應該是這樣的(de):

第(di)八章(zhang):我(wo)的數據要實時

在第六(liu)章介紹Kafka的時(shi)候提到了一些需要實(shi)(shi)(shi)時(shi)指標的業(ye)務(wu)場景,實(shi)(shi)(shi)時(shi)基本可以(yi)分為絕對(dui)實(shi)(shi)(shi)時(shi)和準(zhun)(zhun)實(shi)(shi)(shi)時(shi),絕對(dui)實(shi)(shi)(shi)時(shi)的延遲(chi)要求(qiu)一般在毫秒級,準(zhun)(zhun)實(shi)(shi)(shi)時(shi)的延遲(chi)要求(qiu)一般在秒、分鐘(zhong)級。對(dui)于(yu)需要絕對(dui)實(shi)(shi)(shi)時(shi)的業(ye)務(wu)場景,用(yong)的比較多的是(shi)Storm,對(dui)于(yu)其他準(zhun)(zhun)實(shi)(shi)(shi)時(shi)的業(ye)務(wu)場景,可以(yi)是(shi)Storm,也可以(yi)是(shi)Spark Streaming。當然(ran),如果可以(yi)的話,也可以(yi)自己寫程(cheng)序來做。

8.1 Storm

1. 什(shen)么(me)是(shi)Storm?有(you)哪些可能的應用場景?

2. Storm由哪些(xie)核心(xin)組件構成(cheng),各自擔任什么角色?

3. Storm的簡(jian)單安(an)裝和部署。

4. 自己編寫Demo程序,使用Storm完成實時數據流計算。

8.2 Spark Streaming

1. 什么(me)是Spark Streaming,它和Spark是什么(me)關系?

2. Spark Streaming和Storm比(bi)較,各(ge)有什么優缺點?

3. 使用Kafka + Spark Streaming,完成實時計算的Demo程序。

至此,你的大數(shu)(shu)據平臺(tai)底層架構(gou)已經成型了,其中包括了數(shu)(shu)據采集、數(shu)(shu)據存(cun)儲與(yu)計算(離線和實時(shi))、數(shu)(shu)據同步、任(ren)務調度與(yu)監控這幾大模塊。接下來是時(shi)候考慮如何(he)更好(hao)的對外(wai)提供數(shu)(shu)據了。

第九章(zhang):我(wo)的數(shu)據要(yao)對外(wai)

通常對外(業務)提供(gong)數據訪問,大體上包(bao)含(han)以下(xia)方面。

離(li)線(xian):比如,每天將前一(yi)天的數(shu)據提(ti)供到(dao)指定的數(shu)據源(DB、FILE、FTP)等;離(li)線(xian)數(shu)據的提(ti)供可以采(cai)用(yong)Sqoop、DataX等離(li)線(xian)數(shu)據交換(huan)工(gong)具(ju)。

實時:比(bi)如(ru),在線(xian)網(wang)站的(de)(de)推(tui)薦系統,需(xu)要(yao)實時從數(shu)(shu)據平臺中獲(huo)取給(gei)用戶(hu)的(de)(de)推(tui)薦數(shu)(shu)據,這種要(yao)求延(yan)時非(fei)常低(50毫(hao)秒以內)。根據延(yan)時要(yao)求和(he)實時數(shu)(shu)據的(de)(de)查詢需(xu)要(yao),可(ke)能的(de)(de)方(fang)案有:HBase、Redis、MongoDB、ElasticSearch等。

OLAP分析(xi):OLAP除了要(yao)求底(di)層的(de)(de)數(shu)據(ju)模(mo)型比(bi)較(jiao)規(gui)范,另外(wai),對查詢的(de)(de)響(xiang)應速度(du)要(yao)求也越來越高,可能(neng)的(de)(de)方案有:Impala、Presto、SparkSQL、Kylin。如果你的(de)(de)數(shu)據(ju)模(mo)型比(bi)較(jiao)規(gui)模(mo),那么Kylin是最好的(de)(de)選擇(ze)。

 即席(xi)查詢:即席(xi)查詢的(de)數據比較隨意,一般很(hen)難建立通用的(de)數據模型(xing),因(yin)此可(ke)能的(de)方案有:Impala、Presto、SparkSQL。

這么多比較(jiao)成熟的框(kuang)架和方案,需要結合(he)自己的業務需求及數據平臺技術架構(gou),選擇合(he)適的。原則只有一個:越簡(jian)單越穩定的,就(jiu)是最(zui)好(hao)的。

如果你(ni)已經掌握了如何很好的(de)對外(業務(wu))提供數(shu)據,那么你(ni)的(de) 大(da)數(shu)據平臺(tai) 應該(gai)是這樣的(de):

第(di)十章:牛逼(bi)高大(da)上的機器學習(xi)

關于這(zhe)塊,我這(zhe)個門外漢也(ye)只能(neng)(neng)是簡單介(jie)紹一下了。數學(xue)專業畢業的我非常慚(can)愧,很后(hou)悔當時沒(mei)有好好學(xue)數學(xue)。在我們的業務中,遇(yu)到(dao)的能(neng)(neng)用機器學(xue)習解決的問題大概這(zhe)么(me)三類:

分(fen)類(lei)(lei)問題(ti):包括二分(fen)類(lei)(lei)和多分(fen)類(lei)(lei),二分(fen)類(lei)(lei)就(jiu)(jiu)是(shi)解決了預測的問題(ti),就(jiu)(jiu)像預測一封郵件(jian)是(shi)否垃(la)圾郵件(jian);多分(fen)類(lei)(lei)解決的是(shi)文(wen)本的分(fen)類(lei)(lei);

聚類(lei)問(wen)題:從用戶搜索過的(de)關(guan)鍵詞,對用戶進行大概(gai)的(de)歸類(lei)。

推薦(jian)問題:根據用戶的歷史瀏覽(lan)和點擊行為(wei)進行相(xiang)關推薦(jian)。

大多數行業,使用機(ji)器學(xue)(xue)(xue)習(xi)解決的,也就是這幾類(lei)問題。入(ru)門(men)學(xue)(xue)(xue)習(xi)線(xian)路,數學(xue)(xue)(xue)基礎;機(ji)器學(xue)(xue)(xue)習(xi)實戰,懂Python最好;SparkMlLib提供了一些封裝好的算(suan)法,以及(ji)特征處理、特征選擇的方法。

機器(qi)學習(xi)確(que)實牛逼高大(da)上,也(ye)是我學習(xi)的目標(biao)。那么(me),可(ke)以把機器(qi)學習(xi)部分也(ye)加進你(ni)的 大(da)數據平臺 了(le)。

 

文章編輯:CobiNet(寧波)  
本公司專注于電訊配件,銅纜綜合布線系列領域產品研發生產超五類,六類,七類線,屏蔽模塊,配線架及相關模塊(kuai)配件的研發和生產。

歡迎來電咨詢0574 88168918,郵箱sales@aliance.cn,網址aliance.cn

相關新聞

 

?2016-2019寧波科博通信技術(shu)有限公司(si)版(ban)權所有