前面已經(jīng)給大家講了《從0到1搭建大數(shù)據(jù)平臺之數(shù)據(jù)采集系統(tǒng)》、《從0到1搭建大數(shù)據(jù)平臺之調(diào)度系統(tǒng)》群发,今天給大家講一下大數(shù)據(jù)平臺計算存儲系統(tǒng)闯袒。大數(shù)據(jù)計算平臺目前主要都是圍繞著hadoop生態(tài)發(fā)展的,運用HDFS作為數(shù)據(jù)存儲滔岳,計算框架分為批處理屯换、流處理编丘。
一、傳統(tǒng)的計算平臺
我們都知道彤悔,沒有大數(shù)據(jù)之前嘉抓,我們計算平臺基本是依賴數(shù)據(jù)庫,大數(shù)據(jù)量的計算基本依賴Oracle數(shù)據(jù)庫晕窑。Oracle很強大抑片,支撐了很多年銀行、電信業(yè)務(wù)數(shù)據(jù)的計算存儲杨赤。Oracle多以集中式架構(gòu)為主敞斋,最大特點就是將所有的數(shù)據(jù)都集中在一個數(shù)據(jù)庫中,依靠大型高端設(shè)備來提供高處理能力和擴展性疾牲。集中式數(shù)據(jù)庫的擴展性主要采用向上擴展的方式植捎,通過增加CPU,內(nèi)存阳柔,磁盤等方式提高處理能力焰枢。這種集中式數(shù)據(jù)庫的架構(gòu),使得數(shù)據(jù)庫成為了整個系統(tǒng)的瓶頸,已經(jīng)越來越不適應(yīng)海量數(shù)據(jù)對計算能力的巨大需求济锄。同時傳統(tǒng)數(shù)據(jù)庫架構(gòu)對高端設(shè)備的依賴暑椰,無疑將直接導致系統(tǒng)成本的大幅度增加,甚至可能會導致系統(tǒng)被主機和硬件廠商所“綁架”荐绝,不得不持續(xù)增加投入成本一汽。
?
二、Hadoop的崛起
隨著互聯(lián)網(wǎng)行業(yè)的發(fā)展很泊,特別是移動互聯(lián)網(wǎng)的快速發(fā)展角虫,傳統(tǒng)數(shù)據(jù)庫面臨著海量數(shù)據(jù)的存儲成本沾谓、有限的擴展能力等問題委造。新的計算框架MapReduce出現(xiàn)了,新的存儲編碼方式HDFS出現(xiàn)了均驶,二者合起來昏兆,我們一般稱之為Hadoop。
Hadoop很快憑借其高可靠性妇穴、高擴展性爬虱、成本低、高效計算等優(yōu)勢在各個領(lǐng)域得到了廣泛應(yīng)用腾它。
?
三跑筝、Hive的應(yīng)用
Hive最初是Facebook開源的,我們來看看Hive的特點:
Hive是一個構(gòu)建于Hadoop頂層的數(shù)據(jù)倉庫工具瞒滴,可以查詢和管理PB級別的分布式數(shù)據(jù)曲梗。
支持類SQL語音。
可以看作為用戶編程接口妓忍,本身不存儲和處理數(shù)據(jù)
依賴HDFS作為存儲
我們看到Hive支持類SQL語法虏两,我們可以很容易的把傳統(tǒng)關(guān)系型數(shù)據(jù)庫建立的數(shù)據(jù)倉庫任務(wù)遷移到Hadoop平臺上。
Hive的架構(gòu):
?
我們可以看到hive提供了多種連接方式:JDBC世剖、ODBC定罢、Thrift。
那么我們以前使用Oracle的存儲過程怎么遷移到Hive中呢旁瘫?用過Hive的同學可能都知道祖凫,Hive是沒有想Oracle那樣的游標循環(huán)呀,所以我們必須借助其他語言來配合hive一起完成數(shù)據(jù)倉庫的ETL過程酬凳。比如這個項目:PyHive(https://github.com/dropbox/PyHive)
?
借助Python惠况,我們可以很好的彌補Hive在復雜處理的一些缺陷,同時也能更好的開發(fā)ETL任務(wù)粱年。
?
所以售滤,通過Hive我們就可以搭建起一套大數(shù)據(jù)計算平臺。
四、Spark的應(yīng)用
Hive在剛開始使用過程中很好用完箩,對大數(shù)據(jù)量的處理確實比以前傳統(tǒng)數(shù)據(jù)庫要好赐俗,但是隨著業(yè)務(wù)的增長,公司越來越多的數(shù)據(jù)工程師反饋查詢慢弊知,同時業(yè)務(wù)側(cè)也紛紛提出阻逮,我們的數(shù)據(jù)能不能早點出,不要老是等到早上8點才刷新秩彤。我們需要更強大的計算引擎叔扼,Spark使用了十分之一的計算資源,獲得了比Hadoop快3倍的速度漫雷,Spark為什么這么快呢瓜富?
我們來看看Spark的特點:
速度快,使用DGA(有向無環(huán)圖)降盹。
支持內(nèi)存計算与柑。
低延遲、高容錯蓄坏。
Spark提供了存計算价捧,可以將計算結(jié)果存放到內(nèi)存中,我們都知道MR是將數(shù)據(jù)存儲在磁盤涡戳,對磁盤讀寫结蟋,勢必會增加IO操作,計算時間過長渔彰。之前我也做過一個Hive和Spark的一個執(zhí)行效率的對比嵌屎,當時使用的是Spark1.6,數(shù)據(jù)是千萬級別的表胳岂。
?
還是可以看出Spark比Hive快了很多编整,現(xiàn)在Spark2.0以后,會更快了乳丰。而且掌测,Spark同樣提供的有JDBC、ODBC 产园、Thrift連接方式汞斧。
?
我們可以從Hive環(huán)境直接遷移到Spark環(huán)境,提高執(zhí)行效率什燕。
?
五粘勒、MPP的應(yīng)用
用了Spark還是不夠快,每次查詢提交任務(wù)后屎即,都得等著任務(wù)啟動然后看著任務(wù)執(zhí)行進度一直等著庙睡。
?
MPP(Massively Parallel Processing)是指多個處理器(或獨立的計算機)并行處理一組協(xié)同計算事富。為了保證各節(jié)點的獨立計算能力,MPP數(shù)據(jù)庫通常采用ShareNothing架構(gòu)乘陪。比較有代表性大家熟知的比如:GPDB统台、Vertica。
?
MPP具備以下特點:
低成本的硬件啡邑、和Hadoop一樣贱勃,使用x86架構(gòu)的PC就可以
數(shù)據(jù)存儲采用不同的壓縮算法,減少使用空間谤逼,提高IO性能
數(shù)據(jù)加載高效贵扰,并行加載、數(shù)據(jù)加載的速度取決于帶寬
易擴展流部,容易對集群節(jié)點進行增減
列存儲戚绕,很多MPP支持列存儲架構(gòu),能夠更高效的訪問需要的數(shù)據(jù)
支持標準SQL贵涵,MPP比SparkSQL列肢、HiveSQL對標準SQL支持的更好
從以上MPP的特點和上面我們介紹的Hadoop的特點,會發(fā)現(xiàn)MPP更適合數(shù)據(jù)自助分析宾茂、即席查詢等場景、能夠使數(shù)據(jù)人員快速獲取數(shù)據(jù)結(jié)果拴还。
六跨晴、搭建自己的計算平臺
開源的計算引擎這么多、我們?nèi)绾芜x擇合適的計算引擎搭建平臺呢片林?
下面分多個場景來和大家探討下:
1端盆、小公司、無大數(shù)據(jù)平臺
真正的從無到有搭建大數(shù)據(jù)平臺费封,開發(fā)人員較少焕妙。可以直接使用CDH搭建起來你的大數(shù)據(jù)平臺弓摘,選用Hive作為數(shù)據(jù)倉庫的計算引擎焚鹊。為什么這樣選擇呢?很多小公司沒有足夠的資金支撐大數(shù)據(jù)平臺的建設(shè)韧献,那么就會選擇相對來說的比較穩(wěn)定的開源組件末患,Hive發(fā)展了很多年,和磁盤的交互MR計算架構(gòu)中的任務(wù)很少會出錯锤窑。Hive對SQL支持的很好璧针,開發(fā)人員很容易上手,而且維護成本很低渊啰。
2探橱、小公司申屹、大數(shù)據(jù)平臺升級
已經(jīng)有過一段時間使用Hive作為計算引擎后,工程師們對大數(shù)據(jù)平臺已經(jīng)有一定的了解和知識積累隧膏,對Hadoop的運維能力也提升了独柑,隨著開發(fā)人員反饋Hive比較慢,領(lǐng)導也考慮升級平臺私植,這時候就可以引入Spark了忌栅。上面我們也說了Spark是基于內(nèi)存運算的,內(nèi)存始終是沒有磁盤穩(wěn)定曲稼,Spark任務(wù)很多時候會因為資源設(shè)置不合理而報錯索绪。而SparkSQL和可以直接共享Hive的metestore,直接從Hive遷移到Spark上很自然贫悄,工作流很小瑞驱。同時Spark還提供了Streaming功能,可以滿足公司逐漸發(fā)展遇到的實時數(shù)據(jù)問題窄坦,再也不用擔心以前hive沒半小時執(zhí)行一次任務(wù)唤反,任務(wù)還偶爾出現(xiàn)執(zhí)行不完的場景了。
3鸭津、大公司
很多傳統(tǒng)行業(yè)的大公司一直依賴傳統(tǒng)關(guān)系型數(shù)據(jù)庫來處理數(shù)據(jù)彤侍,花了很多錢購置硬件和服務(wù)。現(xiàn)在要“降本增效”逆趋,必然會對IT部門下手盏阶。大公司有錢,就可以招聘到專業(yè)的工程師闻书,他們有過建設(shè)大數(shù)據(jù)平臺的經(jīng)驗名斟,在計算選型上可以根據(jù)自己的技術(shù)棧選擇合適的計算引擎。
另外魄眉,可以買一些MPP數(shù)據(jù)庫的服務(wù)砰盐,比如GreenPlum商業(yè)版、Vertica坑律。商業(yè)版的很穩(wěn)定岩梳,幾乎不會碰到棘手的問題,平時只管使用就行了脾歇,大大提高的運維蒋腮、開發(fā)效率。對比下來會發(fā)現(xiàn)比以前使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫省了不少錢藕各。
?
七池摧、總結(jié)
基于多個計算引擎搭建大數(shù)據(jù)平臺是目前的現(xiàn)狀,針對不同的企業(yè)和團隊選擇適合自己的激况,同一個公司不同的業(yè)務(wù)也可以選擇不同的計算引擎作彤。不考慮商業(yè)方案膘魄,就要根據(jù)自己的技術(shù)掌握情況,選擇自己精通的并且適合業(yè)務(wù)的竭讳〈雌希考慮商業(yè)方案的可以選擇商業(yè)的MPP,給開發(fā)和業(yè)務(wù)人員提供更好的環(huán)境和體驗绢慢。
歷史好文推薦