我所知道的大數(shù)據(jù)技術(shù)

今天看到一篇有關(guān)云計(jì)算技術(shù)文章,把虛擬化和虛機(jī)集群管理OpenStack、容器Docker和容器集群管理Kubernetes、通用資源調(diào)度管理器Mesos和大數(shù)據(jù)處理調(diào)度管理器YARN、容器隔離微服務(wù)和SOA大集成都講透了。我也手癢想把大數(shù)據(jù)這塊給大家講講。

一、先說各種數(shù)據(jù)存儲(chǔ)

數(shù)據(jù)是個(gè)很泛的概念,但是我們腦海里第一反應(yīng)的就是關(guān)系型數(shù)據(jù)庫和EXCEL這種二維表是數(shù)據(jù)。

而現(xiàn)在數(shù)據(jù)各種各樣特色,有文檔、有圖片、有流式的音頻視頻、有日志數(shù)據(jù)、有IM消息數(shù)據(jù)、有索引數(shù)據(jù)、有社交應(yīng)用的網(wǎng)狀關(guān)系數(shù)據(jù)、有地圖數(shù)據(jù)。他們對(duì)存儲(chǔ)訪問都有不同的要求,因而NoSQL興起了。

如KV型,先后出現(xiàn)了Memcached、Redis。如文檔型,出現(xiàn)了CouchDB、MongoDB。如日志數(shù)據(jù),也出現(xiàn)了Facebook Scribe、Flume、Logstash。

即使在傳統(tǒng)關(guān)系型數(shù)據(jù)領(lǐng)域,由于大數(shù)據(jù)規(guī)模也出現(xiàn)了真正的分布式關(guān)系型數(shù)據(jù)庫,如GreenPlum、TiDB、OceanBase

為了多維分析,也出現(xiàn)了專門的列式數(shù)據(jù)庫,如HBase。

二、數(shù)據(jù)倉庫

各式各樣的數(shù)據(jù),經(jīng)由各種上層應(yīng)用進(jìn)行了采集和存儲(chǔ)。但我們一提到大數(shù)據(jù),自然想到的就是大數(shù)據(jù)分析。大數(shù)據(jù)分析的第一步就是大數(shù)據(jù)倉庫建設(shè)。

大數(shù)據(jù)倉庫建設(shè),必要的工作就是ETL(抽取、轉(zhuǎn)換、導(dǎo)入)。抽取,這步就又細(xì)分為:數(shù)據(jù)抽取、數(shù)據(jù)清洗、數(shù)據(jù)校驗(yàn)。在轉(zhuǎn)換這步,我們也需要關(guān)注數(shù)據(jù)安全脫敏,也就是說,進(jìn)入大數(shù)據(jù)倉庫的數(shù)據(jù)需要分級(jí)。

不過大家一般建設(shè)大數(shù)據(jù)倉庫,首先做的第一個(gè)應(yīng)用工作就是:主數(shù)據(jù)治理。所以這個(gè)第一期,需要做:主數(shù)據(jù)標(biāo)準(zhǔn)制定、主數(shù)據(jù)清洗與校驗(yàn)、主數(shù)據(jù)轉(zhuǎn)換(拆分合并)、主數(shù)據(jù)復(fù)制分發(fā)、主數(shù)據(jù)訪問OpenAPI。

數(shù)據(jù)復(fù)制分發(fā),我們可以使用消息隊(duì)列和調(diào)度服務(wù)來工作。消息隊(duì)列如Kafka、ZeroMQ、ActiveMQ、RabbitMQ。調(diào)度服務(wù)如ZooKeeper。

數(shù)據(jù)抽取傳輸開源項(xiàng)目,我能看到的Sqoop on Hadoop。可能很多數(shù)據(jù)都是直接被Spark、Storm、Presto、Hbase處理了。

三、大數(shù)據(jù)倉庫基礎(chǔ)架構(gòu)

現(xiàn)在建大數(shù)據(jù)倉庫,需要的是分布式存儲(chǔ)和分布式計(jì)算,再也不是過去幾十臺(tái)服務(wù)器和幾百T存儲(chǔ)這么簡(jiǎn)單的。這都是要以萬計(jì)的,這才是真正的大數(shù)據(jù)。而要建造這么大規(guī)模的大數(shù)據(jù)倉庫,需要分布式存儲(chǔ)和分布式計(jì)算基礎(chǔ)框架支撐。

我們第一個(gè)就要提出的就是Hadoop。目前它已經(jīng)成為了一個(gè)生態(tài)。Hadoop最核心是兩塊:分布式文件系統(tǒng)HDFS、MapReduce。MapReduce又分為MAP(分解任務(wù))、Reduce(合并結(jié)果)兩部分。

現(xiàn)在有個(gè)新玩意叫YARN,不過YARN并不是MapReduce2.0。在MapReduce中資源管理和作業(yè)管理均是由JobTracker實(shí)現(xiàn)的,集兩個(gè)功能于一身,而在新的Hadoop2.0架構(gòu)中,MapReduce作業(yè)管理由ApplicationMaster實(shí)現(xiàn),而資源管理由新增系統(tǒng)YARN完成。Hadoop Corona是facebook開源的下一代MapReduce框架。其基本設(shè)計(jì)動(dòng)機(jī)和Apache的YARN一致。就是因?yàn)榇蠹叶荚诮鉀Q同一個(gè)問題,只不過不同時(shí)間段開源出來不同的解決方案項(xiàng)目,所以使大家大呼到底要用哪個(gè)啊。

現(xiàn)在又出來一個(gè)新玩意叫:Mesos。Mesos是更寬泛的資源管理框架,不僅可以管理偏重于半結(jié)構(gòu)化的大數(shù)據(jù)框架,也可以管理非結(jié)構(gòu)化的框架。人們也在對(duì)比Mesos和Kubernetes,其實(shí)Kubernetes只是目前聚焦于容器的管理,而Mesos野心更大,當(dāng)然也抽象的更通用化,留下各種抽象接口,以管理各種資源。

有人還把ZooKeeper和YARN、Mesos比較。其實(shí)Zookeeper已經(jīng)成為最基層最具體最不可或缺的真正的協(xié)調(diào)執(zhí)行者了。而YARN成為了大數(shù)據(jù)處理資源管理框架,而Mesos更成為了有史以來更大集成者更通用的資源管理框架了。

四、大數(shù)據(jù)計(jì)算框架

在大數(shù)據(jù)處理領(lǐng)域,目前當(dāng)紅炸子雞是:Spark、Storm、Flink。

Spark切的領(lǐng)域在MapReduce工作的領(lǐng)域,不過Spark大量把MAP中間結(jié)果放到內(nèi)存中,所以顯得性能特別快。現(xiàn)在Spark也在往生態(tài)走,希望能夠上下游通吃,一套技術(shù)棧解決大家多種需求,所以大家又漸漸看不清楚Spark聚焦的領(lǐng)域了。Spark Shark,是為了VS hadoop Hive,Spark Streaming是為了VS Storm。

Storm擅長(zhǎng)處理實(shí)時(shí)流式。比如日志,比如網(wǎng)站購(gòu)物的點(diǎn)擊流,是源源不斷、按順序的、沒有終結(jié)的,所以通過Kafka等消息隊(duì)列來了數(shù)據(jù)后,Storm就一邊開始工作。Storm自己不收集數(shù)據(jù)也不存儲(chǔ)數(shù)據(jù),隨來隨處理隨輸出結(jié)果。

它們都有各自的特色,但他們都無法給你處理具體的業(yè)務(wù)應(yīng)用,它們只是大規(guī)模分布式計(jì)算的通用框架,所以具體用他們的特性干什么,還得你自己寫。這就是大數(shù)據(jù)業(yè)務(wù)領(lǐng)域分析系統(tǒng)的事了。

不過,下面我會(huì)介紹一些技術(shù),在特定的業(yè)務(wù)領(lǐng)域,能夠幫你更簡(jiǎn)單的達(dá)成業(yè)務(wù)應(yīng)用需要。

五、大數(shù)據(jù)應(yīng)用技術(shù)

1、大數(shù)據(jù)搜索:Lucene、Solr、ElasticSearch。ElasticSearch是新推出的比Solr在大規(guī)模數(shù)據(jù)情況下更好的開源解決方案。

2、大數(shù)據(jù)查詢:這里有Hive/Impala,Hive的作用是你可以把結(jié)構(gòu)化數(shù)據(jù)導(dǎo)入到Hadoop中然后用簡(jiǎn)單SQL來做查詢。你可以把Impala看做是性能更快的Hive,因?yàn)镮mpala不強(qiáng)依賴MapReduce。而Facebook開源的Presto更是能查詢多種數(shù)據(jù)源,而且一條Presto查詢可以將多個(gè)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行合并。

3、大數(shù)據(jù)分析:咱們要提到去年新晉頂級(jí)Apache項(xiàng)目的Kylin。它創(chuàng)始于ebay,2014年進(jìn)入apache孵化項(xiàng)目。Kylin不僅僅能做SQL查詢,而且能做Cube多維分析。

4、大數(shù)據(jù)挖掘:這個(gè)領(lǐng)域包含精準(zhǔn)推薦、機(jī)器學(xué)習(xí)/深度學(xué)習(xí)/神經(jīng)網(wǎng)絡(luò)、人工智能。自從AlphaGo火了以后,機(jī)器學(xué)習(xí)再度火熱。Google開源了最新機(jī)器學(xué)習(xí)系統(tǒng)TensorFlow,微軟亞洲研究院開源了分布式機(jī)器學(xué)習(xí)工具包-DMTK,雅虎也開源了Caffe On Spark 深度學(xué)習(xí)。Mahout是Apache的一個(gè)開源項(xiàng)目,提供一些機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實(shí)現(xiàn),包括聚類、分類、推薦過濾、頻繁子項(xiàng)挖掘。

六、數(shù)據(jù)可視化工具

這塊有大量的可視化開源組件,但成系統(tǒng)的開源的確實(shí)出色的不多。這里面大有可玩。

Airbnb近日開源了數(shù)據(jù)探查與可視化平臺(tái)Caravel。另外,百度推出的Echarts組件也不做,可以基于此做些系統(tǒng)性的工作。

七、數(shù)據(jù)平臺(tái)監(jiān)控運(yùn)維

這里只看到一套完整的適用于海量日志處理的工具:Facebook Scribe、Flume、Logstash、Kibana。但我覺得,如此復(fù)雜的大數(shù)據(jù)平臺(tái)技術(shù)棧,一套成熟的監(jiān)控運(yùn)維系統(tǒng),是必須要出現(xiàn)的。

八、最后總結(jié):大數(shù)據(jù)平臺(tái)建設(shè)總藍(lán)圖

作為咱們?nèi)粘I(yè)務(wù),最直接的需要就是一套能分析具體業(yè)務(wù)的應(yīng)用系統(tǒng),但這套應(yīng)用系統(tǒng)需要很多基礎(chǔ)技術(shù)架構(gòu)和服務(wù)才能達(dá)成。為了讓大家有所預(yù)期,所以我把這些必備前提儲(chǔ)備列出來。

技術(shù)平臺(tái)建設(shè):

1、大數(shù)據(jù)基礎(chǔ)架構(gòu):推薦Hadoop、HDFS、YARN;大數(shù)據(jù)計(jì)算框架:推薦Spark;大數(shù)據(jù)日志收集推薦Flume+Logstash+Kibana。我們需要部署依賴中間件Zookeeper。

2、大數(shù)據(jù)倉庫平臺(tái)建設(shè):分布式關(guān)系型TiDB、KV式Redis、文檔型MongoDB、列式Hbase

3、大數(shù)據(jù)搜索,推薦選擇Lucene、ElasticSearch;大數(shù)據(jù)查詢,推薦選擇Presto;大數(shù)據(jù)多維分析,推薦Kylin;大數(shù)據(jù)挖掘,推薦挖掘開源算法包MashOut。

大數(shù)據(jù)整理服務(wù):

1、主數(shù)據(jù)管理:主數(shù)據(jù)標(biāo)準(zhǔn)制定、主數(shù)據(jù)清洗與校驗(yàn)、主數(shù)據(jù)轉(zhuǎn)換(拆分合并)、主數(shù)據(jù)復(fù)制分發(fā)、主數(shù)據(jù)訪問OpenAPI。

2、ETL:數(shù)據(jù)抽取、數(shù)據(jù)清洗、數(shù)據(jù)校驗(yàn)、數(shù)據(jù)安全脫敏

大數(shù)據(jù)分析系統(tǒng)建設(shè):

1、大數(shù)據(jù)展示平臺(tái)建設(shè)

2、大數(shù)據(jù)商業(yè)應(yīng)用模型建模

3、大數(shù)據(jù)應(yīng)用分析系統(tǒng)設(shè)計(jì)與開發(fā)

大數(shù)據(jù)分析服務(wù):

1、大數(shù)據(jù)分析解讀報(bào)告

看看,大數(shù)據(jù)建設(shè)很復(fù)雜,大家一定要沉住氣,一期期來做,這個(gè)周期和投入將會(huì)很大,不是設(shè)計(jì)個(gè)分析模型、開發(fā)個(gè)分析系統(tǒng)這么簡(jiǎn)單的。如果就是那樣簡(jiǎn)單的,其實(shí)就是個(gè)披著大數(shù)據(jù)的報(bào)表系統(tǒng)而已。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容