W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
因?yàn)镠Base在HDFS上運(yùn)行,所以了解它如何工作以及它如何影響HBase非常重要。
HDFS的原始用例是批處理。因此,低延遲讀取在歷史上不是優(yōu)先事項(xiàng)。隨著Apache HBase的日益普及,這種情況正在發(fā)生變化,并且已經(jīng)在開發(fā)中進(jìn)行了一些改進(jìn)。有關(guān)HBase的HDFS改進(jìn),請(qǐng)參閱Umbrella Jira Ticket。
由于Hadoop 1.0.0(也是0.22.1,0.23.1,CDH3u3和HDP 1.0)通過HDFS-2246,當(dāng)數(shù)據(jù)是本地的,DFSClient可以進(jìn)行“短路”并直接從磁盤讀取而不是通過DataNode。對(duì)于HBase來說,這意味著RegionServers可以直接讀取其計(jì)算機(jī)的磁盤,而不必打開socket與DataNode通信,前者通常要快得多。請(qǐng)參閱JD的Performance Talk。另請(qǐng)參閱HBase,mail#dev - read short circuit以獲得有關(guān)short circuit讀取的更多討論。
要啟用“short circuit”讀取,它將取決于您的Hadoop版本。在HDFS-347中,Hadoop 2中的原始shortcircuit補(bǔ)丁得到了很大改進(jìn)。請(qǐng)參閱http://blog.cloudera.com/blog/2013/08/how-improved-short-circuit-local-reads-bring-better-performance-and-security-to-hadoop/,以有關(guān)新舊實(shí)現(xiàn)的區(qū)別。請(qǐng)參閱Hadoop shortcircuit讀取配置頁面,了解如何啟用后者,更好的shortcircuit版本。例如,這是一個(gè)最小配置。啟用添加到hbase-site.xml的short-circuit:
<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
<description>
This configuration parameter turns on short-circuit local reads.
</description>
</property>
<property>
<name>dfs.domain.socket.path</name>
<value>/home/stack/sockets/short_circuit_read_socket_PORT</value>
<description>
Optional. This is a path to a UNIX domain socket that will be used for
communication between the DataNode and local HDFS clients.
If the string "_PORT" is present in this path, it will be replaced by the
TCP port of the DataNode.
</description>
</property>
請(qǐng)注意托管共享域socket的目錄的權(quán)限;如果對(duì)hbase用戶以外的其他人開放,dfsclient會(huì)做出提示。
如果您運(yùn)行的是舊的Hadoop,即沒有HDFS-347但具有HDFS-2246的Hadoop,則必須設(shè)置兩個(gè)配置。首先,需要修改hdfs-site.xml。將該dfs.block.local-path-access.user屬性設(shè)置為可以使用該快捷方式的唯一用戶。這必須是啟動(dòng)HBase的用戶。然后在hbase-site.xml中設(shè)置dfs.client.read.shortcircuit為true
服務(wù):至少是HBase RegionServers,需要重新啟動(dòng)才能獲取新配置。
dfs.client.read.shortcircuit.buffer.size
在高流量的HBase上運(yùn)行時(shí),此值的默認(rèn)設(shè)置過高。在HBase中,如果尚未設(shè)置此值,則從默認(rèn)1M到128k (自HBase 0.98.0和0.96.1起) 開始設(shè)置。HBase中的Hadoop DFSClient將為其打開的每個(gè)塊分配此大小的直接字節(jié)緩沖區(qū)。由于HBase總是打開它的HDFS文件,所以這可以快速增加。
關(guān)于dist-list的一個(gè)相當(dāng)常見的問題是為什么HBase在批處理上下文中不如HDFS文件那樣高效(例如,作為MapReduce源或接收器)。簡短的回答是HBase比HDFS做得更多(例如,讀取KeyValues,返回最新的行或指定的時(shí)間戳等),因此HBase在此處理環(huán)境中比HDFS慢4-5倍。還有改進(jìn)的余地,隨著時(shí)間的推移,這個(gè)差距會(huì)縮小,但在這個(gè)用例中HDFS總是會(huì)更快。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: