自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

專訪阿里穆公:阿里巴巴 HBase 性能優(yōu)化及容災(zāi)經(jīng)驗(yàn)

原創(chuàng)
系統(tǒng)
HBase 是一個(gè)分布式的可擴(kuò)展、非關(guān)系型開源數(shù)據(jù)庫。它很好地用Java實(shí)現(xiàn)了Google的Bigtable系統(tǒng)大部分特性,因此在數(shù)據(jù)量猛增的阿里巴巴非常受歡迎。本文中,阿里巴巴數(shù)據(jù)庫技術(shù)專家朱金清(穆公)給大家分享了阿里巴巴 HBase 性能優(yōu)化及容災(zāi)方面的經(jīng)驗(yàn)。

【51CTO專稿】隨著市場(chǎng)規(guī)模的擴(kuò)大,產(chǎn)品與技術(shù)的發(fā)展,業(yè)務(wù)數(shù)據(jù)量越來越大,對(duì)海量數(shù)據(jù)的高效寫入和讀取變得越來越重要。 HBase 是一個(gè)分布式的可擴(kuò)展、非關(guān)系型開源數(shù)據(jù)庫。它很好地用 JAVA 實(shí)現(xiàn)了 Google 的 Bigtable 系統(tǒng)大部分特性,因此在數(shù)據(jù)量猛增的阿里巴巴非常受歡迎。本文中,阿里巴巴數(shù)據(jù)庫技術(shù)專家朱金清(穆公)給大家分享了阿里巴巴 HBase 性能優(yōu)化及容災(zāi)方面的經(jīng)驗(yàn)。

(阿里巴巴數(shù)據(jù)庫技術(shù)專家 朱金清)

以下是采訪實(shí)錄:

第一部分:阿里巴巴 HBase 集群介紹

51CTO:朱老師您好!首先請(qǐng)您簡單地做一下自我介紹。

穆公:我是朱金清,在阿里的花名叫穆公,這個(gè)花名是我?guī)熜秩〉模髞碛捎谖覀儼⒗镂鋫b的花名都被取光了,只能取以前的皇帝的名字,我這個(gè)是以前的秦穆公,發(fā)音跟水工、電工、木工中的“木工”一樣。我主要是做數(shù)據(jù)庫相關(guān)的工作,來阿里巴巴之前,我在百度做 MySQL 。2011年年初來阿里巴巴了,主要做 MySQL/ HBase  相關(guān)的。

51CTO:阿里巴巴 HBase 集群的規(guī)模大概是什么樣兒?

穆公:現(xiàn)在我們總共在線加離線是有上千臺(tái)的機(jī)器,相對(duì)來說我估計(jì)應(yīng)該算是國內(nèi)比較大的。據(jù)我所知,百度好像不怎么用這個(gè) HBase (早期的時(shí)候有用過),騰訊好像還沒怎么聽過。我知道有用 HBase 可能有幾家:小米、360和新浪,大概是這樣。我們這邊單獨(dú)的最大的集群在搜索,一個(gè)集群有二三百臺(tái)左右。

51CTO:阿里巴巴這邊 HBase 主要是用在搜索這個(gè)領(lǐng)域?

穆公:搜索的集群比較大,因?yàn)槿W(wǎng)的日志我們要抓下來。不過很多場(chǎng)景都用到了,包括 kv 型行數(shù)據(jù)、append型的數(shù)據(jù)、日志業(yè)務(wù)、還要所有的歷史數(shù)據(jù),我們現(xiàn)在也都是放在 HBase 上。如果你是全部作為備份分析的,那就放云梯那兒,如果你要實(shí)時(shí)查詢數(shù)據(jù),或者是要查詢歷史數(shù)據(jù),比如說我們的以往的訂單,都可以用 HBase 。

51CTO: HBase 典型的應(yīng)用場(chǎng)景有哪些?

穆公:主要有幾種:

1、對(duì)高吞吐的寫入有要求的;

2、日志型的應(yīng)用;

3、有全網(wǎng)的數(shù)據(jù)抓取的;

4、有消息類的;

5、分析類的(如離線分析用 HBase 也是很好的選擇,不過要跟在線分開);

6、結(jié)構(gòu)易變類的。

51CTO:阿里巴巴對(duì) HBase 的改進(jìn)和擴(kuò)展主要在哪些方面?

穆公:比如我報(bào)告里面說的容災(zāi)方案 iback ,實(shí)現(xiàn)了跨機(jī)房容災(zāi)和異常切換等。還有我們后端團(tuán)隊(duì)也開發(fā)了 Replication 方案,然后在二級(jí)索引上我們的后端研發(fā)團(tuán)隊(duì)也一起來做了一個(gè)二級(jí)索引的這個(gè)策略,這個(gè)二級(jí)索引現(xiàn)在在社區(qū)都還沒有怎么用,以前好像就是聽華為有一套二級(jí)索引,然后我們現(xiàn)在就是在這方面做,就相當(dāng)于對(duì)它功能的一些完善。然后就是說 HBase 要走得更遠(yuǎn)的話,那可能跨機(jī)房容災(zāi)可能一定要做好,這一點(diǎn)我們也投入精力,現(xiàn)在看 Facebook 基本上也朝著這方面,基本上他們也是這么做,所以我覺得我們方向應(yīng)該是比較對(duì)的。

51CTO:你們這邊有借鑒 Facebook 的經(jīng)驗(yàn)嗎?

穆公:有, Facebook 在 HBase 上打的 Patch 也比較多,我們可以直接把Patch拿過來,可能有一些能用,有一些不能用,我們就根據(jù)自己公司的實(shí)際情況,進(jìn)行改進(jìn)。我們跟 Facebook 溝通還是比較多的,上上周我去美國跟他們一起交流了這個(gè),收獲還是很多的。

當(dāng)然就 Facebook 來說,它是一個(gè)SNS的應(yīng)用,應(yīng)用可能相對(duì)單一一點(diǎn)。淘寶阿里這邊,又有交易,又有買家、賣家,是一個(gè)多維度的,相對(duì)來說,需求比較復(fù)雜多樣化。 Facebook 比較好,它的應(yīng)用和產(chǎn)品沒那么復(fù)雜,把產(chǎn)品優(yōu)化做到極致。在這方面,我們可能需要更多的學(xué)習(xí)一下。

51CTO:阿里巴巴的 HBase 跟 Facebook 的 HBase 主要的相同點(diǎn)和不同點(diǎn)分別是什么?

穆公:相同點(diǎn):我們對(duì) HBase 做事上的風(fēng)格比較類似,組織結(jié)構(gòu)也都蠻像的,有開發(fā)的團(tuán)隊(duì),有運(yùn)維團(tuán)隊(duì);

不同點(diǎn):我們比 Facebook 多了一個(gè)角色,我們有設(shè)計(jì)評(píng)審,相當(dāng)于有點(diǎn)DBA的角色在里面,而 Facebook 可能是沒有太多這樣的。

阿里和 Facebook 都非常注重高可用和性能, Facebook 也在高可用上投入了很多的精力,阿里也如此。但是在性能上,阿里投入精力還可能不見得有那么多,這一點(diǎn)上我們需要根據(jù)自己的情況來彌補(bǔ)。#p#

第二部分:阿里巴巴 HBase 性能優(yōu)化和容災(zāi)經(jīng)驗(yàn)

51CTO:阿里是如何做好 HBase 性能優(yōu)化的呢?

穆公:我覺得主要有幾部分,第一個(gè)就是說我們?cè)谝粋€(gè)業(yè)務(wù)上,因?yàn)樾阅軆?yōu)化不是說你上線了之后去優(yōu)化,這是一種優(yōu)化。還有一種優(yōu)化就是說上線之前,我就幫它決定好,這個(gè)東西可能用什么樣的存儲(chǔ)更好,有可能比如說這個(gè)用了之后, HBase ,我們也注意了,以前可能不清楚 HBase 用了之后,可能性能還沒有多好,換了一個(gè)其他還更好,其實(shí)這主要是在于選型階段要做好。要確定好哪個(gè)是最合適的方案,這個(gè)我覺得是一個(gè)評(píng)審的優(yōu)化,還有一個(gè)就是到底每一臺(tái)機(jī)器的性能的優(yōu)化,每一臺(tái)機(jī)器性能優(yōu)化,我們相當(dāng)于算是上線之后的優(yōu)化了,我們分為兩個(gè)方面,一個(gè)就是有硬件的解決方案,我們現(xiàn)在也有上 SSD 這個(gè)硬件,然后來提高隨機(jī)讀的性能,因?yàn)?HBase 隨機(jī)讀性能相對(duì)來說是比較一般的,而 MySQL 我覺得達(dá)不到那么好。還有一個(gè)就是相當(dāng)于我們?cè)谶M(jìn)程,在 HBase 這個(gè)代碼上面進(jìn)行優(yōu)化,比如說我們現(xiàn)在也有后端的研發(fā)團(tuán)隊(duì)也有做了二級(jí)索引的方案,就是提高這個(gè)讀查詢的性能,然后在代碼上面做了一些。剛才說了一個(gè)軟件一個(gè)硬件,現(xiàn)在我們也有軟硬件結(jié)合的方式,就是說這個(gè)代碼改了,然后用了 SSD 或者 FusionIO 這種硬件,然后讓它的讀取,就相當(dāng)于查詢很好。

51CTO:有效地提高讀取的速度?

穆公:對(duì),因?yàn)?HBase 現(xiàn)在寫性能很好,它需要更多做的是讀的性能要做得更好,所以慢慢可能是相對(duì)來說一個(gè)性能優(yōu)化的一個(gè)更主要的一個(gè)地方,可能在讀取上。

51CTO:在做 HBase 性能優(yōu)化的時(shí)候,主要注意事項(xiàng)有哪些?

穆公:一個(gè)就是說可能你對(duì)代碼能不清楚的話,我們可能盡量建議簡單的需求不要直接通過進(jìn)入代碼來搞定,如果說在外圍或者配置參數(shù)能搞定的話,直接外圍或者配置修改來搞定。因?yàn)檫@樣的話,我可能升級(jí)代價(jià)也小,就是相當(dāng)于如果能從外圍和配置搞定的,不從 HBase 底層就能搞定,我們建議在外面直接搞定。所以現(xiàn)在有一個(gè)優(yōu)先級(jí),如果必須得通過代碼改名,那就得這個(gè)代碼進(jìn)來以Patch的形式,在不同的版本上都可以用,大概是這樣。性能優(yōu)化還有一個(gè)就是說我們也希望說這個(gè)不是說什么場(chǎng)景我都去優(yōu)化,就是對(duì)通用的,比如說這個(gè)東西做了一點(diǎn)就能很多集群都能提升,那這個(gè)產(chǎn)品我們更傾向通用問題的解決。

如果只是說對(duì)特殊產(chǎn)品的優(yōu)化,我們可能會(huì)更傾向于推動(dòng)應(yīng)用一起來做優(yōu)化,因?yàn)椴蝗坏脑挘赡軙?huì)造成成本壓力,我需要買那么多機(jī)器來搞定一個(gè)業(yè)務(wù),那就代價(jià)太大了,所以我們需要更通用的,這個(gè)東西解決的是一個(gè)共性的東西,這樣就比較好。

51CTO: HBase 在容災(zāi)方面的一些經(jīng)驗(yàn),您能否分享一下?

穆公: HBase 的容災(zāi),因?yàn)閺男枰鋵?shí)我們還沒有容災(zāi)上線,因?yàn)?HBase 如果你做一個(gè)離線分析,它其實(shí)不用管容災(zāi)不容災(zāi),因?yàn)殡x線一存一分鐘兩分鐘沒有問題。如果你要做一個(gè)在線存儲(chǔ),它就對(duì)這個(gè)可用性,服務(wù)持續(xù)性要求就很高了,所以我就覺得如果你要把這個(gè)東西做好,你容災(zāi)一定要做好,容災(zāi)現(xiàn)在有幾種,內(nèi)部可能國內(nèi)我們現(xiàn)在有容災(zāi),因?yàn)樯鐓^(qū)原來自帶的容災(zāi)方案不好使,好像有一個(gè)限制是說儲(chǔ)備機(jī)器要一樣,這個(gè)不可能的,如果我這邊擴(kuò)了兩臺(tái),那邊也必須擴(kuò)兩臺(tái),代價(jià)太大了。所以后來我們用的時(shí)候,我們傾向于從外圍來做,就是要做容災(zāi)的話,就像MySQL一樣,如果MySQL有一個(gè)自帶的Replication并不是容災(zāi),因?yàn)槿轂?zāi)還有數(shù)據(jù)一致性,然后服務(wù)切換之后,就是說數(shù)據(jù)同步這是一部分,就是說如果你一層切換之后,數(shù)據(jù)一致性顯得更重要,所以這個(gè)東西是從 HBase 內(nèi)部做不好。所以我們現(xiàn)在有自己做了一個(gè),還有 Facebook 他們也自己做,我們思路是一樣的,我們并不知道他們具體產(chǎn)品叫什么,但是思路大概類似。

51CTO:在部署 HBase 時(shí),哪個(gè)環(huán)節(jié)比較容易出故障?

穆公:因?yàn)樗且粋€(gè)分布式集群,所以單點(diǎn)故障率會(huì)比較高,就是一臺(tái)機(jī)器一層,比如說一個(gè)分布是有十臺(tái)機(jī)器,一臺(tái)機(jī)器掛了,這個(gè)是正常的,因?yàn)樗且粋€(gè)分布式,它能自己恢復(fù),但是這中間需要時(shí)間。還有一個(gè)就是因?yàn)?HBase 現(xiàn)在還是快速發(fā)展中,它代碼等等有一些 Bug ,這個(gè)肯定我們以前也都遇到過,來了一個(gè) Bug 又出現(xiàn)問題,所以這樣就導(dǎo)致你需要去把這些方面都考慮到,所以就相對(duì)來說,這些都是需要我們?nèi)プ⒁獾囊粋€(gè)地方。

51CTO:一般故障出現(xiàn)最多的情況是?

穆公:我們最多的情況還是單機(jī)的故障,因?yàn)楝F(xiàn)在還算是比較穩(wěn)定了,基本上如果我們用最新版,有可能會(huì)有問題,但是我們用相對(duì)穩(wěn)定的版本,基本上還好,但是相對(duì)穩(wěn)定的就有另外的問題,它可能性能并不是那么佳,但是因?yàn)榧耗敲炊啵植豢赡苷f對(duì)每個(gè)集群都做一個(gè)升級(jí),升級(jí)代價(jià)也會(huì)比較大,我們傾向于說每年會(huì)推一個(gè)大版本,第二年之后就新的業(yè)務(wù)上來了,我們就用新的版本,原來有一些需求需要升級(jí)的話,我們就把它升級(jí)掉。

還有就是 HBase 現(xiàn)在因?yàn)樗倪@個(gè)升級(jí)時(shí)間也稍微代價(jià)有點(diǎn)大,并不是說每個(gè)馬上就能升級(jí),數(shù)據(jù)量也很大,然后一般現(xiàn)在在這個(gè)比如說我在升級(jí)過程中,有一些相應(yīng)就會(huì)有波動(dòng),所以這些都需要導(dǎo)致我們不可能說所有的集群一下都升級(jí)了,我一直對(duì)這些重點(diǎn)的,有一些可能我覺得再加一兩臺(tái)機(jī)器能搞定,我們就傾向于這種方式來,就是這樣,所以我覺得這個(gè)代價(jià)是在可控的,而且還相對(duì)來說,有一些時(shí)候往往用硬件能解決問題,它其實(shí)我覺得代價(jià)還算是比較小的,因?yàn)檫@個(gè)集群的升級(jí),它其實(shí)牽動(dòng)的能力,比如開發(fā)也要幫忙配合一起來做,其實(shí)耗費(fèi)的整體也是非常大的。#p#

第三部分:如何加入阿里巴巴 HBase 團(tuán)隊(duì)?

51CTO: HBase 能否成為NoSQL領(lǐng)域的領(lǐng)導(dǎo)者?您是怎么看待這個(gè)問題的?

穆公:我覺得就目前來說,為什么我們選擇 HBase ?一方面我覺得它比較通用,它基于Hadoop之上,本身它就有一個(gè)先天的優(yōu)勢(shì),然后還有一個(gè),它確實(shí)的寫入的性能還是很好的,讀取性能,你說現(xiàn)在說沒有那么好,但是我覺得也還可以了,只不過說我們現(xiàn)在讀業(yè)務(wù),要求做到更極致的時(shí)候,不可能說機(jī)器成倍的長,我們所以需要做一些優(yōu)化。然后現(xiàn)在的使用接口提供,或者功能各個(gè)方面,都是很完善的,所以在NoSQL上,特別是你要說持久化的NoSQL,就是 HBase 它是NoSQL,同時(shí)也支持持久化,就是不是NoSQL那種緩存系統(tǒng),支持可以持久化的NoSQL,我覺得現(xiàn)在主流的,比如說像 cassandra ,還有MongoDB也算NoSQL,MongoDB確實(shí)量上億了之后,基本上性能就不怎么樣了, cassandra 之前有說,我覺得 cassandra 跟 HBase ,可能目前還是會(huì)是NoSQL里面,可能更大的兩個(gè)。但是 cassandra 之前也說了,它有不同的特性,它可能對(duì)一致性做得不好,但是它對(duì)可靠性要做得好,所以這個(gè)需要權(quán)衡。有可能像我們阿里三淘的業(yè)務(wù)等等,可能一致性就很高了,可能有一些比如說我說是其他一些離線分析或者等等這些,它可能延遲那么一點(diǎn)點(diǎn)也沒有問題,我覺得這種用 cassandra 也是很好的,我這次去國外一看,他們也有一些東西,還用的 cassandra ,對(duì)在線服務(wù)的一致性要求不高, cassandra 還是用得很好的。

現(xiàn)在就是說 Facebook 自己不用 cassandra ,這也說明釋放出了一個(gè)信號(hào),可能說這個(gè)東西可以用,但是可能它相比較來說, HBase 更好一些,因?yàn)樯鐓^(qū)也更活躍,就是 HBase 現(xiàn)在還一直在發(fā)展,但是 cassandra 現(xiàn)在版本迭得很慢了,之前我看的是0.8還是多少,現(xiàn)在可能版本就沒有迭得那么快,因?yàn)殚_發(fā) cassandra 的 Facebook ,他現(xiàn)在不怎么用這個(gè)東西, HBase 現(xiàn)在社區(qū)還是非?;钴S的,然后去國外看的時(shí)候,Twitter也在用, Facebook 更不用說了, Facebook 應(yīng)該是國外我估計(jì)用這個(gè)最大的,我們應(yīng)該可能算是國內(nèi)最大的,目前我還是不知道有哪個(gè)公司用得比我們更大,單說機(jī)器應(yīng)該沒有,然后容量等等之類的,然后 ebay 也有用 HBase ,ebay 好像搜索也是用 HBase ,然后 Twitter 具體我還真不知道,它那些消息還是什么,我不知道它具體存在哪里,但是  Twitter 他們說最近很緊急的需要招人, HBase 這方面也要招人,重點(diǎn)說了這兩塊,所以基本上就是 HBase ,我覺得前景還是非常好的,基本上我覺得還是可以在近幾年還是會(huì)是最核心的一個(gè)  NoSQL ,我覺得近幾年應(yīng)該是這樣,可能多年之后,會(huì)不會(huì)有一個(gè)新的 NoSQL 浪潮沖擊一下,那也是有可能的。

就目前而言, HBase 應(yīng)該是在 NoSQL 里面發(fā)展前景比較好的,我也比較看好它。

51CTO:如果想加入阿里 HBase 這個(gè)團(tuán)隊(duì),需要具備哪些方面的素質(zhì),或者技術(shù)要領(lǐng)?

穆公:其實(shí)我們很缺 HBase 這方面的人才,如果大家有什么問題,可以私下聊,也可以聯(lián)系我,我們現(xiàn)在這個(gè)要求說高也蠻高的。

如果應(yīng)屆生其實(shí)也還好,但是社招的話,我們一般要求就是說要有至少三年以上JAVA的一些開發(fā)能力,我們覺得這邊做下來,可能更多的是開發(fā)的工作,運(yùn)維也需要開發(fā)東西來做,所以我關(guān)注的是以開發(fā)來解決 HBase 這個(gè)整體運(yùn)維或者大規(guī)模云計(jì)算,都是以開發(fā)來解決這個(gè)問題,所以我覺得我更看重 JAVA 一些開發(fā)能力,如果有 Hadoop 的一些基礎(chǔ),就是最好了。然后對(duì)網(wǎng)絡(luò) TCP 協(xié)議之類的,要有一定的理解,網(wǎng)絡(luò)資源 RPC 的調(diào)用,還有其他就是最好也能寫一些腳本這樣子,要處理一些運(yùn)維的事情。但是我覺得更關(guān)鍵的是好學(xué),學(xué)習(xí)能力強(qiáng),這個(gè)相對(duì)而言可能還更重要,如果 Hadoop 基礎(chǔ)你沒有,你夠聰明也沒有問題。

其次人比較踏實(shí),有技術(shù)追求,我覺得就可以了,應(yīng)屆生應(yīng)該主要以這種為主,因?yàn)閼?yīng)屆生他可能不見得會(huì)有Hadoop跟 HBase 的經(jīng)驗(yàn),但是我覺得它只要有JAVA的開發(fā)能力,然后自己有這方面的追求,我們阿里可以培養(yǎng),歡迎這樣的優(yōu)秀的應(yīng)屆畢業(yè)生加入我們。

好的,專訪到此告一段落,非常感謝穆公的分享。

責(zé)任編輯:黃丹 來源: 51CTO.com
相關(guān)推薦

2010-06-28 10:43:47

2013-11-07 11:26:08

2013-08-22 09:41:52

阿里巴巴去IOE王堅(jiān)

2013-08-04 20:13:50

2019-01-28 10:10:36

開源技術(shù) 趨勢(shì)

2014-12-31 10:48:40

阿里巴巴馬云

2009-06-30 13:28:54

阿里巴巴旺旺

2023-03-29 09:42:32

2013-08-22 09:36:45

阿里巴巴王堅(jiān)阿里云

2019-08-15 10:25:02

代碼開發(fā)工具

2009-02-27 10:46:32

DBA筆試題阿里巴巴

2013-08-04 21:02:59

實(shí)時(shí)計(jì)算存儲(chǔ)阿里巴巴和仲

2012-09-11 10:09:54

阿里云

2013-10-30 16:40:55

阿里巴巴阿里云云計(jì)算

2013-08-08 10:34:50

阿里巴巴BAT

2010-08-25 14:33:59

抄底

2014-06-11 10:04:05

UC優(yōu)視阿里巴巴

2015-04-23 15:30:08

2018-10-16 15:34:17

阿里巴巴Apache Flin大數(shù)據(jù)

2015-05-12 15:09:01

阿里巴巴公有云IaaS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)