云存儲(chǔ)及云計(jì)算使用(運(yùn)維)_第1頁(yè)
云存儲(chǔ)及云計(jì)算使用(運(yùn)維)_第2頁(yè)
云存儲(chǔ)及云計(jì)算使用(運(yùn)維)_第3頁(yè)
云存儲(chǔ)及云計(jì)算使用(運(yùn)維)_第4頁(yè)
云存儲(chǔ)及云計(jì)算使用(運(yùn)維)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

精選優(yōu)質(zhì)文檔-----傾情為你奉上精選優(yōu)質(zhì)文檔-----傾情為你奉上專心---專注---專業(yè)專心---專注---專業(yè)精選優(yōu)質(zhì)文檔-----傾情為你奉上專心---專注---專業(yè)關(guān)于云存儲(chǔ)使用情況的探討和分析版本歷史版本號(hào)修改日期修改人審批日期審批人版本說(shuō)明/變更理由/變更內(nèi)容V1.0.2013-4-1趙強(qiáng)首發(fā)變更說(shuō)明:C:Create,初始創(chuàng)建;A:Add,增加內(nèi)容;M:Mod,修改;D:Del,刪除TOC\o"1-3"\h\u一、Hadoop的介紹及優(yōu)缺點(diǎn)分析:Hadoop一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會(huì)開發(fā)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力高速運(yùn)算和存儲(chǔ)。Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)FileSystem),簡(jiǎn)稱HDFS。Hadoop擁有功能豐富的子項(xiàng)目,其中包括HBase、Hive、ZooKeeper等功能各異的子項(xiàng)目,靈活的使用這些項(xiàng)目可以輕松的做到云計(jì)算平臺(tái)的構(gòu)建。1、讀寫性能和數(shù)據(jù)安全Hadoop都是基于HDFS文件系統(tǒng),HDFS可以有效的提高系統(tǒng)的吞吐量,減少系統(tǒng)等待時(shí)間。HDFS是以磁盤為存儲(chǔ)單位的,比如有三臺(tái)服務(wù)器,每個(gè)服務(wù)器有三塊硬盤,對(duì)于HDFS等于有九個(gè)寫入單元,而傳統(tǒng)的基于服務(wù)器的分布式存儲(chǔ)等于只有三個(gè)寫入單元。而且HDFS通過數(shù)據(jù)塊進(jìn)行備份的數(shù)據(jù)冗余機(jī)制,磁盤底層不需要而且不建議組建RAID,所以在可使用的磁盤空間上得到了更進(jìn)一步的提升,而讀寫性能跟組建注重讀寫的RAID0后的效果相同。HDFS對(duì)于磁盤讀寫速度的提升和對(duì)數(shù)據(jù)安全性的提升如下:磁盤讀寫速度(RAID0=HDFS>RAID[1+0]>RAID5>RAID1)磁盤數(shù)據(jù)安全(RAID1=HDFS>RAID[1+0]>RAID5>RAID0)由此可見,HDFS可以達(dá)到RAID1的數(shù)據(jù)冗余和RAID0的高速讀寫。在最新版本(測(cè)試版本或者第三方的商業(yè)版本)的Hadoop中,Hadoop提出了一個(gè)新的NameNodeHA功能,利用該功能可以有效地規(guī)避老版本的NameNode節(jié)點(diǎn)單點(diǎn)問題。2、易于擴(kuò)展的集群架構(gòu)而且Hadoop中的DataNode方便擴(kuò)展,可以在不停止服務(wù)的狀態(tài)下動(dòng)態(tài)的添加新的DataNode節(jié)點(diǎn)進(jìn)入集群,而且加入后也不需要重啟整個(gè)集群,只需要正常配置DataNode節(jié)點(diǎn)并啟動(dòng)該節(jié)點(diǎn),NameNode可以自動(dòng)將該節(jié)點(diǎn)加入集群。為了方便集群?jiǎn)?dòng)時(shí)可以正常啟動(dòng)新加入的DataNode需要對(duì)NameNode服務(wù)器上的hosts文件及slaves文件進(jìn)行修改。3、有效分散集群壓力Hadoop采用動(dòng)態(tài)存儲(chǔ)資源分配,可以將數(shù)據(jù)更平衡的分布于不同的DataNode節(jié)點(diǎn),防止出現(xiàn)數(shù)據(jù)不平衡而造成部分DataNode節(jié)點(diǎn)請(qǐng)求過多,而其它DataNode節(jié)點(diǎn)沒有請(qǐng)求的情況。就算有新的DataNode節(jié)點(diǎn)加入集群,Hadoop也可以通過一條命令簡(jiǎn)單的做到數(shù)據(jù)的重新平衡。當(dāng)然這個(gè)操作最好在使用量低的夜間進(jìn)行。Hadoop的數(shù)據(jù)的交換是不經(jīng)過NameNode節(jié)點(diǎn)的,NameNode上保存的文件是直接從DataNode上收集而來(lái),所以當(dāng)用戶使用Hadoop集群上的數(shù)據(jù)時(shí),是直接從DataNode獲取數(shù)據(jù),這樣做使得NameNode的壓力得到緩解。而且最新版的Hadoop還支持在一個(gè)Hadoop集群中分別創(chuàng)建多個(gè)NameNode節(jié)點(diǎn),每個(gè)NameNode節(jié)點(diǎn)分別管理整個(gè)HDFS空間的一部分。使HDFS中的數(shù)據(jù)做到有效的隔離,并且當(dāng)一個(gè)NameNode節(jié)點(diǎn)出現(xiàn)問題,不至于影響到整個(gè)集群中數(shù)據(jù)的訪問。4、高效的大數(shù)據(jù)分析HBase作為Hadoop的一個(gè)子項(xiàng)目,主要用于數(shù)據(jù)的存儲(chǔ)。HBase適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)。與常用的數(shù)據(jù)庫(kù)不同的是HBase基于列的而不是基于行的模式。由于HDFS的特點(diǎn),所以HBase非常適合大數(shù)據(jù)量的數(shù)據(jù)分析。系統(tǒng)架構(gòu)上和Hadoop相類似同樣在進(jìn)行架構(gòu)的擴(kuò)展上十分的方便,當(dāng)出現(xiàn)存儲(chǔ)空間不足的情況時(shí),只需要添加進(jìn)去新的DataNode節(jié)點(diǎn)就可以了。由于HBase是基于列的數(shù)據(jù)庫(kù),所以配合Hive可以發(fā)揮BI數(shù)據(jù)庫(kù)的功能以達(dá)到數(shù)據(jù)分析的作用。加上HDFS分布式存儲(chǔ)的底層支持,使得其在進(jìn)行數(shù)據(jù)分析、數(shù)據(jù)挖掘上有一定的優(yōu)勢(shì)。但是Hive雖然提供了高級(jí)SQL的支持,但是對(duì)于專業(yè)的BI數(shù)據(jù)庫(kù)上還略有不足針對(duì)BI/BO工程師不是十分友善。HBase于ZooKeeper等項(xiàng)目的組合應(yīng)用,可以保證HBase的HMaster節(jié)點(diǎn)沒有單點(diǎn)的問題出現(xiàn)。而HBase和Pig及Hive等項(xiàng)目一同使用時(shí)還能得到對(duì)高層SQL語(yǔ)言的支持。二、目前使用情況及反饋1、目前線上Hadoop使用情況HDFS總空間:10.74TB已經(jīng)使用空間:251.07GBNameNode負(fù)載:平均小于0.1DataNode負(fù)載:平均在0.1左右通過iostat命令查看三臺(tái)DataNode數(shù)據(jù)節(jié)點(diǎn)信息,內(nèi)容如下:CPU的使用情況:avg-cpu:%user%nice%sys%iowait%idle0.550.000.431.0397.99硬盤的使用情況:Device:tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtnsdb5.85120.8590.12CPU的使用情況:avg-cpu:%user%nice%sys%iowait%idle0.340.000.300.3699.00硬盤的使用情況:Device:tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtnsdb5.5341.1084.69CPU的使用情況:avg-cpu:%user%nice%sys%iowait%idle0.620.000.600.7498.04硬盤的使用情況:Device:tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtnsdb6.55224.87115.692、針對(duì)目前線上環(huán)境的分析通過上面這些數(shù)值可以看出,目前Hadoop云平臺(tái)的整體壓力較小,DataNode數(shù)據(jù)節(jié)點(diǎn)的寫操作相對(duì)比較平衡,讀操作則slave3的讀取數(shù)據(jù)遠(yuǎn)遠(yuǎn)大于其它兩臺(tái)設(shè)備。目前線上系統(tǒng)架構(gòu)存在著一定的不合理性:Hadoop集群的服務(wù)器上盡可能的不部署其它應(yīng)用,因?yàn)闊o(wú)論NameNode,還是DataNode其中NameNode負(fù)責(zé)鏡像元數(shù)據(jù)的保存,隨著業(yè)務(wù)量的增加這個(gè)文件的大小會(huì)越來(lái)越大,而且這個(gè)文件是全部加載進(jìn)內(nèi)存中的;而DataNode本身就是以進(jìn)行計(jì)算和硬盤IO操作為主,而當(dāng)有其它程序運(yùn)行是勢(shì)必會(huì)造成磁盤IO和CPU資源的搶占,降低效率,這樣的結(jié)果會(huì)進(jìn)一步的降低Hadoop集群的響應(yīng)時(shí)間。Hadoop集群的邏輯架構(gòu)為:而物理架構(gòu)上,DataNode1和DataNode2兼做LD和LD(B)服務(wù)器的作用,NameNode服務(wù)器同時(shí)還是CAS統(tǒng)一認(rèn)證的服務(wù)端,DataNode3為CAS統(tǒng)一認(rèn)證的服務(wù)端的備份。用戶訪問云平臺(tái)的流程圖:用戶SISS平臺(tái)(支持中心)LVSNineCloudHadoop云計(jì)算平臺(tái)|------------ |NameNodeDataNode | |-------|| |------- || |-----------| |---------------------------------------------------| |--------------------------------------------------------------- | |------------------------------------------------------------- -- |綜上所述,由于目前集群的壓力并不大,所以這些共用服務(wù)器的缺點(diǎn)還沒有暴露出來(lái)。隨著業(yè)務(wù)量的增加,服務(wù)器節(jié)點(diǎn)的訪問量提高,每提升一倍的訪問量,NameNode服務(wù)器和DataNode服務(wù)器的訪問量將提高三倍甚至四倍。并且通過用戶訪問云平臺(tái)的流程可以看出一個(gè)用戶的一次請(qǐng)求在現(xiàn)在的架構(gòu)上,由于NameNode和SISS平臺(tái)登錄使用的是同一臺(tái)服務(wù)器,所以該服務(wù)器會(huì)建立4個(gè)連接,其中兩個(gè)是鏈接到NineCloud,另外兩個(gè)連接是連接到用戶的,而正常的情況下只會(huì)建立2個(gè)連接。由于目前訪問量的壓力不大,所以這種架構(gòu)下還沒有出現(xiàn)問題,但是隨著業(yè)務(wù)的專業(yè)和訪問量的進(jìn)一步增大,這個(gè)節(jié)點(diǎn)的問題將逐漸的凸顯出來(lái)。解決這個(gè)問題的方法相對(duì)比較簡(jiǎn)單,這里最好能夠做到“專機(jī)專用”。由于這兩個(gè)應(yīng)用都會(huì)逐漸變成訪問量較大,壓力較重的服務(wù)器,所以和其它應(yīng)用共享一臺(tái)服務(wù)器可能會(huì)出現(xiàn)問題,所以建議這兩個(gè)應(yīng)用分別在兩臺(tái)不同的應(yīng)用上運(yùn)行。而LVS和DataNode應(yīng)用也同樣存在著上面說(shuō)到的問題。而且現(xiàn)在線上的云平臺(tái)沒有做安全方面的配置,加上Hadoop自身的安全控制非常簡(jiǎn)單,只包含簡(jiǎn)單的權(quán)限,即只根據(jù)客戶端用戶名,決定使用權(quán)限。它的設(shè)計(jì)原則是:“避免好人做錯(cuò)事,但不阻止壞人做壞事”。如果你知道某臺(tái)NameNode的IP和端口,則可以很輕松獲取HDFS目錄結(jié)構(gòu),并通過修改本機(jī)機(jī)器用戶名偽裝成HDFS文件所屬owner,對(duì)該文件進(jìn)行刪除操作。這一點(diǎn)尤其是在以后進(jìn)一步進(jìn)行異地機(jī)房備份時(shí)要注意,入侵者可以利用上面的安全問題偽裝IP地址入侵到系統(tǒng),對(duì)系統(tǒng)的安全性將產(chǎn)生很大的影響。這里在以后的工作中可以通過配置kerberos,可以實(shí)現(xiàn)身份驗(yàn)證。但很多管理員使用更簡(jiǎn)單有效的辦法——通過防火墻對(duì)訪問IP進(jìn)行控制或者異地機(jī)房通過路由器組建通訊隧道(路由間VPN)。3、關(guān)于Hadoop集群服務(wù)器的選用Hadoop集群主要分成兩部分,既NameNode節(jié)點(diǎn)和DataNode節(jié)點(diǎn)。其中NameNode節(jié)點(diǎn)主要管理元數(shù)據(jù)的保存,而DataNode節(jié)點(diǎn)則是保存用戶上傳的數(shù)據(jù)。Hadoop不同的節(jié)點(diǎn)對(duì)于內(nèi)存的需求量有著很大的差別,(修改內(nèi)存占用可以通過文件bin/hadoop-evn.sh)主流節(jié)點(diǎn)內(nèi)存配置為32GB,典型場(chǎng)景內(nèi)存設(shè)置如下:NameNode 15-25GBJobTracker 2-4GBDataNode 1-4GBTaskTracker 1-2GBChildVM 1-2GB集群的使用場(chǎng)景不同相關(guān)設(shè)置也有不同,如果集群有大量小文件,則要求NN內(nèi)存至少要20GB,DN內(nèi)存至少2GB。根據(jù)以上可以看出,我們可以在服務(wù)器的選用上分成兩部分:第一部分對(duì)內(nèi)存的大小要求比較高,主要用來(lái)計(jì)算和分配的NameNode。第二部分對(duì)硬盤的IO和空間要求比較高,主要用來(lái)讀寫存儲(chǔ)數(shù)據(jù)的DataNode節(jié)點(diǎn)。這部分甚至可以配一臺(tái)配置較好的服務(wù)器之后利用虛擬化技術(shù)虛擬成多臺(tái)服務(wù)器之后分別掛載硬盤的方式來(lái)節(jié)約成本。而大部分計(jì)算工作都是交給DataNode來(lái)完成的,所以DataNode服務(wù)器對(duì)于CPU配置要相對(duì)略高一些。4、關(guān)于nineCloudnineCloud是自行開發(fā)的java程序連接HBase的接口程序,java程序通過調(diào)用HBase提供的API將數(shù)據(jù)保存到HBase中,目前是有兩臺(tái)服務(wù)器互為負(fù)載均衡。這兩臺(tái)服務(wù)器的壓力相對(duì)較低,在考慮到該程序的訪問量壓力的前提下可以進(jìn)行在該服務(wù)器上部署其它應(yīng)用。由于HBase是線性工作模式,即完成一個(gè)任務(wù)才會(huì)進(jìn)行下一個(gè)任務(wù),只是在計(jì)算時(shí)使用的是并發(fā)計(jì)算。所以同時(shí)交付給HBase過多的任務(wù)并不會(huì)縮短任務(wù)的完成時(shí)間。這里可以考慮HBase和nineCloud應(yīng)用之間采用通道連接(即nineCloud和HBase建立永久性連接,用戶的請(qǐng)求直接從該鏈接內(nèi)發(fā)送給HBase,不在單獨(dú)建立連接??刹捎孟鹊较瘸龅膬?nèi)存管理模式。)的模式進(jìn)行,用來(lái)降低創(chuàng)建連接的時(shí)間間隔,又可以有效地保證HBase和nineCloud的連接。同時(shí)還方便維護(hù)人員進(jìn)行監(jiān)控,即只要保證連接存在即可保證兩個(gè)應(yīng)用之間的是保持通訊的,如斷開則表明一側(cè)的應(yīng)用出現(xiàn)了問題。5、HBaseHBase是Apache基金會(huì)Hadoop開源項(xiàng)目中的基于Google提出的BigTable所產(chǎn)生的列數(shù)據(jù)庫(kù),HBase擁有Hadoop的方便部署,架構(gòu)擴(kuò)展容易,可以利用低配置的機(jī)器組建大規(guī)模的集群等優(yōu)勢(shì),同時(shí)由于Regionserver的機(jī)制使得HBase在大數(shù)據(jù)量的操作上會(huì)更有優(yōu)勢(shì)。HBase在讀寫上效率并不是很高一定意義上由于延時(shí)會(huì)造成系統(tǒng)運(yùn)行相對(duì)較慢。雖然HBase屬于noSQL的列數(shù)據(jù)庫(kù),但是HBase并不是針對(duì)數(shù)據(jù)的高速讀取的內(nèi)存數(shù)據(jù)庫(kù),而是偏向海量存儲(chǔ)下的運(yùn)算效率而非Key-Value存儲(chǔ)的效率。從以上的描述可以看出,HBase作為線上庫(kù)對(duì)于系統(tǒng)的要求相對(duì)苛刻:由于HBase是noSQL數(shù)據(jù)庫(kù),所以不支持事務(wù);存儲(chǔ)效率上與一般的noSQL對(duì)比沒有優(yōu)勢(shì);系統(tǒng)對(duì)于響應(yīng)時(shí)間沒有過分的要求。而從目前線上應(yīng)用來(lái)看,是存在著直接從HBase讀取數(shù)據(jù)的情況存在,當(dāng)訪問量放大后,這種直接從HBase進(jìn)行搜索的操作勢(shì)必會(huì)對(duì)整個(gè)系統(tǒng)造成一定的拖累。所以對(duì)于線上系統(tǒng)要進(jìn)行一定的改進(jìn)用來(lái)創(chuàng)造要符合HBase的應(yīng)用場(chǎng)景(與Oracle對(duì)比),比如數(shù)據(jù)量大、對(duì)線性拓展有需求、對(duì)自動(dòng)化運(yùn)維(負(fù)載均衡)有要求而且應(yīng)用模式簡(jiǎn)單。這里前面幾個(gè)應(yīng)用場(chǎng)景是使用HBase的適合環(huán)境,但是應(yīng)用模式簡(jiǎn)單是使用HBase的必須要求,如上所述,HBase是不支持事務(wù),且存儲(chǔ)速度一般。在復(fù)雜的應(yīng)用模式下使用HBase將會(huì)非常的麻煩,甚至HBase根本就無(wú)法滿足要求。如果需要完成負(fù)載的操作那么就需要增加Pig和Hive功能,Hive和Pig都是基于Hadoop的大規(guī)模數(shù)據(jù)分析平臺(tái):Pig簡(jiǎn)單說(shuō)是一種編程語(yǔ)言,它簡(jiǎn)化了Hadoop常見的工作任務(wù)。開發(fā)人員可以通過Pig直接加載數(shù)據(jù),表達(dá)轉(zhuǎn)換數(shù)據(jù)以及存儲(chǔ)最總結(jié)果。Pig內(nèi)置的操作使得半結(jié)構(gòu)化數(shù)據(jù)變得有意義(如日志文件)。同時(shí)Pig課擴(kuò)展使用Java中添加的自定義數(shù)據(jù)類型并支持?jǐn)?shù)據(jù)轉(zhuǎn)換。 Hive在Hadoop中扮演數(shù)據(jù)倉(cāng)庫(kù)的角色。Hive添加數(shù)據(jù)的結(jié)構(gòu)在HDFS(hivesuperimposesstructureondatainHDFS),并允許使用類似于SQL語(yǔ)法進(jìn)行數(shù)據(jù)查詢。與Pig一樣,Hive的核心功能是可以擴(kuò)展的。 通過上面的介紹可以看出,Hive更適合數(shù)據(jù)倉(cāng)庫(kù)的任務(wù),可以用于靜態(tài)的結(jié)構(gòu)以及需要經(jīng)常分析的工作。而且Hive對(duì)于SQL的支持是其可以直接與其他BI工具相結(jié)合。而Pig則給開發(fā)人員提供了相當(dāng)大的自由度,比直接只用HadoopJavaAPIs相比大幅度的削減了代碼量。 結(jié)合Hive和Pig可以是線上的Hadoop云平臺(tái)在功能上得到進(jìn)一步的完善,但是對(duì)于HBase在存儲(chǔ)和讀取數(shù)據(jù)的實(shí)時(shí)性上仍需要進(jìn)行一些改善,可以考慮的改善方案:在HBase前加傳統(tǒng)的Key-Value內(nèi)存數(shù)據(jù)庫(kù),增加數(shù)據(jù)的讀取速度:在這種方案中,應(yīng)用程序直接與內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的交互,之后再通過程序?qū)⒁呀?jīng)寫入內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)保存到HBase中,這里HBase的作用更多的是數(shù)據(jù)收集和固化存儲(chǔ)。完成以上操作后可以再利用Hive、Pig的Hadoop項(xiàng)目中的子項(xiàng)目對(duì)固話的數(shù)據(jù)進(jìn)行分析和加工。再將處理后的數(shù)據(jù)以緩存的方式通過固定模式加載到內(nèi)存數(shù)據(jù)庫(kù)中,并釋放內(nèi)存數(shù)據(jù)庫(kù)中重復(fù)的數(shù)據(jù);HBase和Oracle、MySQL或者M(jìn)SSQL協(xié)同使用:基本原理和方案一類似,不過Oracle、MySQL或者M(jìn)SSQL等數(shù)據(jù)庫(kù)都是關(guān)系型數(shù)據(jù)庫(kù)是是支持事務(wù)的,將處理完成的數(shù)據(jù)加載到這些數(shù)據(jù)庫(kù)中,可以讓應(yīng)用進(jìn)行相對(duì)負(fù)載的數(shù)據(jù)庫(kù)查詢操作。但是鑒于都是磁盤存儲(chǔ)的方式,需要定期對(duì)數(shù)據(jù)進(jìn)行精簡(jiǎn)。比如:實(shí)時(shí)搜索只能通過關(guān)系型數(shù)據(jù)庫(kù)搜索到當(dāng)前一個(gè)月的數(shù)據(jù),如果想要查看一個(gè)月前的數(shù)據(jù)則直接加載從HBase、Hive或者Pig處理完后緩存出的鏡像列表。 6、監(jiān)控 線上系統(tǒng)的監(jiān)控由Hadoop及HBase提供的頁(yè)面管理工具和Ganglia集群監(jiān)控工具組成,雖然兩個(gè)工具可以保證在Hadoop及HBase出現(xiàn)故障時(shí)直接的反映出來(lái),但是對(duì)于故障的預(yù)估和后續(xù)的解決故障上卻沒有什么幫助。 在后續(xù)的工作中,需要繼續(xù)完善Hadoop及HBase的監(jiān)控系統(tǒng),目前已知的監(jiān)控參考方案有:Hadoop原生腳本大部分是進(jìn)程級(jí)管理需要較多手工工作,自動(dòng)化不足,無(wú)監(jiān)控ClouderaManager功能強(qiáng)大,為HadoopEcosystem定制缺乏靈活的包版本管理,方便用官方發(fā)布包,不方便開發(fā)團(tuán)隊(duì)按照成系統(tǒng)服務(wù),單擊無(wú)法部署多版本/多服務(wù)商業(yè)軟件,不開源,無(wú)法定制/改進(jìn)ApacheAmbariHortonworks主導(dǎo)的開源實(shí)現(xiàn)特點(diǎn)類似,目前還不成熟大廠通用方案MSAutopilot,GoogleBorg,TencentTorca三、HBase和Oracle HBase已經(jīng)在上一個(gè)章節(jié)簡(jiǎn)單的介紹過了,這里就直接介紹Oracle:Oracle作為一款商用軟件,在性能上確實(shí)有很強(qiáng)大的競(jìng)爭(zhēng)力。HBase作為一款開源的列數(shù)據(jù)庫(kù),在非大數(shù)據(jù)量(PB級(jí)別)的數(shù)據(jù)操作上與Oracle相比并沒有優(yōu)勢(shì),尤其在數(shù)據(jù)量在TB以下級(jí)別時(shí)。HBase的優(yōu)勢(shì)是在大數(shù)據(jù)的數(shù)據(jù)操作,借助于HDFS的分部署云計(jì)算達(dá)到并發(fā)計(jì)算的效果。又因?yàn)閺腍Base中獲取數(shù)據(jù)的三種辦法:1、通過rowID直接訪問;2、通過設(shè)置rowID的范圍訪問;3、全表掃描。由此可知,HBase無(wú)法使用復(fù)雜的SQL語(yǔ)句來(lái)進(jìn)行查詢,如果不知道rowID相關(guān)的信息,那么只有通過全表掃面才能獲取信息,也就是說(shuō)HBase在條件查找上有一定的局限性。而且HBase中所有表都是相互獨(dú)立的,沒有像Oracle等關(guān)系型數(shù)據(jù)庫(kù)那樣的外鍵的定義。雖然通過Hive可以使的HBase可以兼容簡(jiǎn)單SQL語(yǔ)句,但是對(duì)于事務(wù)依舊沒有支持,并且很多復(fù)雜的SQL條件搜索語(yǔ)句也是不支持的。 當(dāng)數(shù)據(jù)量達(dá)到一定的數(shù)量級(jí)時(shí),由于數(shù)據(jù)文件大小的增長(zhǎng)會(huì)逐步拉低Oracle的搜索速率。但是HBase當(dāng)文件大小增長(zhǎng)到一定程度時(shí),會(huì)自動(dòng)將過大的文件分割成多個(gè)小文件(分割成小文件的數(shù)量和HBaseRegionserver的數(shù)量有關(guān)),這個(gè)功能和普通關(guān)系型數(shù)據(jù)庫(kù)的分割表功能類似,不過分割表功能除了Oracle的RAC功能外,依舊只是在同一臺(tái)服務(wù)器上面進(jìn)行操作。并將每一個(gè)小文件交付給對(duì)應(yīng)的一個(gè)RegionServer進(jìn)行處理。當(dāng)用戶進(jìn)行相關(guān)的操作時(shí)可以更迅速的找到用戶所需要的數(shù)據(jù)。 那么在什么情況下可以考慮使用HBase:需要存儲(chǔ)大量數(shù)據(jù);數(shù)據(jù)寫入量大;需要在大數(shù)據(jù)集內(nèi)進(jìn)行主鍵的隨機(jī)查詢;需要存儲(chǔ)非結(jié)構(gòu)化或者半結(jié)構(gòu)化的數(shù)據(jù);不需要RDBMS的一些功能(跨行事務(wù),join等)。 綜上所述,如果只是作為數(shù)據(jù)收集和分析的工具,HBase完全可以替換Oracle。但是在數(shù)據(jù)的檢索上Oracle還是有一定的優(yōu)勢(shì)的,當(dāng)且僅當(dāng)數(shù)據(jù)量過大對(duì)Oracle的計(jì)算速率造成影響時(shí),HBase在數(shù)據(jù)的檢索上會(huì)有一定的優(yōu)勢(shì)。尤其在性價(jià)比方面則更為突出。 所以在使用HBase的時(shí)候,最好還是要用HBase和MySQL或者Oracle相互配合才能得到最好的效果。這里面可以用HBase作為大數(shù)據(jù)量的存儲(chǔ)、調(diào)用和分析,并利用MySQL或者Oracle對(duì)于事務(wù)和復(fù)雜SQL語(yǔ)句的良好支持完成外部應(yīng)用程序?qū)?shù)據(jù)庫(kù)數(shù)據(jù)的調(diào)用和查詢。 關(guān)于數(shù)據(jù)量對(duì)于Oracle和HBase的影響可以粗略的看做下圖:雖然Oracle可以通過大規(guī)模的組建RAC來(lái)達(dá)到分布式的效果,使其性能在對(duì)付大數(shù)據(jù)量時(shí)與HBase相差無(wú)幾,但是這種大規(guī)模的使用Oracle必然會(huì)受到Listen的限制,如果從Oracle購(gòu)買必然會(huì)產(chǎn)生巨額的費(fèi)用。所以無(wú)論從效果還是從經(jīng)濟(jì)利益上考慮,對(duì)于大數(shù)據(jù)HBase都是要由于Oracle的,這也是HBase廉價(jià)的一個(gè)特點(diǎn)。以目前線上HBase的數(shù)據(jù)量(150G左右的數(shù)據(jù)量,在數(shù)據(jù)等級(jí)上屬于小數(shù)據(jù)量)來(lái)看,并不十分適合HBase的定義。簡(jiǎn)單來(lái)說(shuō),就目前的數(shù)據(jù)量來(lái)看用HBase作為目前保存報(bào)文的分析工具(分析內(nèi)容包括但不限于:企業(yè)發(fā)送報(bào)文的時(shí)間統(tǒng)計(jì),報(bào)文類型統(tǒng)計(jì),發(fā)送報(bào)文的企業(yè)類型統(tǒng)計(jì),申報(bào)內(nèi)容統(tǒng)計(jì)等。)是完全沒有問題的,但是讓應(yīng)用直接從HBase中搜索數(shù)據(jù)的并沒有比讓應(yīng)用直接從Oracle中讀取數(shù)據(jù)要有優(yōu)勢(shì),且目前線上系統(tǒng)的節(jié)點(diǎn)并不多(有三個(gè)Regionserver)。對(duì)于線上HBase系統(tǒng)在以后的使用上一方面要加強(qiáng)集群方面的擴(kuò)展,可以說(shuō)HBase屬于節(jié)點(diǎn)越多對(duì)于數(shù)據(jù)的處理速度越快;另一方面目前線上HBase數(shù)據(jù)庫(kù)里面的數(shù)據(jù)是從Oracle完全倒過去的線上HBase數(shù)據(jù)庫(kù)里面的數(shù)據(jù)是從Oracle完全倒過去的,所以在數(shù)據(jù)結(jié)構(gòu)上更類似Oracle的結(jié)構(gòu)化數(shù)據(jù),這點(diǎn)在以后的使用中要逐漸將結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)型為半結(jié)構(gòu)化數(shù)據(jù),最終邊衛(wèi)非結(jié)構(gòu)化數(shù)據(jù)。為什么要這么做:結(jié)構(gòu)化數(shù)據(jù)即所有數(shù)據(jù)的格式相同,內(nèi)容有相關(guān)性,這使得數(shù)據(jù)在傳輸?shù)倪^程中會(huì)包含大量的空值信息,而這種空值信息在結(jié)構(gòu)化數(shù)據(jù)中是占用空間的。這種情況直接影響的就是數(shù)據(jù)傳輸時(shí),會(huì)有大量的帶寬被這種沒有實(shí)際意義的空值信息占用。當(dāng)數(shù)據(jù)進(jìn)入半結(jié)構(gòu)化雖然空值信息不再占用空間,但是信息頭依舊存在,這使得雖然在數(shù)據(jù)傳輸過程中帶寬會(huì)降低,但是依舊不能摒棄掉沒有用的信息對(duì)帶寬的占用。而當(dāng)數(shù)據(jù)最后進(jìn)入非結(jié)構(gòu)化時(shí),那么數(shù)據(jù)傳輸已經(jīng)基本做到了摒棄沒有用的信息對(duì)帶寬的占用,一方面加快了數(shù)據(jù)的傳輸速度,一方面節(jié)約了帶寬。四、HDFS作為分布式存儲(chǔ)的使用可能性分析以下三種環(huán)境,是最適合采用云存儲(chǔ)。其實(shí)也正是這些實(shí)際需求,催生了云存儲(chǔ),也為云存儲(chǔ)的發(fā)展提供了可能。首先,判定是否存在著這種相關(guān)性,就是軟硬件升級(jí)的費(fèi)用和系統(tǒng)"無(wú)限"的可擴(kuò)展性密切關(guān)聯(lián)。此時(shí)就要注意了:當(dāng)系統(tǒng)的能力受到限制后,一些架構(gòu)隱含著驚人的再次認(rèn)證許可費(fèi)用。例如:你是否受到軟件許可費(fèi)的困擾呢?當(dāng)你不得不再次增加驅(qū)動(dòng)器或存儲(chǔ)陣列的數(shù)量,這種做法實(shí)際上已超出了邊際的最優(yōu)成本。其次,在系統(tǒng)維護(hù)過程中或軟硬件重新配置時(shí),確認(rèn)存儲(chǔ)環(huán)境是否在線、數(shù)據(jù)是否可用。包括軟硬件,所有的存儲(chǔ)系統(tǒng)有可能隨時(shí)需要升級(jí)。當(dāng)更新時(shí),一定要知道在系統(tǒng)上會(huì)產(chǎn)生哪些影響。最后,如果選擇數(shù)據(jù)和災(zāi)難備份產(chǎn)品,如自動(dòng)讓快照和復(fù)制。但要提醒的是,提防一些隱性成本,如帶寬要求。它可能限制一些快照的次數(shù)或復(fù)制(即每次都要更改或整個(gè)復(fù)制的容量)??偨Y(jié)一下上面所說(shuō)的三點(diǎn)就是表明了Hadoop具有的三種主要特性:開源軟件,沒有使用限制;擴(kuò)展維護(hù)方便;容災(zāi)體系簡(jiǎn)單明了。 基于HDFS的原理,分布式存儲(chǔ),一寫多讀,可以利用大量廉價(jià)設(shè)備組建大規(guī)模存儲(chǔ)等優(yōu)勢(shì)。但是HDFS從文件寫入、同步文件到可以讀取需要一定的時(shí)間(HDFS的后臺(tái)尋址時(shí)間是每次搜索約20ms),所以并不適合對(duì)響應(yīng)時(shí)間有很高的要求的應(yīng)用。綜上所述,適合存放于云存儲(chǔ)的程序或文件包括:圖片、網(wǎng)頁(yè)、系統(tǒng)備份文件及已經(jīng)歸檔的日志文件等。通過這個(gè)結(jié)論,我們可以將靜態(tài)的頁(yè)面文件,圖片文件,應(yīng)用和數(shù)據(jù)庫(kù)的備份數(shù)據(jù)保存到Hadoop的云存儲(chǔ)上,一方面目前HBase對(duì)于云存儲(chǔ)的空間利用率較低,HDFS上有大量的剩余空間(如果按照目前的數(shù)據(jù)增量計(jì)算大概需要十多年才能使用完)。為什么不建議將常用的應(yīng)用程序存到HDFS那?這是因?yàn)樯厦娼榻B過HDFS由于后臺(tái)同步會(huì)造成響應(yīng)時(shí)間的延后,而應(yīng)用程序又是需要經(jīng)常更新的,那么當(dāng)對(duì)應(yīng)用程序進(jìn)行更新后,等待后臺(tái)同步的時(shí)間很難把握,這段時(shí)間是不能對(duì)外提供服務(wù)的。鑒于此所以不建議將常用的應(yīng)用程序存到HDFS。五、成功案例分析云作為目前最熱門的概念之一已經(jīng)被不少?gòu)S商所使用,其中不乏微軟、阿里巴巴、google、facebook等重量級(jí)的企業(yè),云和虛擬化的概念已經(jīng)被更多的融合到了一起。目前公布了的云計(jì)算成功案例多數(shù)是基于日志分析的云計(jì)算平臺(tái),利用HDFS的分布式存儲(chǔ)和大吞吐量的優(yōu)勢(shì),對(duì)保存于HDFS上的日志文件進(jìn)行日志分析,使日志分析的操作得到有效的速率上的提升,分析出來(lái)的日志信息可以提交給BI/BO人員進(jìn)行進(jìn)一步的數(shù)據(jù)挖掘,也可以提交給運(yùn)維人員進(jìn)行應(yīng)用平臺(tái)故障和潛在問題分析。淘寶在雙十一期間利用HBase和MySQL等技術(shù)的案例及分析:Hadoop是離線計(jì)算平臺(tái),其中包括分布式文件系統(tǒng)(HDFS)和分布式計(jì)算(MapReduce),這本身是無(wú)法對(duì)響應(yīng)時(shí)間做保證的。但是目前在Hadoop之上的生態(tài)系統(tǒng)越來(lái)越完善,其中HBase就是支持海量數(shù)據(jù)、高并發(fā)的在線數(shù)據(jù)庫(kù),應(yīng)對(duì)這種場(chǎng)景就非常適合。HBase在這次雙十一中與MySQL等在線數(shù)據(jù)庫(kù)共同作為線上庫(kù)使用,承擔(dān)了重要的責(zé)任,并創(chuàng)下了并在全天高壓力之下無(wú)故障的佳績(jī)。另外非Hadoop生態(tài)圈的流式計(jì)算框架Storm、S4也同樣可以為實(shí)時(shí)計(jì)算分擔(dān)一定的壓力。淘寶用HBase替換MySQL的一部分應(yīng)用,這些應(yīng)用自然是要符合HBase的應(yīng)用場(chǎng)景(與MySQL對(duì)比),比如數(shù)據(jù)量大、對(duì)線性拓展有需求、對(duì)自動(dòng)化運(yùn)維(負(fù)載均衡)有要求而且應(yīng)用模式簡(jiǎn)單。在支付寶中因其增長(zhǎng)速度快,業(yè)務(wù)量大,造成了很多應(yīng)用都是數(shù)據(jù)量龐大而且速度增長(zhǎng)快,因此有一些應(yīng)用迫切需要一個(gè)數(shù)據(jù)庫(kù)能夠支撐現(xiàn)在的業(yè)務(wù)而降低對(duì)關(guān)系型的需求,所以嘗試了HBase的解決方案。在Hadoop的體系當(dāng)中,支持實(shí)時(shí)的一條線,HBase,支持海量數(shù)據(jù)庫(kù)初衷的時(shí)候,設(shè)計(jì)為了設(shè)計(jì)萬(wàn)億級(jí)實(shí)時(shí)數(shù)據(jù)庫(kù),HBase這個(gè)東西經(jīng)過這幾年的發(fā)展,已經(jīng)逐漸成為目前業(yè)界當(dāng)中主要的實(shí)時(shí)數(shù)據(jù)庫(kù),分布式數(shù)據(jù)庫(kù),像支付寶直接上HBase系統(tǒng),就是考慮到HBase的先進(jìn)架構(gòu),能夠幫助支付寶完成現(xiàn)在很多的海量數(shù)據(jù)的存儲(chǔ)以及在線隨機(jī)讀寫高性能的訪問和存儲(chǔ)。第一個(gè)是HBase本身在底層依賴的HDFS,加載了唯一一塊數(shù)據(jù),單臺(tái)機(jī)器保證一致性,HDFS保持了冗余。第二點(diǎn),恢復(fù)過程當(dāng)中,F(xiàn)ailover過程非常復(fù)雜,這個(gè)時(shí)間消耗越長(zhǎng),作為在線系統(tǒng),這種時(shí)間越長(zhǎng)可能會(huì)影響到在線訪問用戶體驗(yàn)。第三點(diǎn)它依賴的HDFS,HBase作為在線數(shù)據(jù)庫(kù)依賴HDFS有故障的,經(jīng)過幾小時(shí)恢復(fù)提供生產(chǎn)業(yè)務(wù),對(duì)業(yè)務(wù)方?jīng)]有直接感受,作為在線系統(tǒng)如果掛掉,如果需要經(jīng)過近小時(shí)恢復(fù)時(shí)間,恐怕就會(huì)直接收到自于支付寶外部的用戶投訴了。HBase目前它自己的監(jiān)控體系尚不完善,目前的監(jiān)控力度非常得粗,只能監(jiān)控到單臺(tái)的RegionServer的情況,看不到當(dāng)前用戶表有多少讀寫比例,看不到當(dāng)前服務(wù)結(jié)點(diǎn)寫作量多少,讀出量多少。分析:整個(gè)案例的前半段給出了淘寶嘗試HBase的幾點(diǎn)前提,那就是:數(shù)據(jù)量大、數(shù)據(jù)增長(zhǎng)量大這兩點(diǎn),其次就是自動(dòng)化運(yùn)維,應(yīng)用模式簡(jiǎn)單等幾個(gè)方面。后半段則是主要介紹了HBase的一些缺點(diǎn)和改進(jìn)的地方:1、HBase過于依賴底層的HDFS的冗余2、數(shù)據(jù)恢復(fù)過程復(fù)雜且不透明。這里第一點(diǎn)主要表現(xiàn)了由于HBase很大程度上依賴于HDFS,所以當(dāng)出現(xiàn)故障時(shí)要考慮是HBase的問題還是HDFS出現(xiàn)了問題,也就是間接的增加了問題點(diǎn)。而第二點(diǎn)則有因?yàn)榛謴?fù)時(shí)間的過長(zhǎng)很容易對(duì)用戶的使用體驗(yàn)造成影響,甚至直接造成用戶量的下降。所以淘寶在原生的HBase上進(jìn)行了改進(jìn),完善了監(jiān)控體系和單點(diǎn)故障。這里要強(qiáng)調(diào)一下,無(wú)論是阿里云、google還是百度等使用的Hadoop云計(jì)算平臺(tái)都是經(jīng)過他們內(nèi)部開發(fā)部門通過二次開發(fā)過的,他們都有一個(gè)完整的Hadoop運(yùn)維團(tuán)隊(duì)甚至是開發(fā)團(tuán)隊(duì)。因?yàn)镠adoop提供的并不是一個(gè)云平臺(tái)的解決方案,而更像是一個(gè)云平臺(tái)的框架。如果想要更好的使用Hadoop云計(jì)算平臺(tái),不僅需要對(duì)Hadoop提供的API接口進(jìn)行研究,甚至還需要對(duì)MapReduce等程序進(jìn)行二次開發(fā)來(lái)滿足系統(tǒng)和業(yè)務(wù)的需求。六、發(fā)展方向1、SaaS方向 首先先解釋一下什么叫SaaS,SaaS是Software-as-a-service的簡(jiǎn)稱,中文翻譯有軟件即服務(wù)、軟件運(yùn)營(yíng)模式等多種稱呼。SaaS主要目的是去掉了用戶購(gòu)買軟件及相關(guān)硬件設(shè)備的成本,改成直接通過網(wǎng)絡(luò)使用。減少了客戶對(duì)于部分專用設(shè)備的購(gòu)買和維護(hù)方面的成本,用戶只需要購(gòu)買使用權(quán)(先計(jì)費(fèi)模式)或者通過其它的方式進(jìn)行注冊(cè)(后計(jì)費(fèi)模式)后,通過某些認(rèn)證方式登錄到提供服務(wù)的網(wǎng)站就能使用相關(guān)的功能。用戶可以利用認(rèn)證方式登錄到應(yīng)用,在用戶登錄的同時(shí),程序會(huì)根據(jù)用戶的認(rèn)證許可加載用戶要使用的對(duì)應(yīng)模塊并加載用戶自身的配置文件,這樣可以比較方便的解決目前客戶端模塊和客戶端本地設(shè)置上的差異問題。 公司現(xiàn)有業(yè)務(wù)采用的是C/S架構(gòu),但是目前發(fā)現(xiàn)有可能存在著有的公司申報(bào)時(shí)可以申報(bào),但是不會(huì)往報(bào)關(guān)數(shù)據(jù)統(tǒng)計(jì)服務(wù)器發(fā)送計(jì)費(fèi)統(tǒng)計(jì)數(shù)據(jù)。這樣就造成了計(jì)費(fèi)信息不準(zhǔn)確,甚至一直通過某些手段“免費(fèi)”使用報(bào)關(guān)軟件。SaaS架構(gòu)的優(yōu)勢(shì):1)服務(wù)的收費(fèi)方式風(fēng)險(xiǎn)?。嚎蛻羰褂玫目蛻舳撕头?wù)器端其實(shí)都是在公司方,所有的用戶操作都可以很好的保存在系統(tǒng)日志中,計(jì)費(fèi)時(shí)也不需要用戶提供相應(yīng)的報(bào)文信息,而直接從服務(wù)的日志或者數(shù)據(jù)庫(kù)中獲?。?)產(chǎn)品更新速度加快:由于客戶端在公司一側(cè),使得更新維護(hù)變得更加的方便,發(fā)布更新內(nèi)容只需要一次對(duì)服務(wù)器的更新,所有用戶都

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論