HBase的構(gòu)成
為建湖等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及建湖網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、建湖網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!物理上來(lái)說(shuō),HBase是由三種類型的服務(wù)器以主從模式構(gòu)成的。這三種服務(wù)器分別是:Region server,HBase HMaster,ZooKeeper。
其中Region server負(fù)責(zé)數(shù)據(jù)的讀寫(xiě)服務(wù)。用戶通過(guò)溝通Region server來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的訪問(wèn)。
HBase HMaster負(fù)責(zé)Region的分配及數(shù)據(jù)庫(kù)的創(chuàng)建和刪除等操作。
ZooKeeper作為HDFS的一部分,負(fù)責(zé)維護(hù)集群的狀態(tài)(某臺(tái)服務(wù)器是否在線,服務(wù)器之間數(shù)據(jù)的同步操作及master的選舉等)。
另外,Hadoop DataNode負(fù)責(zé)存儲(chǔ)所有Region Server所管理的數(shù)據(jù)。HBase中的所有數(shù)據(jù)都是以HDFS文件的形式存儲(chǔ)的。出于使Region server所管理的數(shù)據(jù)更加本地化的考慮,Region server是根據(jù)DataNode分布的。HBase的數(shù)據(jù)在寫(xiě)入的時(shí)候都存儲(chǔ)在本地。但當(dāng)某一個(gè)region被移除或被重新分配的時(shí)候,就可能產(chǎn)生數(shù)據(jù)不在本地的情況。這種情況只有在所謂的compaction之后才能解決。
NameNode負(fù)責(zé)維護(hù)構(gòu)成文件的所有物理數(shù)據(jù)塊的元信息(metadata)。
HBase結(jié)構(gòu)如下圖所示:
Regions
HBase中的表是根據(jù)row key的值水平分割成所謂的region的。一個(gè)region包含表中所有row key位于region的起始鍵值和結(jié)束鍵值之間的行。集群中負(fù)責(zé)管理Region的結(jié)點(diǎn)叫做Region server。Region server負(fù)責(zé)數(shù)據(jù)的讀寫(xiě)。每一個(gè)Region server大約可以管理1000個(gè)region。Region的結(jié)構(gòu)如下圖所示:
HBase的HMaster
HMaster負(fù)責(zé)region的分配,數(shù)據(jù)庫(kù)的創(chuàng)建和刪除操作。
具體來(lái)說(shuō),HMaster的職責(zé)包括:
調(diào)控Region server的工作
在集群?jiǎn)?dòng)的時(shí)候分配region,根據(jù)恢復(fù)服務(wù)或者負(fù)載均衡的需要重新分配region。
監(jiān)控集群中的Region server的工作狀態(tài)。(通過(guò)監(jiān)聽(tīng)zookeeper對(duì)于ephemeral node狀態(tài)的通知)。
管理數(shù)據(jù)庫(kù)
提供創(chuàng)建,刪除或者更新表格的接口。
HMaster的工作如下圖所示:
ZooKeeper
HBase利用ZooKeeper維護(hù)集群中服務(wù)器的狀態(tài)并協(xié)調(diào)分布式系統(tǒng)的工作。ZooKeeper維護(hù)服務(wù)器是否存活,是否可訪問(wèn)的狀態(tài)并提供服務(wù)器故障/宕機(jī)的通知。ZooKeeper同時(shí)還使用一致性算法來(lái)保證服務(wù)器之間的同步。同時(shí)也負(fù)責(zé)Master選舉的工作。需要注意的是要保證良好的一致性及順利的Master選舉,集群中的服務(wù)器數(shù)目必須是奇數(shù)。例如三臺(tái)或五臺(tái)。
整理了一份2018年合適程序員學(xué)習(xí)的大數(shù)據(jù)的學(xué)習(xí)資料需要的加群QQ群:834325294 注明5CTO既可免費(fèi)獲取
ZooKeeper的工作如下圖所示:
HBase各組成部分之間的合作
ZooKeeper用來(lái)協(xié)調(diào)分布式系統(tǒng)的成員之間共享的狀態(tài)信息。Region Server及HMaster也與ZooKeeper連接。ZooKeeper通過(guò)心跳信息為活躍的連接維持相應(yīng)的ephemeral node。如下圖所示:
每一個(gè)Region server都在ZooKeeper中創(chuàng)建相應(yīng)的ephemeral node。HMaster通過(guò)監(jiān)控這些ephemeral node的狀態(tài)來(lái)發(fā)現(xiàn)正常工作的或發(fā)生故障下線的Region server。HMaster之間通過(guò)互相競(jìng)爭(zhēng)創(chuàng)建ephemeral node進(jìn)行Master選舉。ZooKeeper會(huì)選出區(qū)中第一個(gè)創(chuàng)建成功的作為唯一一個(gè)活躍的HMaster。活躍的HMaster向ZooKeeper發(fā)送心跳信息來(lái)表明自己在線的狀態(tài)。不活躍的HMaster則監(jiān)聽(tīng)活躍HMaster的狀態(tài),并在活躍HMaster發(fā)生故障下線之后重新選舉,從而實(shí)現(xiàn)了HBase的高可用性。
如果Region server或者HMaster不能成功向ZooKeeper發(fā)送心跳信息,則其與ZooKeeper的連接超時(shí)之后與之相應(yīng)的ephemeral node就會(huì)被刪除。監(jiān)聽(tīng)ZooKeeper狀態(tài)的其他節(jié)點(diǎn)就會(huì)得到相應(yīng)node不存在的信息,從而進(jìn)行相應(yīng)的處理。活躍的HMaster監(jiān)聽(tīng)Region Server的信息,并在其下線后重新分配Region server來(lái)恢復(fù)相應(yīng)的服務(wù)。不活躍的HMaster監(jiān)聽(tīng)活躍HMaster的信息,并在起下線后重新選出活躍的HMaster進(jìn)行服務(wù)。
HBase的第一次讀寫(xiě)
HBase中有一個(gè)特殊的起目錄作用的表格,稱為META table。META table中保存集群region的地址信息。ZooKeeper中會(huì)保存META table的位置。
當(dāng)用戶第一次想HBase中進(jìn)行讀或?qū)懖僮鲿r(shí),以下步驟將被執(zhí)行:
1.客戶從ZooKeeper中得到保存META table的Region server的信息。
2.客戶向該Region server查詢負(fù)責(zé)管理自己想要訪問(wèn)的row key的所在的region的Region server的地址??蛻魰?huì)緩存這一信息以及META table所在位置的信息。
3.客戶與負(fù)責(zé)其row所在region的Region Server通信,實(shí)現(xiàn)對(duì)該行的讀寫(xiě)操作。
在未來(lái)的讀寫(xiě)操作中,客戶會(huì)根據(jù)緩存尋找相應(yīng)的Region server地址。除非該Region server不再可達(dá)。這時(shí)客戶會(huì)重新訪問(wèn)META table并更新緩存。這一過(guò)程如下圖所示:
HBase的META table
META table中保存了HBase中所有region的信息。
META table的格式類似于B tree。
META table的結(jié)構(gòu)如下:
鍵:region的起始鍵,region id。
值:Region server
如下圖所示:
Region Server的組成
運(yùn)行在HDFS DataNode上的Region server包含如下幾個(gè)部分:
WAL:既Write Ahead Log。WAL是HDFS分布式文件系統(tǒng)中的一個(gè)文件。WAL用來(lái)存儲(chǔ)尚未寫(xiě)入永久性存儲(chǔ)區(qū)中的新數(shù)據(jù)。WAL也用來(lái)在服務(wù)器發(fā)生故障時(shí)進(jìn)行數(shù)據(jù)恢復(fù)。
Block Cache:Block cache是讀緩存。Block cache將經(jīng)常被讀的數(shù)據(jù)存儲(chǔ)在內(nèi)存中來(lái)提高讀取數(shù)據(jù)的效率。當(dāng)Block cache的空間被占滿后,其中被讀取頻率最低的數(shù)據(jù)將會(huì)被殺出。
MemStore:MemStore是寫(xiě)緩存。其中存儲(chǔ)了從WAL中寫(xiě)入但尚未寫(xiě)入硬盤(pán)的數(shù)據(jù)。MemStore中的數(shù)據(jù)在寫(xiě)入硬盤(pán)之前會(huì)先進(jìn)行排序操作。每一個(gè)region中的每一個(gè)column family對(duì)應(yīng)一個(gè)MemStore。
Hfiles:Hfiles存在于硬盤(pán)上,根據(jù)排序號(hào)的鍵存儲(chǔ)數(shù)據(jù)行。
Region server的結(jié)構(gòu)如下圖所示:
**HBase的寫(xiě)操作步驟
步驟一
當(dāng)HBase的用戶發(fā)出一個(gè)PUT請(qǐng)求時(shí)(也就是HBase的寫(xiě)請(qǐng)求),HBase進(jìn)行處理的第一步是將數(shù)據(jù)寫(xiě)入HBase的write-ahead log(WAL)中。
WAL文件是順序?qū)懭氲模簿褪撬行绿砑拥臄?shù)據(jù)都被加入WAL文件的末尾。WAL文件存在硬盤(pán)上。
當(dāng)server出現(xiàn)問(wèn)題之后,WAL可以被用來(lái)恢復(fù)尚未寫(xiě)入HBase中的數(shù)據(jù)(因?yàn)閃AL是保存在硬盤(pán)上的)。
如下圖所示:
步驟二
當(dāng)數(shù)據(jù)被成功寫(xiě)入WAL后,HBase將數(shù)據(jù)存入MemStore。這時(shí)HBase就會(huì)通知用戶PUT操作已經(jīng)成功了。
過(guò)程如下圖所示:
HBase的MemStore
Memstore存在于內(nèi)存中,其中存儲(chǔ)的是按鍵排好序的待寫(xiě)入硬盤(pán)的數(shù)據(jù)。數(shù)據(jù)也是按鍵排好序?qū)懭際File中的。每一個(gè)Region中的每一個(gè)Column family對(duì)應(yīng)一個(gè)Memstore文件。因此對(duì)數(shù)據(jù)的更新也是對(duì)應(yīng)于每一個(gè)Column family。
如下圖所示:
HBase Region Flush
當(dāng)MemStore中積累了足夠多的數(shù)據(jù)之后,整個(gè)Memcache中的數(shù)據(jù)會(huì)被一次性寫(xiě)入到HDFS里的一個(gè)新的HFile中。因此HDFS中一個(gè)Column family可能對(duì)應(yīng)多個(gè)HFile。這個(gè)HFile中包含了相應(yīng)的cell,或者說(shuō)鍵值的實(shí)例。這些文件隨著MemStore中積累的對(duì)數(shù)據(jù)的操作被flush到硬盤(pán)上而創(chuàng)建。
需要注意的是,MemStore存儲(chǔ)在內(nèi)存中,這也是為什么HBase中Column family的數(shù)目有限制的原因。每一個(gè)Column family對(duì)應(yīng)一個(gè)MemStore,當(dāng)MemStore存滿之后,里面所積累的數(shù)據(jù)就會(huì)一次性flush到硬盤(pán)上。同時(shí),為了使HDFS能夠知道當(dāng)前哪些數(shù)據(jù)已經(jīng)被存儲(chǔ)了,MemStore中還保存最后一次寫(xiě)操作的序號(hào)。
每個(gè)HFile中大的序號(hào)作為meta field存儲(chǔ)在其中,這個(gè)序號(hào)標(biāo)明了之前的數(shù)據(jù)向硬盤(pán)存儲(chǔ)的終止點(diǎn)和接下來(lái)繼續(xù)存儲(chǔ)的開(kāi)始點(diǎn)。當(dāng)一個(gè)region啟動(dòng)的時(shí)候,它會(huì)讀取每一個(gè)HFile中的序號(hào)來(lái)得知當(dāng)前region中最新的操作序號(hào)是什么(大的序號(hào))。
如下圖所示:
HFile
HBase中的鍵值數(shù)據(jù)對(duì)存儲(chǔ)在HFile中。上面已經(jīng)說(shuō)過(guò),當(dāng)MemStore中積累足夠多的數(shù)據(jù)的時(shí)候就會(huì)將其中的數(shù)據(jù)整個(gè)寫(xiě)入到HDFS中的一個(gè)新的HFile中。因?yàn)镸emStore中的數(shù)據(jù)已經(jīng)按照鍵排好序,所以這是一個(gè)順序?qū)懙倪^(guò)程。由于順序?qū)懖僮鞅苊饬舜疟P(pán)大量尋址的過(guò)程,所以這一操作非常高效。
如下圖所示:
HFile的結(jié)構(gòu)
HFile中包含了一個(gè)多層索引系統(tǒng)。這個(gè)多層索引是的HBase可以在不讀取整個(gè)文件的情況下查找數(shù)據(jù)。這一多層索引類似于一個(gè)B+樹(shù)。
鍵值對(duì)根據(jù)鍵大小升序排列。
索引指向64KB大小的數(shù)據(jù)塊。
每一個(gè)數(shù)據(jù)塊還有其相應(yīng)的葉索引(leaf-index)。
每一個(gè)數(shù)據(jù)塊的最后一個(gè)鍵作為中間索引(intermediate index)。
根索引(root index)指向中間索引。
文件結(jié)尾指向meta block。因?yàn)閙eta block是在數(shù)據(jù)寫(xiě)入硬盤(pán)操作的結(jié)尾寫(xiě)入該文件中的。文件的結(jié)尾同時(shí)還包含一些別的信息。比如bloom filter及時(shí)間信息。Bloom filter可以幫助HBase加速數(shù)據(jù)查詢的速度。因?yàn)镠Base可以利用Bloom filter跳過(guò)不包含當(dāng)前查詢的鍵的文件。時(shí)間信息則可以幫助HBase在查詢時(shí)跳過(guò)讀操作所期望的時(shí)間區(qū)域之外的文件。
如下圖所示:
HFile的索引
HFile的索引在HFile被打開(kāi)時(shí)會(huì)被讀取到內(nèi)存中。這樣就可以保證數(shù)據(jù)檢索只需一次硬盤(pán)查詢操作。
如下圖所示:
HBase的讀合并(Read Merge)以及讀放大(Read amplification)
通過(guò)上面的論述,我們已經(jīng)知道了HBase中對(duì)應(yīng)于某一行數(shù)據(jù)的cell可能位于多個(gè)不同的文件或存儲(chǔ)介質(zhì)中。比如已經(jīng)存入硬盤(pán)的行位于硬盤(pán)上的HFile中,新加入或更新的數(shù)據(jù)位于內(nèi)存中的MemStore中,最近讀取過(guò)的數(shù)據(jù)則位于內(nèi)存中的Block cache中。所以當(dāng)我們讀取某一行的時(shí)候,為了返回相應(yīng)的行數(shù)據(jù),HBase需要根據(jù)Block cache,MemStore以及硬盤(pán)上的HFile中的數(shù)據(jù)進(jìn)行所謂的讀合并操作。
1.HBase會(huì)首先從Block cache(HBase的讀緩存)中尋找所需的數(shù)據(jù)。
2.接下來(lái),HBase會(huì)從MemStore中尋找數(shù)據(jù)。因?yàn)樽鳛镠Base的寫(xiě)緩存,MemStore中包含了最新版本的數(shù)據(jù)。
3.如果HBase從Block cache和MemStore中沒(méi)有找到行所對(duì)應(yīng)的cell所有的數(shù)據(jù),系統(tǒng)會(huì)接著根據(jù)索引和bloom filter從相應(yīng)的HFile中讀取目標(biāo)行的cell的數(shù)據(jù)。
如下圖所示:
這里一個(gè)需要注意的地方是所謂的讀放大效應(yīng)(Read amplification)。根據(jù)前文所說(shuō),一個(gè)MemStore對(duì)應(yīng)的數(shù)據(jù)可能存儲(chǔ)于多個(gè)不同的HFile中(由于多次的flush),因此在進(jìn)行讀操作的時(shí)候,HBase可能需要讀取多個(gè)HFile來(lái)獲取想要的數(shù)據(jù)。這會(huì)影響HBase的性能表現(xiàn)。
如下圖所示:
HBase的Compaction
Minor Compaction
HBase會(huì)自動(dòng)選取一些較小的HFile進(jìn)行合并,并將結(jié)果寫(xiě)入幾個(gè)較大的HFile中。這一過(guò)程稱為Minor compaction。Minor compaction通過(guò)Merge sort的形式將較小的文件合并為較大的文件,從而減少了存儲(chǔ)的HFile的數(shù)量,提升HBase的性能。
這一過(guò)程如下圖所示:
Major Compaction
所謂Major Compaction指的是HBase將對(duì)應(yīng)于某一個(gè)Column family的所有HFile重新整理并合并為一個(gè)HFile,并在這一過(guò)程中刪除已經(jīng)刪除或過(guò)期的cell,更新現(xiàn)有cell的值。這一操作大大提升讀的效率。但是因?yàn)镸ajor compaction需要重新整理所有的HFile并寫(xiě)入一個(gè)HFile,這一過(guò)程包含大量的硬盤(pán)I/O操作以及網(wǎng)絡(luò)數(shù)據(jù)通信。這一過(guò)程也稱為寫(xiě)放大(Write amplification)。在Major compaction進(jìn)行的過(guò)程中,當(dāng)前Region基本是處于不可訪問(wèn)的狀態(tài)。
Major compaction可以配置在規(guī)定的時(shí)間自動(dòng)運(yùn)行。為避免影響業(yè)務(wù),Major compaction一般安排在夜間或周末進(jìn)行。
需要注意的一點(diǎn)事,Major compaction會(huì)將當(dāng)前Region所服務(wù)的所有遠(yuǎn)程數(shù)據(jù)下載到本地Region server上。這些遠(yuǎn)程數(shù)據(jù)可能由于服務(wù)器故障或者負(fù)載均衡等原因而存儲(chǔ)在于遠(yuǎn)端服務(wù)器上。
這一過(guò)程如下圖所示:
Region的分割(Region split)
首先我們快速?gòu)?fù)習(xí)一下Region:
HBase中的表格可以根據(jù)行鍵水平分割為一個(gè)或幾個(gè)region。每個(gè)region中包含了一段處于某一起始鍵值和終止鍵值之間的連續(xù)的行鍵。
每一個(gè)region的默認(rèn)大小為1GB。
相應(yīng)的Region server負(fù)責(zé)向客戶提供訪問(wèn)某一region中的數(shù)據(jù)的服務(wù)。
每一個(gè)Region server能夠管理大約1000個(gè)region(這些region可能來(lái)自同一個(gè)表格,也可能來(lái)自不同的表格)。
如下圖所示:
每一個(gè)表格最初都對(duì)應(yīng)于一個(gè)region。隨著region中數(shù)據(jù)量的增加,region會(huì)被分割成兩個(gè)子region。每一個(gè)子region中存儲(chǔ)原來(lái)一半的數(shù)據(jù)。同時(shí)Region server會(huì)通知HMaster這一分割。出于負(fù)載均衡的原因,HMaster可能會(huì)將新產(chǎn)生的region分配給其他的Region server管理(這也就導(dǎo)致了Region server服務(wù)遠(yuǎn)端數(shù)據(jù)的情況的產(chǎn)生)。
如下圖所示:
讀操作的負(fù)載均衡(Read Load Balancing)
Region的分割最初是在Region server本地發(fā)生的。但是出于負(fù)載均衡的原因,HMaster可能會(huì)將新產(chǎn)生的region分配給其他的Region server進(jìn)行管理。這也就導(dǎo)致了Region server管理存儲(chǔ)在遠(yuǎn)端服務(wù)器上的region情況的產(chǎn)生。這一情況會(huì)持續(xù)至下一次Major compaction之前。如上文所示,Major compaction會(huì)將任何不在本地的數(shù)據(jù)下載至本地。
也就是說(shuō),HBase中的數(shù)據(jù)在寫(xiě)入時(shí)總是存儲(chǔ)在本地的。但是隨著region的重新分配(由于負(fù)載均衡或數(shù)據(jù)恢復(fù)),數(shù)據(jù)相對(duì)于Region server不再一定是本地的。這種情況會(huì)在Major compaction后得到解決。
如下圖所示:
HDFS的數(shù)據(jù)備份(Data Replication)
HDFS中所有的數(shù)據(jù)讀寫(xiě)操作都是針對(duì)主節(jié)點(diǎn)進(jìn)行的。HDFS會(huì)自動(dòng)備份WAL和HFile。HBase以來(lái)HDFS來(lái)提供可靠的安全的數(shù)據(jù)存儲(chǔ)。當(dāng)數(shù)據(jù)被寫(xiě)入HDFS本地時(shí),另外兩份備份數(shù)據(jù)會(huì)分別存儲(chǔ)在另外兩臺(tái)服務(wù)器上。
如下圖所示:
HBase的異常恢復(fù)(Crash Recovery)
WAL文件和HFile都存儲(chǔ)于硬盤(pán)上且存在備份,因此恢復(fù)它們是非常容易的。那么HBase如何恢復(fù)位于內(nèi)存中的MemStore呢?
當(dāng)Region server宕機(jī)的時(shí)候,其所管理的region在這一故障被發(fā)現(xiàn)并修復(fù)之前是不可訪問(wèn)的。ZooKeeper負(fù)責(zé)根據(jù)服務(wù)器的心跳信息來(lái)監(jiān)控服務(wù)器的工作狀態(tài)。當(dāng)某一服務(wù)器下線之后,ZooKeeper會(huì)發(fā)送該服務(wù)器下線的通知。HMaster收到這一通知之后會(huì)進(jìn)行恢復(fù)操作。
HMaster會(huì)首先將宕機(jī)的Region server所管理的region分配給其他仍在工作的活躍的Region server。然后HMaster會(huì)將該服務(wù)器的WAL分割并分別分配給相應(yīng)的新分配的Region server進(jìn)行存儲(chǔ)。新的Region server會(huì)讀取并順序執(zhí)行WAL中的數(shù)據(jù)操作,從而重新創(chuàng)建相應(yīng)的MemStore。
如下圖所示:
數(shù)據(jù)恢復(fù)(Data Recovery)
WAL文件之中存儲(chǔ)了一系列數(shù)據(jù)操作。每一個(gè)操作對(duì)應(yīng)WAL中的一行。新的操作會(huì)順序?qū)懺赪AL文件的末尾。
那么當(dāng)MemStore中存儲(chǔ)的數(shù)據(jù)因?yàn)槟撤N原因丟失之后應(yīng)該如何恢復(fù)呢?HBase以來(lái)WAL對(duì)其進(jìn)行恢復(fù)。相應(yīng)的Region server會(huì)順序讀取WAL并執(zhí)行其中的操作。這些數(shù)據(jù)被存入內(nèi)存中當(dāng)前的MemStore并排序。最終當(dāng)MemStore存滿之后,這些數(shù)據(jù)被flush到硬盤(pán)上。
需要更多大數(shù)據(jù)開(kāi)發(fā)相關(guān)學(xué)習(xí)資料(Hadoop,spark,kafka,MapReduce,scala,,推薦算法,實(shí)時(shí)交易監(jiān)控系統(tǒng),用戶分析行為,推薦系統(tǒng))加裙免費(fèi)獲?。?92133408 點(diǎn)擊加入 【大數(shù)據(jù)開(kāi)發(fā)交流圈子】
如下圖所示:
Apache HBase的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
強(qiáng)一致性模型
當(dāng)一個(gè)寫(xiě)操作得到確認(rèn)時(shí),所有的用戶都將讀到同一個(gè)值。
可靠的自動(dòng)擴(kuò)展
當(dāng)region中的數(shù)據(jù)太多時(shí)會(huì)自動(dòng)分割。
使用HDFS分布存儲(chǔ)并備份數(shù)據(jù)。
內(nèi)置的恢復(fù)功能
使用WAL進(jìn)行數(shù)據(jù)恢復(fù)。
與Hadoop集成良好
MapReduce在HBase上非常直觀。
缺點(diǎn)
WAL回復(fù)較慢。
異?;謴?fù)復(fù)雜且低效。
需要進(jìn)行占用大量資源和大量I/O操作的Major compaction
https://yq.aliyun.com/articles/601358?spm=a2c4e.11153987.0.0.1d67190akASwj0
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前題目:深度預(yù)警:深入理解HBase的系統(tǒng)架構(gòu)-創(chuàng)新互聯(lián)
路徑分享:http://aaarwkj.com/article20/pjcco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、響應(yīng)式網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、App設(shè)計(jì)、做網(wǎng)站、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容