?鎖屏面試題百日百刷,每個(gè)工作日?qǐng)?jiān)持更新面試題。請(qǐng)看到最后就能獲取你想要的,接下來(lái)的是今日的面試題:
?
1.Hbase中的memstore是用來(lái)做什么的?
hbase為了保證隨機(jī)讀取的性能,所以hfile里面的rowkey是有序的。當(dāng)客戶端的請(qǐng)求在到達(dá)regionserver之后,為了保證寫(xiě)入rowkey的有序性,所以不能將數(shù)據(jù)立刻寫(xiě)入到hfile中,而是將每個(gè)變更操作保存在內(nèi)存中,也就是memstore中。memstore能夠很方便的支持操作的隨機(jī)插入,并保證所有的操作在內(nèi)存中是有序的。當(dāng)memstore達(dá)到一定的量之后,會(huì)將memstore里面的數(shù)據(jù)flush到hfile中,這樣能充分利用hadoop寫(xiě)入大文件的性能優(yōu)勢(shì),提高寫(xiě)入性能。
由于memstore是存放在內(nèi)存中,如果regionserver因?yàn)槟撤N原因死了,會(huì)導(dǎo)致內(nèi)存中數(shù)據(jù)丟失。所有為了保證數(shù)據(jù)不丟失,hbase將更新操作在寫(xiě)入memstore之前會(huì)寫(xiě)入到一個(gè)write ahead log(WAL)中。WAL文件是追加、順序?qū)懭氲?,WAL每個(gè)regionserver只有一個(gè),同一個(gè)regionserver上所有region寫(xiě)入同一個(gè)的WAL文件。這樣當(dāng)某個(gè)regionserver失敗時(shí),可以通過(guò)WAL文件,將所有的操作順序重新加載到memstore中。
2.HBase在進(jìn)行模型設(shè)計(jì)時(shí)重點(diǎn)在什么地方?一張表中定義多少個(gè)Column Family最合適?為什么?
Column Family的個(gè)數(shù)具體看表的數(shù)據(jù),一般來(lái)說(shuō)劃分標(biāo)準(zhǔn)是根據(jù)數(shù)據(jù)訪問(wèn)頻度,如一張表里有些列訪問(wèn)相對(duì)頻繁,而另一些列訪問(wèn)很少,這時(shí)可以把這張表劃分成兩個(gè)列族,分開(kāi)存儲(chǔ),提高訪問(wèn)效率。
整體來(lái)說(shuō), 通常建議越少越好, 太多的列族會(huì)影響我們整個(gè)hbase的讀寫(xiě)效率,導(dǎo)致讀取一行數(shù)據(jù)需要跨越更多的列族(底層跨越更多的內(nèi)存頁(yè)和文件)
3.如何提高HBase客戶端的讀寫(xiě)性能?請(qǐng)舉例說(shuō)明
1 開(kāi)啟bloomfilter過(guò)濾器,開(kāi)啟bloomfilter比沒(méi)開(kāi)啟要快3、4倍
2 Hbase對(duì)于內(nèi)存有特別的需求,在硬件允許的情況下配足夠多的內(nèi)存給它
3 通過(guò)修改hbase-env.sh中的export HBASE_HEAPSIZE=3000 #這里默認(rèn)為1000m
4 增大RPC數(shù)量通過(guò)修改hbase-site.xml中的hbase.regionserver.handler.count屬性,可以適當(dāng)?shù)姆糯驲PC數(shù)量,默認(rèn)值為10有點(diǎn)小。
4.HBase集群安裝注意事項(xiàng)?
① HBase需要HDFS的支持,因此安裝HBase前確保Hadoop集群安裝完成;
② HBase需要ZooKeeper集群的支持,因此安裝HBase前確保ZooKeeper集群安裝完成;
③ 注意HBase與Hadoop的版本兼容性;
④ 注意hbase-env.sh配置文件和hbase-site.xml配置文件的正確配置;
⑤ 注意regionservers配置文件的修改;
5 注意集群中的各個(gè)節(jié)點(diǎn)的時(shí)間必須同步,否則啟動(dòng)HBase集群將會(huì)報(bào)錯(cuò);
5.請(qǐng)描述如何解決HBase中region太小和region太大帶來(lái)的沖突?
Region過(guò)大會(huì)發(fā)生多次compaction,將數(shù)據(jù)讀一遍并重寫(xiě)一遍到hdfs 上,占用io,region過(guò)小會(huì)造成多次split,region 會(huì)下線,影響訪問(wèn)服務(wù),最佳的解決方法是調(diào)整hbase.hregion. max.filesize 為256m。
6.Hbase是怎么進(jìn)行預(yù)分區(qū)操作?
解: 在Hbase中主要有二種預(yù)分區(qū)方案, 一種為手動(dòng)預(yù)分區(qū), 一種為自動(dòng)預(yù)分區(qū), 手動(dòng)預(yù)分區(qū)指的是我們?cè)诮ū淼臅r(shí)候, 通過(guò)命令或者的API進(jìn)行預(yù)分區(qū)操作, 在手動(dòng)分區(qū)下, 我們可以自定義分區(qū), 也可以基于hbase提供的分區(qū)算法來(lái)實(shí)現(xiàn), 分區(qū)后, 多個(gè)region會(huì)被master分配到不同的regionServer上進(jìn)行管理, 從而保證負(fù)載均衡. 而自動(dòng)預(yù)分區(qū)則指的是, 隨著我們表中數(shù)據(jù)越來(lái)越多 當(dāng)表中數(shù)據(jù), 也就是region中數(shù)據(jù)達(dá)到一定的閾值后, 會(huì)自動(dòng)進(jìn)行分區(qū), 閾值的多少取決于下面的這個(gè)公式來(lái)計(jì)算:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-408881.html
全部?jī)?nèi)容在[git](https://gitee.com/zjlalaforgit/interview)上,了解更多請(qǐng)點(diǎn)我頭像或到我的主頁(yè)去獲得,謝謝文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-408881.html
到了這里,關(guān)于HBase在進(jìn)行模型設(shè)計(jì)時(shí)重點(diǎn)在什么地方?一張表中定義多少個(gè)Column Family最合適?為什么?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!