傳統(tǒng)企業(yè)大數(shù)據(jù)架構(gòu)的問(wèn)題
![](/d/20211018/75ad1054e4638e787ffb92099901f79f.gif)
上圖是大家都很熟悉的基于 Hadoop 體系的開源大數(shù)據(jù)架構(gòu)圖。在這個(gè)架構(gòu)中,大致可以分成三層。最下一層是數(shù)據(jù)采集,通常會(huì)采用 kafka 或者 Flume 將 web 日志通過(guò)消息隊(duì)列傳送到存儲(chǔ)層或者計(jì)算層。對(duì)于數(shù)據(jù)存儲(chǔ),目前 Apache 社區(qū)提供了多種存儲(chǔ)引擎的選擇,除了傳統(tǒng)的 HDFS 文件和 H ,還提供了 Kudu、ORC、Parquet 等列式存儲(chǔ),大家可以根據(jù)自身的需求特點(diǎn)進(jìn)行選擇。在這之上的數(shù)據(jù)計(jì)算層,選擇就更豐富了。如果你想做實(shí)時(shí)推薦,可以采用 Storm、Spark Streaming 這樣的流計(jì)算引擎對(duì) Kafka 或者 Flume 傳遞上來(lái)的數(shù)據(jù)進(jìn)行實(shí)時(shí)處理。如果你想進(jìn)行客戶畫像,可以使用 Mahout 或者 Spark LMlib 里的機(jī)器學(xué)習(xí)算法進(jìn)行分類。如果你想查看當(dāng)天的銷售排名,可以使用 H 、Impala 或者 Presto。如果想對(duì)某些商品的銷售進(jìn)行比較復(fù)雜的漏斗分析,則使用 HIVE 或者 Spark 可能會(huì)更合適。
當(dāng)然,大家根據(jù)各自的需求,可以疊加上 Redistribution 緩存,ElasticSearch 全文本搜索,或者像 MongoDB、Cassandra 這些產(chǎn)品。所以,大家會(huì)發(fā)現(xiàn),其實(shí)在大數(shù)據(jù)計(jì)算方面,并沒(méi)有什么特別成熟的架構(gòu),大家所做的大多都是針對(duì)一些問(wèn)題點(diǎn)不斷進(jìn)行創(chuàng)新、改進(jìn)和修正,再把幾個(gè)產(chǎn)品想辦法整合起來(lái)。這是因?yàn)樽鰹橐粋€(gè)新興的領(lǐng)域,大數(shù)據(jù)計(jì)算方面的技術(shù)積累還很不夠,還有很多難點(diǎn)沒(méi)有攻克,還處在一個(gè)不斷成長(zhǎng)的階段。而在大數(shù)據(jù)技術(shù)開拓創(chuàng)新上,互聯(lián)網(wǎng)企業(yè)是引領(lǐng)潮流的。目前的大量收到追捧的大數(shù)據(jù)技術(shù)產(chǎn)品,大多都是由互聯(lián)網(wǎng)企業(yè)。做為大數(shù)據(jù)技術(shù)的基石的 Hadoop 的基本思想基于 Google 的 Map/Reduce 和 Google File System,Presto 來(lái)自于 Facebook,貢獻(xiàn)了 Impala 和 Flume 的 Cloudera 雖然不算一家互聯(lián)網(wǎng)公司,但是帶有很強(qiáng)的互聯(lián)網(wǎng)基因。國(guó)內(nèi)的 BAT 等互聯(lián)網(wǎng)企業(yè)也對(duì)大數(shù)據(jù)開源社區(qū)做出了很大貢獻(xiàn)。
但這也帶來(lái)了一個(gè)問(wèn)題,那就是這些大數(shù)據(jù)產(chǎn)品即架構(gòu)都是針對(duì)互聯(lián)網(wǎng)企業(yè)的因?yàn)樾枨笈c場(chǎng)景設(shè)計(jì)的。雖然這些需求和場(chǎng)景具有一定的普適性,但是在企業(yè)的整體 IT 架構(gòu)上,傳統(tǒng)企業(yè)與互聯(lián)網(wǎng)企業(yè)有著很大的不同。
首先,傳統(tǒng)企業(yè)和互聯(lián)網(wǎng)企業(yè)在專業(yè)技術(shù)人員配備上有很大的不同。互聯(lián)網(wǎng)企業(yè)聚集了大量的高水平計(jì)算機(jī)軟件設(shè)計(jì)開發(fā)維護(hù)人員,這是絕大多數(shù)傳統(tǒng)企業(yè)所不具備的。這里的差別一個(gè)是在量。傳統(tǒng)企業(yè)中,一個(gè)擁有幾百個(gè)技術(shù)人員的信息中心已經(jīng)是一個(gè)相當(dāng)大的團(tuán)隊(duì)了;而互聯(lián)網(wǎng)企業(yè)的技術(shù)人員往往都有數(shù)千人的規(guī)模,像 BAT 這樣的企業(yè),開發(fā)維護(hù)技術(shù)人員都達(dá)到了上萬(wàn)人。另一個(gè)差別則在質(zhì)上。互聯(lián)網(wǎng)企業(yè)中通常會(huì)有一支專門的平臺(tái)支撐專家團(tuán)隊(duì),有能力自行及時(shí)修復(fù)開源產(chǎn)品中的 BUG,保障系統(tǒng)服務(wù)的穩(wěn)定運(yùn)行。而由于薪資等方面的原因,傳統(tǒng)企業(yè)往往很難招到掌握開源產(chǎn)品核心技術(shù)的頂級(jí)開發(fā)者。這給開源產(chǎn)品的使用帶來(lái)的隱患。一旦開源產(chǎn)品出現(xiàn)的 BUG 等問(wèn)題,無(wú)人可以及時(shí)應(yīng)對(duì),將會(huì)給企業(yè)的生產(chǎn)服務(wù)造成很大的損失。
其次,傳統(tǒng)企業(yè)的 IT 架構(gòu)也和互聯(lián)網(wǎng)企業(yè)有很大不同?;ヂ?lián)網(wǎng)企業(yè)的歷史相對(duì)較短,而且具有以開源軟件為基礎(chǔ)自行研發(fā)應(yīng)用的基因,各企業(yè)自己對(duì)各種技術(shù)細(xì)節(jié)業(yè)務(wù)邏輯都非常了解,大數(shù)據(jù)系統(tǒng)甚至是和業(yè)務(wù)系統(tǒng)緊密聯(lián)系的,不會(huì)有太多的集成性的問(wèn)題。而傳統(tǒng)企業(yè)往往歷史較長(zhǎng),在 IT 建設(shè)走過(guò)多種技術(shù)路線,往往有大量的架構(gòu)不統(tǒng)一的遺留系統(tǒng)。很多企業(yè)過(guò)去曾經(jīng)建設(shè)過(guò)企業(yè)數(shù)據(jù)倉(cāng)庫(kù),現(xiàn)在又開始建設(shè)大數(shù)據(jù)平臺(tái),這之間又沒(méi)有特別嚴(yán)格的劃分,不僅造成很多功能的重疊,更是造成了很多的數(shù)據(jù)冗余,很多數(shù)據(jù)會(huì)在不同的系統(tǒng)中保留多份拷貝,甚至不少企業(yè)需要頻繁地把同一份數(shù)據(jù)在不同的系統(tǒng)中來(lái)回傳輸。這就帶來(lái)了很嚴(yán)重的集成性問(wèn)題。
第三,相對(duì)于互聯(lián)網(wǎng)企業(yè),大多數(shù)傳統(tǒng)企業(yè)的數(shù)據(jù)量其實(shí)并沒(méi)有那么大。相比較 Google 每秒超 10 萬(wàn)次的搜索,支付寶雙十一每秒超過(guò) 25 萬(wàn)筆交易,絕大多數(shù)的傳統(tǒng)企業(yè)的數(shù)據(jù)量真沒(méi)那么大,可能還不至于成為不可攻克的難題。對(duì)于這樣的數(shù)據(jù)量,可能傳統(tǒng)的技術(shù)就可以解決,而不一定非要用到 Hadoop 這樣重的架構(gòu)。而為了挖掘出這些數(shù)據(jù)中的價(jià)值,多源異構(gòu)的復(fù)雜環(huán)境可能是一個(gè)更加麻煩的問(wèn)題。
他山之石可以攻玉
有的時(shí)候,在考慮一個(gè)問(wèn)題的解決辦法時(shí),從類似問(wèn)題的解決辦法中獲得一些借鑒是一個(gè)不錯(cuò)的開始。
其實(shí),在交易類應(yīng)用領(lǐng)域,也曾出現(xiàn)過(guò)類似的情況。企業(yè)中運(yùn)行這各種各樣的應(yīng)用系統(tǒng),這些應(yīng)用由不同的開發(fā)者開發(fā),技術(shù)路線、體系架構(gòu)、遵循的標(biāo)準(zhǔn)都相差甚遠(yuǎn),造成了一個(gè)個(gè)信息孤島,一些需要共享的信息,不能在系統(tǒng)之間交換,造成很多信息的滯后和數(shù)據(jù)不一致現(xiàn)象。
那么后來(lái)這些問(wèn)題解決了嗎?又是怎么解決的?————有人發(fā)明了中間件。
什么是中間件,并沒(méi)有人對(duì)它做出一個(gè)科學(xué)的定義。總體來(lái)說(shuō),是一個(gè)為了解決分布異構(gòu)問(wèn)題而提出的一個(gè)概念它位于平臺(tái) (硬件和操作系統(tǒng)) 和應(yīng)用之間,為雙方或者多方提供的通用服務(wù),這些服務(wù)具有標(biāo)準(zhǔn)的程序接口和協(xié)議。針對(duì)不同的操作系統(tǒng)和硬件平臺(tái),它們可以有符合接口和協(xié)議規(guī)范的多種實(shí)現(xiàn)。 解決多源異構(gòu)并不是中間件出現(xiàn)的唯一原因,但是是它解決的異構(gòu)重要問(wèn)題,一般來(lái)說(shuō),中間件具有以下特點(diǎn):
1. 滿足大量應(yīng)用的需要
2. 運(yùn)行于多種硬件和 OS 平臺(tái)
3. 支持分布計(jì)算,提供跨網(wǎng)絡(luò)、硬件和 OS 平臺(tái)的透明性的應(yīng)用或服務(wù)的交互
4. 支持標(biāo)準(zhǔn)的協(xié)議
5. 支持標(biāo)準(zhǔn)的接口
也就是說(shuō),中間件的主要作用,就是建立跨平臺(tái)的標(biāo)準(zhǔn)化交互接口。按照應(yīng)用場(chǎng)景的不同,中間件開源分為網(wǎng)絡(luò)通信中間件、RPC 中間件、消息中間件、交易中間件、Web 中間件、安全中間件等。這些不同的中間件在實(shí)際功能與實(shí)現(xiàn)方式上各不相同,在各自的領(lǐng)域中發(fā)揮著不同的作用,但是都滿足以上列出的特點(diǎn),都具有上述描述的基本功能。
那么,為什么不考慮在數(shù)據(jù)應(yīng)用領(lǐng)域也采用中間件技術(shù)呢?
數(shù)據(jù)計(jì)算中間件
為什么提出數(shù)據(jù)計(jì)算中間件這個(gè)概念?因?yàn)樵陂_發(fā)數(shù)據(jù)應(yīng)用的過(guò)程,大家通常都會(huì)被以下的問(wèn)題所困擾。
- 需要跨系統(tǒng)跨平臺(tái)操作,從不同的數(shù)據(jù)源的數(shù)據(jù)放在一起計(jì)算
- 需求變化頻繁,不斷出現(xiàn)新需求,老需求不斷修改
- 業(yè)務(wù)邏輯與數(shù)據(jù)耦合過(guò)緊
- 復(fù)雜計(jì)算實(shí)現(xiàn)困難,執(zhí)行性能差
而通過(guò)設(shè)置異構(gòu)數(shù)據(jù)計(jì)算中間件,就可以很好地解決多源異構(gòu)環(huán)境下的融合計(jì)算問(wèn)題。當(dāng)然,僅僅解決異構(gòu)數(shù)據(jù)的交互訪問(wèn)還是遠(yuǎn)遠(yuǎn)不夠的,要解決上面的困難,數(shù)據(jù)計(jì)算中間件還需要能夠提供高效的開發(fā)效率,優(yōu)秀的計(jì)算性能和方便的代碼管理能力。綜合起來(lái),我們可以從下面幾個(gè)方面數(shù)據(jù)計(jì)算中間件進(jìn)行評(píng)估。
- 兼容性 (Cross-platform)
這里的兼容性主要是指的跨平臺(tái)的數(shù)據(jù)訪問(wèn)能力。前面我們說(shuō)到過(guò)傳統(tǒng)企業(yè) IT 系統(tǒng)的異大特點(diǎn)就是存在大量異構(gòu)系統(tǒng),這些異構(gòu)系統(tǒng)之間的互操作性很差,數(shù)據(jù)計(jì)算中間件的首要任務(wù)就是打通這個(gè)壁壘,起到連通的作用,將不同異構(gòu)平臺(tái)中的數(shù)據(jù)集成到一起。
- 熱部署 (Hot-deploy)
數(shù)據(jù)應(yīng)用的特點(diǎn)之一就是需求變化很快,我們對(duì)數(shù)據(jù)分析的要求是無(wú)止境的,總是在探求新的目標(biāo),總是希望能夠從數(shù)據(jù)中挖掘出更多的信息。因此,數(shù)據(jù)應(yīng)用的需求變化是異構(gòu)持續(xù)的常態(tài)。這就對(duì)應(yīng)用的部署提出了新的要求,如果每次部署新功能模塊時(shí)都需要停止服務(wù),勢(shì)必對(duì)服務(wù)的質(zhì)量造成很大的影響。如果應(yīng)用模塊可以熱插拔,不需要停止整個(gè)服務(wù),模塊之間也相互隔離,那么這個(gè)應(yīng)用的運(yùn)行就會(huì)更加平順,服務(wù)質(zhì)量也可以得到保障。
- 高性能 (Efficient)
數(shù)據(jù)計(jì)算處理的性能對(duì)于數(shù)據(jù)計(jì)算中間件也非常重要,即使傳統(tǒng)企業(yè)的數(shù)據(jù)量沒(méi)有互聯(lián)網(wǎng)企業(yè)那么大,數(shù)據(jù)應(yīng)用需要處理的數(shù)據(jù)也是具有相當(dāng)規(guī)模的,高的計(jì)算性能是評(píng)價(jià)數(shù)據(jù)計(jì)算中間件的異構(gòu)重要指標(biāo)。雖然不存在異構(gòu)硬性的性能指標(biāo),但是在可能的情況下,我們總是希望處理速度越快越好。
- 敏捷性 (Agile)
敏捷性在這里,強(qiáng)調(diào)的是開發(fā)的方面。正因?yàn)閿?shù)據(jù)應(yīng)用的需求會(huì)持續(xù)不斷變化,因此開發(fā)也會(huì)是一個(gè)持續(xù)的任務(wù),不會(huì)像傳統(tǒng)業(yè)務(wù)應(yīng)用一樣在相當(dāng)一段時(shí)間內(nèi)保持不變。開發(fā)的敏捷性可以保證數(shù)據(jù)應(yīng)用可以在盡可能短的時(shí)間內(nèi)完成新功能的交付使用,在某些特定的場(chǎng)景中,這可能為企業(yè)避免巨大的損失。
- 擴(kuò)展性 (Scalability)
數(shù)據(jù)計(jì)算中間件需要要很好的可擴(kuò)展性,支持分布式計(jì)算,具備了這種能力,數(shù)據(jù)計(jì)算中間件才可能在實(shí)際的應(yīng)用環(huán)境從容面對(duì)不同數(shù)據(jù)量的場(chǎng)景,并且在數(shù)據(jù)量業(yè)務(wù)量不斷增長(zhǎng)的時(shí)候,仍然保證自身提供的各種數(shù)據(jù)服務(wù)持續(xù)可用。
- 集成性 ( dable)
做為一款中間件,可集成性也是必須的。這里的集成包含兩個(gè)方面,一個(gè)是對(duì)第三方軟件的集成,一個(gè)是被集成到第三方的軟件中。數(shù)據(jù)應(yīng)用的場(chǎng)景非常多樣,只有具備很強(qiáng)的集成性,才能在更多的環(huán)境中得到應(yīng)用。
以上就是我們?cè)u(píng)估數(shù)據(jù)計(jì)算中間件的幾個(gè)關(guān)鍵考量,可以簡(jiǎn)稱為 CHEASE。如果在 CHEASE 對(duì)應(yīng)的六個(gè)方面都得到很好的滿足,那這就是一款優(yōu)秀的數(shù)據(jù)計(jì)算中間件。
潤(rùn)乾集算器
數(shù)據(jù)計(jì)算中間件是一個(gè)全新的概念,目前數(shù)據(jù)計(jì)算方面的產(chǎn)品中,與之最接近的是集算器。集算器是北京潤(rùn)乾信息系統(tǒng)科技有限公司完全自主研發(fā)的一款輕量級(jí)大數(shù)據(jù)融合計(jì)算平臺(tái),一種針對(duì)結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)的計(jì)算設(shè)計(jì)開發(fā)的新型計(jì)算引擎。集算器的設(shè)計(jì)目標(biāo),是試圖解決描述計(jì)算的效率和實(shí)施計(jì)算的效率。集算器具有以下一些特點(diǎn)。
1. 為了達(dá)到設(shè)計(jì)目標(biāo),潤(rùn)乾公司首先為集算器設(shè)計(jì)了一種面向過(guò)程計(jì)算的腳本編程語(yǔ)言 SPL(Structured Precessing Language),可以方便地描述數(shù)據(jù)的計(jì)算過(guò)程。集算器采用了新的數(shù)據(jù)和計(jì)算模型,提供了豐富的基礎(chǔ)計(jì)算方法,特別適合業(yè)務(wù)規(guī)則復(fù)雜的多步驟運(yùn)算,讓計(jì)算本身變得易于描述,從而提高代碼的開發(fā)效率。
2. 集算器在內(nèi)部的計(jì)算實(shí)現(xiàn)上,做了大量的優(yōu)化工作,這些算法的優(yōu)化使得在對(duì)數(shù)據(jù)集進(jìn)行排序、匯總、關(guān)聯(lián)等計(jì)算時(shí),速度得到很大提升,大大提高了計(jì)算實(shí)施的效率。
3. 集算器內(nèi)置大量數(shù)據(jù)訪問(wèn)接口,可以輕松連接各種數(shù)據(jù)源并從中獲取數(shù)據(jù)。支持的數(shù)據(jù)源包括但不限于:
- 商用 RDBMS:Oracle、MS SQL Server、DB2、Informix
- 開源 RDBMS:MySQL、PostgreSQL
- 開源 NOSQL:MongoDB、Redis、Cassandra、ElasticSearch
- Hadoop 家族:HDFS、HIVE、H
- 應(yīng)用軟件:SAP ECC、BW
- 文件:Excel、Json、 、TXT
- 其他:http Restful、Web Services、支持 OLAP4j 的多維數(shù)據(jù)庫(kù)、阿里云
4. SPL 為解釋型語(yǔ)言,不需要進(jìn)行編譯。這使得集算器的任務(wù)腳本在集算器內(nèi)部的部署十分方便,可以很方便地實(shí)現(xiàn)動(dòng)態(tài)熱部署。
5. 集算器提供了并行多線程計(jì)算和集群分布式計(jì)算的能力,而且集群的節(jié)點(diǎn)可以動(dòng)態(tài)添加,具有十分優(yōu)秀的可擴(kuò)展能力。
6. 集算器的核心功能由若干個(gè) Java JAR 包實(shí)現(xiàn),短小精悍,具有超強(qiáng)的可集成性、靈活性、擴(kuò)展性、開放性、可定制性,非常易于和 Java 應(yīng)用進(jìn)行深度整合。加之對(duì)外提供了 JDBC、Restful、Web Services 等標(biāo)準(zhǔn)接口,使之與第三方的應(yīng)用非常容易進(jìn)行整合集成。
以上這六個(gè)特點(diǎn),恰恰對(duì)應(yīng)了 CHEASE 的六個(gè)方面。雖然潤(rùn)乾集算器設(shè)計(jì)之初尚沒(méi)有提出數(shù)據(jù)計(jì)算中間件的概念,但是整個(gè)產(chǎn)品的設(shè)計(jì)宗旨始終圍繞著 CHEASE,所以在兼容性、熱部署能力、計(jì)算性能、敏捷性、可擴(kuò)展性和集成性幾個(gè)方面,相當(dāng)?shù)镁?,各方面的表現(xiàn)都相當(dāng)優(yōu)秀。如果你覺得在你的數(shù)據(jù)計(jì)算架構(gòu)中需要一款數(shù)據(jù)計(jì)算中間件,那集算器恐怕是目前唯一的選擇。
尚待解決的一些困難
當(dāng)然,數(shù)據(jù)計(jì)算中間件的概念剛剛被提出,集算器也是一款新產(chǎn)品,概念需要不斷驗(yàn)證完善,產(chǎn)品也肯定會(huì)有很多不足之處。目前可見的困難由以下兩點(diǎn)。
- 獲取數(shù)據(jù)的性能
數(shù)據(jù)應(yīng)用不同于其它的應(yīng)用,它總是牽扯到大量數(shù)據(jù)的讀取,因此數(shù)據(jù)讀取的性能非常關(guān)鍵。數(shù)據(jù)讀取的性能不僅取決于數(shù)據(jù)計(jì)算中間件本身,還取決于數(shù)據(jù)源和接口類型。如果通過(guò) JDBC 這樣的標(biāo)準(zhǔn)接口,數(shù)據(jù)訪問(wèn)使沒(méi)有任何問(wèn)題的,但是讀取速度上是卻很難滿足數(shù)據(jù)應(yīng)用的性能要求的。對(duì)于這個(gè)問(wèn)題,潤(rùn)乾為集算器提供了多種格式的內(nèi)部文件存儲(chǔ)做為數(shù)據(jù)緩存機(jī)制來(lái)加速計(jì)算,這是是一種很實(shí)用的折中方法。同時(shí)潤(rùn)乾也在嘗試開發(fā)具有針對(duì)性的高性能接口,用于提高了從外部獲取數(shù)據(jù)的速度。當(dāng)然數(shù)據(jù)計(jì)算中間件涉及的接口極多,要解決好這個(gè)問(wèn)題,是一個(gè)很大的挑戰(zhàn)。
- 對(duì)機(jī)器學(xué)習(xí)的支持
如今,人人都在談?wù)摍C(jī)器學(xué)習(xí),雖然傳統(tǒng)數(shù)據(jù)分析仍然是主流,而且在大多數(shù)領(lǐng)域,機(jī)器學(xué)習(xí)并不成熟,實(shí)際應(yīng)用的效果大多也差強(qiáng)人意。但是不可否認(rèn)的是機(jī)器學(xué)習(xí)是未來(lái)的方向,將會(huì)是數(shù)據(jù)應(yīng)用中不可或缺的重要組成部分。因此,機(jī)器學(xué)習(xí)的功能應(yīng)該是數(shù)據(jù)計(jì)算中間件必須具備的。集算器目前還不具備機(jī)器學(xué)習(xí)的能力,這使它的使用受到了一定的限制。當(dāng)然,集算器本身在發(fā)展,未來(lái)可期。
總結(jié)
以上所述是小編給大家介紹的數(shù)據(jù)計(jì)算中間件技術(shù)綜述 ,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- js數(shù)值計(jì)算時(shí)使用parseInt進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換(jquery)
- 淺談.Net并行計(jì)算之?dāng)?shù)據(jù)并行
- 用asp實(shí)現(xiàn)訪問(wèn)遠(yuǎn)程計(jì)算機(jī)上MDB access數(shù)據(jù)庫(kù)文件的方法
- Access使用查詢--1.2.用選擇查詢進(jìn)行分組數(shù)據(jù)的計(jì)算