在Hadoop中將特定于站點的HDFS配置添加到hdfs-site.xml文件,那么對于HBase,特定于站點的配置文件為conf/hbase-site.xml。有關(guān)可配置屬性的列表,請參見下面的HBase默認配置或查看src/main/resources的HBase源代碼中的原始hbase-default.xml源文件。
并不是所有的配置選項都會將其發(fā)送到hbase-default.xml。一些配置只會出現(xiàn)在源代碼中;因此識別這些更改的唯一方法是通過代碼審查。
目前,這里的更改將需要為HBase重啟集群來注意到這個變化。
以下文檔是使用默認的HBase配置文件hbase-default.xml作為源生成的。
hbase.tmp.dir
這是本地文件系統(tǒng)上的臨時目錄。將此設(shè)置更改為指向比“/tmp”更持久的位置,這是java.io.tmpdir的常見解決方案,因為在重新啟動計算機時清除了“/tmp”目錄。
hbase.rootdir
這個目錄是region servers共享的目錄,HBase保持不變。該URL應(yīng)該是“完全限定的”以包括文件系統(tǒng)的scheme。例如,要指定HDFS實例的"/hbase"目錄,namenode運行在namenode.example.org的9000端口,請將此值設(shè)置為:hdfs://namenode.example.org:9000 / hbase。默認情況下,我們會寫$ {hbase.tmp.dir},通常是/tmp - 所以改變這個配置,否則所有的數(shù)據(jù)在計算機重啟時都會丟失。
hbase.cluster.distributed
群集所處的模式。對于獨立模式,可能的值為false,對于分布式模式,可能的值為true。如果為false,啟動將在一個JVM中一起運行所有HBase和ZooKeeper守護程序。
hbase.zookeeper.quorum
使用逗號分隔的ZooKeeper集合中的服務(wù)器列表(這個配置應(yīng)該被命名為hbase.zookeeper.ensemble)。例如,“host1.mydomain.com,host2.mydomain.com,host3.mydomain.com”。默認情況下,對于本地和偽分布式操作模式,將其設(shè)置為localhost。對于完全分布式安裝,應(yīng)將其設(shè)置為ZooKeeper集成服務(wù)器的完整列表。如果在hbase-env.sh中設(shè)置HBASE_MANAGES_ZK,這是hbase將作為群集啟動/停止的一部分來啟動/停止ZooKeeper的服務(wù)器列表??蛻舳耍覀儗堰@個集合成員的列表,并把它與hbase.zookeeper.property.clientPort配置放在一起。并將其作為connectString參數(shù)傳遞給zookeeper構(gòu)造函數(shù)。
zookeeper.recovery.retry.maxsleeptime
在重試 zookeeper操作之前的最大睡眠時間(以毫秒為單位),這里需要最大時間,以便睡眠時間不會無限增長。
hbase.local.dir
將本地文件系統(tǒng)上的目錄用作本地存儲。
hbase.master.port
HBase Master應(yīng)該綁定的端口。
hbase.master.info.port
HBase Master Web UI的端口。如果您不想運行UI實例,請將其設(shè)置為-1。
hbase.master.info.bindAddress
HBase Master Web UI的綁定地址
hbase.master.logcleaner.plugins
由LogsCleaner服務(wù)調(diào)用的BaseLogCleanerDelegate的逗號分隔列表。這些WAL清理是按順序調(diào)用的。要實現(xiàn)您自己的BaseLogCleanerDelegate,只需將其放入HBase的類路徑中,并在此添加完全限定的類名。始終在列表中添加上面的默認日志清理工具。
org.apache.hadoop.hbase.master.cleaner.TimeToLiveLogCleaner,org.apache.hadoop.hbase.master.cleaner.TimeToLiveProcedureWALCleaner
hbase.master.logcleaner.ttl
WAL在歸檔({hbase.rootdir} / oldWALs)目錄中保留多久,之后將由主線程清除。該值以毫秒為單位。
hbase.master.procedurewalcleaner.ttl
程序WAL將在歸檔目錄中保留多久,之后將由主線程清除。該值以毫秒為單位。
hbase.master.hfilecleaner.plugins
由HFileCleaner服務(wù)調(diào)用的BaseHFileCleanerDelegate的逗號分隔列表。這些HFile清理器按順序調(diào)用。要實現(xiàn)您自己的BaseHFileCleanerDelegate,只需將其放入HBase的類路徑中,并在此添加完全限定的類名??偸窃诹斜碇刑砑由厦娴哪J日志清除程序,因為它們將被覆蓋在hbase-site.xml中。
hbase.master.infoserver.redirect
Master是否監(jiān)聽Master Web UI端口(hbase.master.info.port)并將請求重定向到由Master和RegionServer共享的Web UI服務(wù)器。配置,當(dāng)主服務(wù)區(qū)域(而不是默認)時是有意義的。
hbase.master.fileSplitTimeout
分割一個區(qū)域,在放棄嘗試之前等待文件分割步驟需要多長時間。默認值:600000。這個設(shè)置在hbase-1.x中被稱為hbase.regionserver.fileSplitTimeout。Split現(xiàn)在運行主端,因此重命名(如果找到'hbase.master.fileSplitTimeout'設(shè)置,將使用它來填充當(dāng)前'hbase.master.fileSplitTimeout'配置。
hbase.regionserver.port
HBase RegionServer綁定的端口。
hbase.regionserver.info.port
HBase RegionServer Web UI的端口如果您不希望RegionServer UI運行,請將其設(shè)置為-1。
hbase.regionserver.info.bindAddress
HBase RegionServer Web UI的地址
hbase.regionserver.info.port.auto
hbase.regionserver.handler.count
在RegionServers上啟動RPC Listener實例的計數(shù)。Master使用相同的屬性來處理主處理程序的數(shù)量。太多的處理者可能會適得其反。使其成為CPU數(shù)量的倍數(shù)。如果主要是只讀的,處理程序計數(shù)接近CPU計數(shù)做得很好。從CPU數(shù)量的兩倍開始,并從那里調(diào)整。
hbase.ipc.server.callqueue.handler.factor
確定呼叫隊列數(shù)量的因素。值為0表示在所有處理程序之間共享單個隊列。值為1意味著每個處理程序都有自己的隊列。
hbase.ipc.server.callqueue.read.ratio
將調(diào)用隊列分成讀寫隊列。指定的時間間隔(應(yīng)該在0.0到1.0之間)將乘以調(diào)用隊列的數(shù)量。值為0表示不分割調(diào)用隊列,這意味著讀取和寫入請求將被推送到相同的一組隊列中。低于0.5的值意味著將比寫入隊列更少的讀取隊列。值為0.5意味著將有相同數(shù)量的讀寫隊列。大于0.5的值意味著將有更多的讀隊列而不是寫入隊列。值為1.0意味著除了一個之外的所有隊列都用于發(fā)送讀取請求。示例:假設(shè)調(diào)用隊列的總數(shù)為10,則read.ratio為0意味著:10個隊列將同時包含讀/寫請求。0.3的讀取比例意味著:3個隊列將只包含讀取請求,7個隊列將只包含寫入請求。0.5的read.ratio表示:5個隊列將只包含讀取請求,5個隊列將只包含寫入請求。0.8的read.ratio意味著:8個隊列將只包含讀取請求,2個隊列將只包含寫入請求。1的read.ratio表示:9個隊列將只包含讀取請求,1個隊列將只包含寫入請求。
hbase.ipc.server.callqueue.scan.ratio
考慮到讀取的調(diào)用隊列的數(shù)量(根據(jù)調(diào)用隊列的總數(shù)乘以callqueue.read.ratio計算),scan.ratio屬性將把讀取的調(diào)用隊列拆分為小讀取和長讀取隊列。低于0.5的值意味著長讀隊列比短讀隊列少。值為0.5意味著將有相同數(shù)量的短讀取和長讀取隊列。大于0.5的值意味著將會有比長讀取隊列更多的長讀取隊列。值0或1表示使用同一組隊列進行獲取和掃描。示例:給定讀取調(diào)用隊列的總數(shù)為8,scan.ratio為0或1意味著:8個隊列將包含長讀請求和短讀請求。0.3的scan.ratio表示:2個隊列只包含長讀請求,6個隊列只包含短讀請求。0.5的scan.ratio表示:4個隊列只包含長讀請求,4個隊列只包含短讀請求。0.8的scan.ratio意味著:6個隊列只包含長讀請求,2個隊列只包含短讀請求。
hbase.regionserver.msginterval
從RegionServer到Master的消息間隔(以毫秒為單位)。
hbase.regionserver.logroll.period
無論有多少次編輯,我們將滾動提交日志的時間段。
hbase.regionserver.logroll.errors.tolerated
在觸發(fā)服務(wù)器中止之前,我們將允許連續(xù)的WAL關(guān)閉錯誤的數(shù)量。如果在日志滾動過程中關(guān)閉當(dāng)前WAL書寫器失敗,則設(shè)置為0將導(dǎo)致區(qū)域服務(wù)器中止。即使是一個很小的值(2或3)也會讓區(qū)域服務(wù)器承擔(dān)瞬間的HDFS錯誤。
hbase.regionserver.hlog.reader.impl
WAL文件讀取器的實現(xiàn)。
hbase.regionserver.hlog.writer.impl
WAL文件編寫器的實現(xiàn)。
hbase.regionserver.global.memstore.size
在新更新被阻止并刷新之前,區(qū)域服務(wù)器中所有存儲區(qū)的最大大小。默認為堆的40%(0.4)。更新被阻止,強制刷新直到區(qū)域服務(wù)器中的所有內(nèi)存大小都達到hbase.regionserver.global.memstore.size.lower.limit。此配置中的默認值已被故意留空,以便兌現(xiàn)舊的hbase.regionserver.global.memstore.upperLimit屬性(如果存在)。
hbase.regionserver.global.memstore.size.lower.limit
強制刷新之前,區(qū)域服務(wù)器中所有存儲區(qū)的最大大小。默認為hbase.regionserver.global.memstore.size(0.95)的95%。當(dāng)由于內(nèi)存限制而導(dǎo)致更新被阻塞時,此值的100%會導(dǎo)致最小可能的刷新。此配置中的默認值已被故意留空,以便兌現(xiàn)舊的hbase.regionserver.global.memstore.lowerLimit屬性(如果存在)。
hbase.systemtables.compacting.memstore.type
確定用于系統(tǒng)表(如META,名稱空間表等)的memstore的類型。默認情況下,NONE是類型,因此我們對所有系統(tǒng)表使用默認的memstore。如果我們需要為系統(tǒng)表使用壓縮存儲器,那么將這個屬性設(shè)置為:BASIC / EAGER
hbase.regionserver.optionalcacheflushinterval
在自動刷新之前,編輯在內(nèi)存中的最長時間。默認為1小時。將其設(shè)置為0將禁用自動刷新。
hbase.regionserver.dns.interface
區(qū)域服務(wù)器應(yīng)從中報告其IP地址的網(wǎng)絡(luò)接口的名稱。
hbase.regionserver.dns.nameserver
域名服務(wù)器應(yīng)使用的名稱服務(wù)器(DNS)的主機名或IP地址,以確定主機用于通信和顯示的主機名。
hbase.regionserver.region.split.policy
分割策略決定了一個區(qū)域應(yīng)該何時拆分。當(dāng)前可用的各種其他拆分策略是:BusyRegionSplitPolicy,ConstantSizeRegionSplitPolicy,DisabledRegionSplitPolicy,DelimitedKeyPrefixRegionSplitPolicy,KeyPrefixRegionSplitPolicy和SteppingSplitPolicy。DisabledRegionSplitPolicy會阻止手動區(qū)域分割。
hbase.regionserver.regionSplitLimit
限制區(qū)域數(shù)量,之后不再發(fā)生區(qū)域分割。這并不是硬性限制區(qū)域數(shù)量,而是作為區(qū)域服務(wù)商在一定限度之后停止分裂的指導(dǎo)方針。默認設(shè)置為1000。
zookeeper.session.timeout
ZooKeeper會話超時(以毫秒為單位)。它使用兩種不同的方式。首先,這個值用于HBase用來連接到集合的ZK客戶端。當(dāng)它啟動一個ZK服務(wù)器時它也被HBase使用,并且它被作為'maxSessionTimeout'傳遞。請參閱http://hadoop.apache.org/zookeeper/docs/current/zookeeperProgrammers.html#ch_zkSessions。例如,如果HBase區(qū)域服務(wù)器連接到也由HBase管理的ZK集合,那么會話超時將是由此配置指定的。但是,連接到以不同配置管理的集成的區(qū)域服務(wù)器將受到該集合的maxSessionTimeout的限制。所以,盡管HBase可能會建議使用90秒,但是整體的最大超時時間可能會低于此值,并且會優(yōu)先考慮。ZK目前的默認值是40秒,比HBase的低。
zookeeper.znode.parent
ZooKeeper中用于HBase的Root ZNode。所有配置了相對路徑的HBase的ZooKeeper文件都會在這個節(jié)點下。默認情況下,所有的HBase的ZooKeeper文件路徑都被配置為一個相對路徑,所以它們將全部進入這個目錄下,除非被改變。
zookeeper.znode.acl.parent
Root ZNode用于訪問控制列表。
hbase.zookeeper.dns.interface
ZooKeeper服務(wù)器應(yīng)從中報告其IP地址的網(wǎng)絡(luò)接口的名稱。
hbase.zookeeper.dns.nameserver
名稱服務(wù)器(DNS)的主機名或IP地址,Zo??oKeeper服務(wù)器應(yīng)使用該名稱服務(wù)器來確定主機用于通信和顯示的主機名。
hbase.zookeeper.peerport
ZooKeeper同伴使用的端口進行彼此會話。有關(guān)更多信息,請參閱http://hadoop.apache.org/zookeeper/docs/r3.1.1/zookeeperStarted.html#sc_RunningReplicatedZooKeeper。
hbase.zookeeper.leaderport
ZooKeeper用于leader選舉的端口。有關(guān)更多信息,請參閱http://hadoop.apache.org/zookeeper/docs/r3.1.1/zookeeperStarted.html#sc_RunningReplicatedZooKeeper。
hbase.zookeeper.property.initLimit
來自ZooKeeper的配置zoo.cfg的屬性。初始同步階段可以采用的時鐘(ticks)周期數(shù)。
hbase.zookeeper.property.syncLimit
來自ZooKeeper的配置zoo.cfg的屬性。發(fā)送請求和獲取確認之間可以傳遞的時鐘(ticks)數(shù)量。
hbase.zookeeper.property.dataDir
來自ZooKeeper的配置zoo.cfg的屬性。快照存儲的目錄。
hbase.zookeeper.property.clientPort
來自ZooKeeper的配置zoo.cfg的屬性。客戶端將連接的端口。
hbase.zookeeper.property.maxClientCnxns
來自ZooKeeper的配置zoo.cfg的屬性。限制由IP地址標識的單個客戶端的并發(fā)連接數(shù)量(在套接字級別)可能會對ZooKeeper集合的單個成員產(chǎn)生影響。設(shè)置為高,以避免獨立運行和偽分布式運行的zk連接問題。
hbase.client.write.buffer
BufferedMutator寫入緩沖區(qū)的默認大?。ㄒ宰止?jié)為單位)。一個更大的緩沖區(qū)需要更多的內(nèi)存 - 在客戶端和服務(wù)器端,因為服務(wù)器實例化傳遞的寫入緩沖區(qū)來處理它 - 但更大的緩沖區(qū)大小減少了RPC的數(shù)量。對于估計使用的服務(wù)器端內(nèi)存,計算:hbase.client.write.buffer * hbase.regionserver.handler.count
hbase.client.pause
一般客戶端pause值。在運行失敗的get,region lookup等的重試之前,主要用作等待的值。
hbase.client.pause.cqtbe
是否為CallQueueTooBigException(cqtbe)使用特殊的客戶端pause。如果您觀察到來自同一個RegionServer的頻繁的CQTBE,并且其中的調(diào)用隊列保持充滿,則將此屬性設(shè)置為比hbase.client.pause更高的值
hbase.client.retries.number
最大重試次數(shù)。用作所有可重試操作(如獲取單元格值,啟動行更新等)的最大值。重試間隔是基于hbase.client.pause的粗略函數(shù)。首先,我們在這段時間重試,但后來退后,我們很快就達到每十秒鐘重試一次。請參閱HConstants#RETRY_BACKOFF了解備份如何提升。改變這個設(shè)置和hbase.client.pause來適應(yīng)你的工作負載。
hbase.client.max.total.tasks
單個HTable實例發(fā)送到集群的最大并發(fā)突變?nèi)蝿?wù)數(shù)。
hbase.client.max.perserver.tasks
單個HTable實例將發(fā)送到單個區(qū)域服務(wù)器的并發(fā)突變?nèi)蝿?wù)的最大數(shù)量。
hbase.client.max.perregion.tasks
客戶端將維護到單個Region的最大并發(fā)突變?nèi)蝿?wù)數(shù)。也就是說,如果已經(jīng)有hbase.client.max.perregion.tasks寫入這個區(qū)域,那么新的放入將不會被發(fā)送到這個區(qū)域,直到一些寫入完成。
hbase.client.perserver.requests.threshold
所有客戶端線程(進程級別)中一個服務(wù)器的并發(fā)未決請求的最大數(shù)量。超過請求將立即拋出ServerTooBusyException,以防止用戶的線程被占用和只被一個緩慢的區(qū)域服務(wù)器阻止。如果使用固定數(shù)量的線程以同步方式訪問HBase,請將此值設(shè)置為與線程數(shù)量相關(guān)的適當(dāng)值,這些值將對您有所幫助。
hbase.client.scanner.caching
如果從本地,客戶端內(nèi)存中未提供,則在掃描程序上調(diào)用next時嘗試獲取的行數(shù)。此配置與hbase.client.scanner.max.result.size一起使用,可以有效地使用網(wǎng)絡(luò)。缺省值默認為Integer.MAX_VALUE,這樣網(wǎng)絡(luò)將填充由hbase.client.scanner.max.result.size定義的塊大小,而不受特定行數(shù)的限制,因為行的大小隨表格的不同而不同。如果您事先知道掃描中不需要超過一定數(shù)量的行,則應(yīng)通過掃描#setCaching將此配置設(shè)置為該行限制。緩存值越高,掃描器的速度越快,但是會占用更多的內(nèi)存,而當(dāng)緩存空置時,下一次調(diào)用的時間可能會越來越長。請勿設(shè)置此值,以便調(diào)用之間的時間大于掃描器超時;即hbase.client.scanner.timeout.period
hbase.client.keyvalue.maxsize
指定KeyValue實例的組合的最大允許大小。這是為保存在存儲文件中的單個條目設(shè)置上限。由于它們不能被分割,所以有助于避免因為數(shù)據(jù)太大而導(dǎo)致地區(qū)不能被分割。將此設(shè)置為最大區(qū)域大小的一小部分似乎是明智的。將其設(shè)置為零或更少將禁用檢查。
hbase.server.keyvalue.maxsize
單個單元格的最大允許大小,包括值和所有關(guān)鍵組件。值為0或更小將禁用檢查。默認值是10MB。這是保護服務(wù)器免受OOM情況的安全設(shè)置。
hbase.client.scanner.timeout.period
客戶端掃描程序的租期以毫秒為單位。
hbase.client.localityCheck.threadPoolSize
hbase.bulkload.retries.number
最大重試次數(shù),這是在面對分裂操作時嘗試原子批量加載的最大迭代次數(shù),0意味著永不放棄。
hbase.master.balancer.maxRitPercent
平衡時轉(zhuǎn)換區(qū)域的最大百分比。默認值是1.0。所以沒有平衡器節(jié)流。如果將此配置設(shè)置為0.01,則意味著在平衡時轉(zhuǎn)換中最多有1%的區(qū)域。那么當(dāng)平衡時,集群的可用性至少為99%。
hbase.balancer.period
區(qū)域平衡器在主站運行的時間段。
hbase.normalizer.period
區(qū)域標準化程序在主程序中運行的時段。
hbase.regions.slop
如果任何區(qū)域服務(wù)器具有平均值+(平均*斜率)區(qū)域,則重新平衡。StochasticLoadBalancer(默認負載均衡器)中此參數(shù)的默認值為0.001,其他負載均衡器(即SimpleLoadBalancer)中的默認值為0.2。
hbase.server.thread.wakefrequency
在兩次搜索之間休息的時間(以毫秒為單位)。用作日志滾筒等服務(wù)線程的睡眠間隔。
hbase.server.versionfile.writeattempts
在放棄之前重試嘗試寫入版本文件的次數(shù)。每個嘗試都由hbase.server.thread.wake頻率毫秒分隔。
hbase.hregion.memstore.flush.size
如果memstore的大小超過此字節(jié)數(shù),Memstore將被刷新到磁盤。值由每個hbase.server.thread.wakefrequency運行的線程檢查。
hbase.hregion.percolumnfamilyflush.size.lower.bound.min
如果使用了FlushLargeStoresPolicy,并且有多個列族,那么每當(dāng)我們達到完全的memstore限制時,我們就會找出所有memstore超過“下限”的列族,只有在保留其他內(nèi)存的同時刷新它們。默認情況下,“下限”將是“hbase.hregion.memstore.flush.size/column_family_number”,除非該屬性的值大于該值。如果沒有一個族的memstore大小超過下限,所有的memstore都將被刷新(就像往常一樣)。
hbase.hregion.preclose.flush.size
如果我們關(guān)閉時某個區(qū)域的存儲空間大于或等于這個大小,則可以運行“預(yù)先刷新(pre-flush)”來清除存儲區(qū),然后再放置區(qū)域關(guān)閉標記并使區(qū)域脫機。關(guān)閉時,在關(guān)閉標志下運行刷新以清空內(nèi)存。在此期間,該地區(qū)處于離線狀態(tài),我們沒有進行任何寫入。如果memstore內(nèi)容很大,則此刷新可能需要很長時間才能完成。這個預(yù)刷新是為了清理大部分的memstore,然后把關(guān)閉標志放到離線區(qū)域,這樣在關(guān)閉標志下運行的刷新沒有什么用處。
hbase.hregion.memstore.block.multiplier
如果memstore具有hbase.hregion.memstore.block.multiplier乘以hbase.hregion.memstore.flush.size個字節(jié),則阻止更新。在更新通信高峰期間有用的防止失控的memstore。如果沒有上限,memstore就會填滿,當(dāng)刷新生成的flush文件需要很長時間才能壓縮或拆分。
hbase.hregion.memstore.mslab.enabled
啟用MemStore-Local分配緩沖區(qū),該功能可用于在繁重的寫入負載下防止堆碎片。這可以減少在大堆停止全局GC pause的頻率。
hbase.hregion.max.filesize
最大HFile大小。如果一個地區(qū)的HFiles的總和已經(jīng)超過了這個數(shù)值,這個地區(qū)就會被分成兩部分。
hbase.hregion.majorcompaction
主要壓縮之間的時間,以毫秒表示。設(shè)置為0可禁用基于時間的自動重要壓縮。用戶請求的和基于大小的主要壓縮將仍然運行。這個值乘以hbase.hregion.majorcompaction.jitter,使壓縮在一個給定的時間窗口內(nèi)稍微隨機的時間開始。默認值是7天,以毫秒表示。如果主要壓縮導(dǎo)致您的環(huán)境中斷,則可以將它們配置為在部署的非高峰時間運行,或者通過將此參數(shù)設(shè)置為0來禁用基于時間的主要壓縮,并在cron作業(yè)或另一個外部機制。
hbase.hregion.majorcompaction.jitter
應(yīng)用于hbase.hregion.majorcompaction的乘數(shù)會導(dǎo)致壓縮發(fā)生在給定的時間量的任何一側(cè)的hbase.hregion.majorcompaction。數(shù)字越小,壓縮將越接近hbase.hregion.majorcompaction時間間隔。
hbase.hstore.compactionThreshold
如果任何一個Store中存在超過此數(shù)量的StoreFiles(每個MemStore刷新一個StoreFile),則會執(zhí)行壓縮以將所有StoreFile重寫為單個StoreFile。較大的值會延遲壓實,但是當(dāng)壓縮發(fā)生時,需要較長時間才能完成。
hbase.hstore.flusher.count
刷新線程的數(shù)量。用更少的線程,MemStore刷新將排隊。隨著線程數(shù)量的增加,刷新將并行執(zhí)行,增加了HDFS的負載,并可能導(dǎo)致更多的壓縮。
hbase.hstore.blockingStoreFiles
如果任何一個Store中存在超過此數(shù)量的StoreFiles(每次刷新MemStore時將寫入一個StoreFile),則會阻止該區(qū)域的更新,直到壓縮完成或超出hbase.hstore.blockingWaitTime。
hbase.hstore.blockingWaitTime
在達到hbase.hstore.blockingStoreFiles定義的StoreFile限制后,區(qū)域?qū)⒆柚垢碌臅r間。經(jīng)過這段時間后,即使壓縮尚未完成,該地區(qū)也將停止阻止更新。
hbase.hstore.compaction.min
壓縮可以運行之前,必須有符合進行壓縮條件的最小StoreFiles數(shù)量。調(diào)整hbase.hstore.compaction.min的目標是避免使用太多的小型StoreFiles來壓縮。如果將此值設(shè)置為2,則每次在Store中有兩個StoreFiles時會導(dǎo)致輕微的壓縮,這可能不合適。如果將此值設(shè)置得太高,則需要相應(yīng)調(diào)整所有其他值。對于大多數(shù)情況下,默認值是適當(dāng)?shù)摹T谝郧暗腍Base版本中,參數(shù)hbase.hstore.compaction.min被命名為hbase.hstore.compactionThreshold。
hbase.hstore.compaction.max
無論符合條件的StoreFiles的數(shù)量如何,將為單個次要壓縮選擇的StoreFiles的最大數(shù)量。有效地,hbase.hstore.compaction.max的值控制單個壓縮完成所需的時間長度。將其設(shè)置得更大意味著更多的StoreFiles包含在壓縮中。對于大多數(shù)情況下,默認值是適當(dāng)?shù)摹?/p>
hbase.hstore.compaction.min.size
StoreFile(或使用ExploringCompactionPolicy時選擇的StoreFiles)小于此大小將始終有資格進行輕微壓縮。這個大小或更大的HFile通過hbase.hstore.compaction.ratio進行計算,以確定它們是否合格。由于此限制表示所有StoreFiles的“自動包含”限制小于此值,因此在需要刷新多個StoreFile(1-2 MB范圍內(nèi)的許多StoreFiles)的寫入繁重環(huán)境中可能需要降低此值,因為每個StoreFile都將作為目標,對于壓縮而言,所得到的StoreFile可能仍然在最小尺寸下,并且需要進一步的壓縮。如果此參數(shù)降低,比率檢查會更快地觸發(fā)。這解決了在早期版本的HBase中看到的一些問題,但是在大多數(shù)情況下不再需要更改此參數(shù)。
hbase.hstore.compaction.max.size
StoreFile(或使用ExploringCompactionPolicy時選擇的StoreFiles)大于此大小將被排除在壓縮之外。提高hbase.hstore.compaction.max.size的效果較少,較大的StoreFiles不經(jīng)常壓縮。如果你覺得壓縮過于頻繁而沒有太多好處,你可以嘗試提高這個價值。默認值:LONG.MAX_VALUE的值,以字節(jié)表示。
hbase.hstore.compaction.ratio
對于輕微壓縮,此比率用于確定大于hbase.hstore.compaction.min.size的給定StoreFile是否適合壓縮。其作用是限制大型StoreFiles的壓縮。hbase.hstore.compaction.ratio的值以浮點小數(shù)表示。一個很大的比例,如10,將產(chǎn)生一個大型的StoreFile。相反,低值(如0.25)會產(chǎn)生類似于BigTable壓縮算法的行為,產(chǎn)生四個StoreFiles。推薦使用1.0到1.4之間的中等數(shù)值。在調(diào)整此值時,您要平衡寫入成本與讀取成本。提高價值(如1.4)會有更多的寫入成本,因為你會壓縮更大的StoreFiles。然而,在讀取期間,HBase將需要通過更少的StoreFiles來完成讀取。如果您不能利用Bloom過濾器,請考慮使用這種方法。否則,可以將此值降低到1.0以降低寫入的背景成本,并使用Bloom過濾器來控制讀取期間觸摸的StoreFiles的數(shù)量。對于大多數(shù)情況下,默認值是適當(dāng)?shù)摹?/p>
hbase.hstore.compaction.ratio.offpeak
允許您設(shè)置不同(默認情況下,更積極)的比率,以確定在非高峰時段是否包含較大的StoreFiles。以與hbase.hstore.compaction.ratio相同的方式工作。僅當(dāng)hbase.offpeak.start.hour和hbase.offpeak.end.hour也被啟用時才適用。
hbase.hstore.time.to.purge.deletes
使用未來的時間戳延遲清除標記的時間。如果未設(shè)置,或設(shè)置為0,則將在下一個主要壓縮過程中清除所有刪除標記(包括具有未來時間戳的標記)。否則,將保留一個刪除標記,直到在標記的時間戳之后發(fā)生的主要壓縮加上此設(shè)置的值(以毫秒為單位)。
hbase.offpeak.start.hour
非高峰時段開始,以0到23之間的整數(shù)表示,包括0和23之間的整數(shù)。設(shè)置為-1以禁用非高峰。
hbase.offpeak.end.hour
非高峰時段結(jié)束,以0到23之間的整數(shù)表示,包括0和23之間的整數(shù)。設(shè)置為-1以禁用非高峰。
hbase.regionserver.thread.compaction.throttle
有兩個不同的線程池用于壓縮,一個用于大型壓縮,另一個用于小型壓縮。這有助于保持精簡表(如hbase:meta)的快速壓縮。如果壓縮度大于此閾值,則會進入大型壓縮池。在大多數(shù)情況下,默認值是適當(dāng)?shù)?。默認值:2 x hbase.hstore.compaction.max x hbase.hregion.memstore.flush.size(默認為128MB)。值字段假定hbase.hregion.memstore.flush.size的值與默認值相同。
hbase.regionserver.majorcompaction.pagecache.drop
指定是否通過主要壓縮刪除讀取/寫入系統(tǒng)頁面緩存的頁面。將其設(shè)置為true有助于防止重大壓縮污染頁面緩存,這幾乎總是要求的,特別是對于具有低/中等內(nèi)存與存儲率的群集。
hbase.regionserver.minorcompaction.pagecache.drop
指定是否通過較小的壓縮刪除讀取/寫入系統(tǒng)頁面緩存的頁面。將其設(shè)置為true有助于防止輕微壓縮污染頁面緩存,這對于內(nèi)存與存儲比率較低的群集或?qū)懭胼^重的群集是最有利的。當(dāng)大部分讀取位于最近寫入的數(shù)據(jù)上時,您可能希望在中等到低寫入工作負載下將其設(shè)置為false。
hbase.hstore.compaction.kv.max
刷新或壓縮時要讀取并批量寫入的KeyValues的最大數(shù)量。如果你有較大的KeyValues,并且Out Of Memory Exceptions有問題,請將它設(shè)置得更低。
hbase.storescanner.parallel.seek.enable
在StoreScanner中啟用StoreFileScanner并行搜索功能,該功能可以在特殊情況下減少響應(yīng)延遲。
hbase.storescanner.parallel.seek.threads
如果啟用了并行查找功能,則默認線程池大小。
hfile.block.cache.size
StoreFile使用的最大堆(-Xmx設(shè)置)分配給塊緩存的百分比。默認值為0.4意味著分配40%。設(shè)置為0禁用,但不建議;您至少需要足夠的緩存來保存存儲文件索引。
hfile.block.index.cacheonwrite
這允許在索引被寫入時將非根多級索引塊放入塊高速緩存中。
hfile.index.block.max.size
當(dāng)多級塊索引中葉級,中級或根級索引塊的大小增長到這個大小時,塊將被寫出并啟動一個新塊。
hbase.bucketcache.ioengine
在哪里存儲bucketcache的內(nèi)容。其中之一:offheap、文件或mmap。如果有文件,則將其設(shè)置為file(s):PATH_TO_FILE。mmap意味著內(nèi)容將在一個mmaped文件中。使用mmap:PATH_TO_FILE。
hbase.bucketcache.size
EITHER表示緩存的總堆內(nèi)存大小的百分比(如果小于1.0),則表示BucketCache的總?cè)萘浚ㄕ鬃止?jié))。默認值:0.0
hbase.bucketcache.bucket.sizes
用于bucketcache的存儲區(qū)大小的逗號分隔列表。可以是多種尺寸。列出從最小到最大的塊大小。您使用的大小取決于您的數(shù)據(jù)訪問模式。必須是256的倍數(shù),否則當(dāng)你從緩存中讀取時,你會遇到“java.io.IOException:Invalid HFile block magic”。如果您在此處未指定任何值,那么您可以選取代碼中設(shè)置的默認bucketsizes。
hfile.format.version
用于新文件的HFile格式版本。版本3添加了對hfiles中標簽的支持(請參閱http://hbase.apache.org/book.html#hbase.tags)。另請參閱配置“hbase.replication.rpc.codec”。
hfile.block.bloom.cacheonwrite
為復(fù)合Bloom過濾器的內(nèi)聯(lián)塊啟用寫入緩存。
io.storefile.bloom.block.size
復(fù)合Bloom過濾器的單個塊(“chunk”)的字節(jié)大小。這個大小是近似的,因為Bloom塊只能被插入到數(shù)據(jù)塊的邊界處,而每個數(shù)據(jù)塊的key的個數(shù)也不相同。
hbase.rs.cacheblocksonwrite
塊完成后,是否應(yīng)將HFile塊添加到塊緩存中。
hbase.rpc.timeout
這是為了讓RPC層定義一個遠程調(diào)用超時(毫秒)HBase客戶端應(yīng)用程序超時。它使用ping來檢查連接,但最終會拋出TimeoutException。
hbase.client.operation.timeout
操作超時是一個頂級的限制(毫秒),確保表格中的阻止操作不會被阻止超過這個限制。在每個操作中,如果rpc請求由于超時或其他原因而失敗,則將重試直到成功或拋出RetriesExhaustedException。但是,如果總的阻塞時間在重試耗盡之前達到操作超時,則會提前中斷并拋出SocketTimeoutException。
hbase.cells.scanned.per.heartbeat.check
在heartbeat檢查之間掃描的單元格的數(shù)量。在掃描處理過程中會發(fā)生heartbeat檢查,以確定服務(wù)器是否應(yīng)該停止掃描,以便將heartbeat消息發(fā)送回客戶端。heartbeat消息用于在長時間運行掃描期間保持客戶端 - 服務(wù)器連接的活動。較小的值意味著heartbeat檢查將更頻繁地發(fā)生,因此將對掃描的執(zhí)行時間提供更嚴格的界限。數(shù)值越大意味著heartbeat檢查發(fā)生的頻率越低。
hbase.rpc.shortoperation.timeout
這是“hbase.rpc.timeout”的另一個版本。對于集群內(nèi)的RPC操作,我們依靠此配置為短操作設(shè)置短超時限制。例如,區(qū)域服務(wù)器試圖向活動主服務(wù)器報告的短rpc超時可以更快地進行主站故障轉(zhuǎn)移過程。
hbase.ipc.client.tcpnodelay
在rpc套接字連接上設(shè)置沒有延遲。
hbase.regionserver.hostname
這個配置適用于對HBase很熟悉的人:除非你真的知道你在做什么,否則不要設(shè)定它的價值。當(dāng)設(shè)置為非空值時,這表示底層服務(wù)器的(面向外部)主機名。
hbase.regionserver.hostname.disable.master.reversedns
這個配置適用于對HBase很熟練的人:除非你真的知道你在做什么,否則不要設(shè)定它的價值。當(dāng)設(shè)置為true時,regionserver將使用當(dāng)前節(jié)點主機名作為服務(wù)器名稱,HMaster將跳過反向DNS查找并使用regionserver發(fā)送的主機名。請注意,此配置和hbase.regionserver.hostname是互斥的。
hbase.master.keytab.file
用于登錄配置的HMaster服務(wù)器主體的kerberos密鑰表文件的完整路徑。
hbase.master.kerberos.principal
hbase.regionserver.keytab.file
用于登錄配置的HRegionServer服務(wù)器主體的kerberos密鑰表文件的完整路徑。
hbase.regionserver.kerberos.principal
hadoop.policy.file
RPC服務(wù)器使用策略配置文件對客戶端請求進行授權(quán)決策。僅在啟用HBase安全性時使用。
hbase.superuser
用戶或組列表(以逗號分隔),允許在整個集群中擁有完全權(quán)限(不管存儲的ACL)。僅在啟用HBase安全性時使用。
hbase.auth.key.update.interval
服務(wù)器中認證令牌的主密鑰的更新間隔(以毫秒為單位)。僅在啟用HBase安全性時使用。
hbase.auth.token.max.lifetime
驗證令牌過期的最長生存時間(以毫秒為單位)。僅在啟用HBase安全性時使用。
hbase.ipc.client.fallback-to-simple-auth-allowed
當(dāng)客戶端配置為嘗試安全連接,但嘗試連接到不安全的服務(wù)器時,該服務(wù)器可能會指示客戶端切換到SASL SIMPLE(不安全)身份驗證。此設(shè)置控制客戶端是否接受來自服務(wù)器的此指令。如果為false(默認值),則客戶端將不允許回退到SIMPLE身份驗證,并會中止連接。
hbase.ipc.server.fallback-to-simple-auth-allowed
當(dāng)服務(wù)器配置為需要安全連接時,它將拒絕來自使用SASL SIMPLE(不安全)身份驗證的客戶端的連接嘗試。此設(shè)置允許安全服務(wù)器在客戶端請求時接受來自客戶端的SASL SIMPLE連接。如果為false(默認值),服務(wù)器將不允許回退到SIMPLE身份驗證,并將拒絕連接。警告:只有在將客戶端轉(zhuǎn)換為安全身份驗證時,才應(yīng)將此設(shè)置用作臨時措施。必須禁止它才能進行安全操作。
hbase.display.keys
當(dāng)它被設(shè)置為true時,webUI等將顯示所有開始/結(jié)束鍵作為表格細節(jié),區(qū)域名稱等的一部分。當(dāng)這被設(shè)置為假時,鍵被隱藏。
hbase.coprocessor.enabled
啟用或禁用協(xié)處理器加載。如果'false'(禁用),任何其他協(xié)處理器相關(guān)的配置將被忽略。
hbase.coprocessor.user.enabled
啟用或禁用用戶(又名表)協(xié)處理器加載。如果'false'(禁用),則表格描述符中的任何表協(xié)處理器屬性將被忽略。如果“hbase.coprocessor.enabled”為“false”,則此設(shè)置無效。
hbase.coprocessor.region.classes
在所有表上默認加載的區(qū)域觀察者或端點協(xié)處理器的逗號分隔列表。對于任何覆蓋協(xié)處理器方法,這些類將按順序調(diào)用。在實現(xiàn)自己的協(xié)處理器之后,將其添加到HBase的類路徑中,并在此處添加完全限定的類名稱。協(xié)處理器也可以通過設(shè)置HTableDescriptor或者HBase shell來按需加載。
hbase.coprocessor.master.classes
在活動的HMaster進程中默認加載的org.apache.hadoop.hbase.coprocessor.MasterObserver協(xié)處理器的逗號分隔列表。對于任何實施的協(xié)處理器方法,列出的類將按順序調(diào)用。在實現(xiàn)你自己的MasterObserver之后,把它放在HBase的類路徑中,并在這里添加完全限定的類名稱。
hbase.coprocessor.abortonerror
如果協(xié)處理器加載失敗,初始化失敗或引發(fā)意外的Throwable對象,則設(shè)置為true將導(dǎo)致托管服務(wù)器(主服務(wù)器或區(qū)域服務(wù)器)中止。將其設(shè)置為false將允許服務(wù)器繼續(xù)執(zhí)行,但所涉及的協(xié)處理器的系統(tǒng)范圍狀態(tài)將變得不一致,因為它只能在一部分服務(wù)器中正確執(zhí)行,所以這對于僅調(diào)試是非常有用的。
hbase.rest.port
HBase REST服務(wù)器的端口。
hbase.rest.readonly
定義REST服務(wù)器將啟動的模式??赡艿闹涤校篺alse:此時,所有的HTTP方法都是允許的 - GET / PUT / POST / DELETE。true:此時只允許GET方法。
hbase.rest.threads.max
REST服務(wù)器線程池的最大線程數(shù)。池中的線程被重用來處理REST請求。這將控制同時處理的最大請求數(shù)。這可能有助于控制REST服務(wù)器使用的內(nèi)存以避免OOM問題。如果線程池已滿,則傳入的請求將排隊并等待一些空閑的線程。
hbase.rest.threads.min
REST服務(wù)器線程池的最小線程數(shù)。線程池總是至少有這么多的線程,所以REST服務(wù)器已經(jīng)準備好為傳入的請求提供服務(wù)。
hbase.rest.support.proxyuser
啟用運行REST服務(wù)器以支持代理用戶模式。
hbase.defaults.for.version.skip
設(shè)置為true可以跳過“hbase.defaults.for.version”檢查。將其設(shè)置為true可以在除maven生成的另一側(cè)之外的上下文中有用;即運行在IDE中。你需要設(shè)置這個布爾值為true以避免看到RuntimeException:“hbase-default.xml文件似乎是HBase(\ $ {hbase.version})的舊版本,這個版本是XXX-SNAPSHOT”
hbase.table.lock.enable
設(shè)置為true以啟用鎖定zookeeper中的表以進行模式更改操作。從主服務(wù)器鎖定表可以防止并發(fā)的模式修改損壞表狀態(tài)。
hbase.table.max.rowsize
單行字節(jié)的最大大?。J值為1 Gb),用于Get-ing或Scan'ning,不設(shè)置行內(nèi)掃描標志。如果行大小超過此限制RowTooBigException被拋出到客戶端。
hbase.thrift.minWorkerThreads
線程池的“核心大小”。在每個連接上創(chuàng)建新線程,直到創(chuàng)建了許多線程。
hbase.thrift.maxWorkerThreads
線程池的最大大小。待處理的請求隊列溢出時,將創(chuàng)建新線程,直到其號碼達到此數(shù)字。之后,服務(wù)器開始丟棄連接。
hbase.thrift.maxQueuedRequests
在隊列中等待的最大等待節(jié)點連接數(shù)。如果池中沒有空閑線程,則服務(wù)器將請求排隊。只有當(dāng)隊列溢出時,才會添加新的線程,直到hbase.thrift.maxQueuedRequests線程。
hbase.regionserver.thrift.framed
在服務(wù)器端使用Thrift TFramedTransport。對于thrift服務(wù)器,這是推薦的傳輸方式,需要在客戶端進行類似的設(shè)置。將其更改為false將選擇默認傳輸,當(dāng)由于THRIFT-601發(fā)出格式錯誤的請求時,容易受到DoS的影響。
hbase.regionserver.thrift.framed.max_frame_size_in_mb
使用成幀傳輸時的默認幀大小,以MB為單位。
hbase.regionserver.thrift.compact
使用Thrift TCompactProtocol二進制序列化協(xié)議。
hbase.rootdir.perms
安全(kerberos)安裝程序中根數(shù)據(jù)子目錄的FS Permissions。主服務(wù)器啟動時,會使用此權(quán)限創(chuàng)建rootdir,如果不匹配則設(shè)置權(quán)限。
hbase.wal.dir.perms
安全(kerberos)安裝程序中的根WAL目錄的FS Permissions。當(dāng)主服務(wù)器啟動時,它將使用此權(quán)限創(chuàng)建WAL目錄,如果不匹配則設(shè)置權(quán)限。
hbase.data.umask.enable
如果啟用,則啟用該文件權(quán)限應(yīng)分配給區(qū)域服務(wù)器寫入的文件
hbase.data.umask
當(dāng)hbase.data.umask.enable為true時,應(yīng)該用來寫入數(shù)據(jù)文件的文件權(quán)限
hbase.snapshot.enabled
設(shè)置為true以允許taken/restored/cloned。
hbase.snapshot.restore.take.failsafe.snapshot
設(shè)置為true以在還原操作之前得到快照。所得到的快照將在失敗的情況下使用,以恢復(fù)以前的狀態(tài)。在還原操作結(jié)束時,此快照將被刪除
hbase.snapshot.restore.failsafe.name
restore操作所采用的故障安全快照的名稱。您可以使用{snapshot.name},{table.name}和{restore.timestamp}變量根據(jù)要恢復(fù)的內(nèi)容創(chuàng)建一個名稱。
hbase.server.compactchecker.interval.multiplier
這個數(shù)字決定了我們掃描的頻率,看是否需要壓縮。通常情況下,壓縮是在某些事件(如memstore flush)之后完成的,但是如果區(qū)域在一段時間內(nèi)沒有收到大量的寫入,或者由于不同的壓縮策略,則可能需要定期檢查。檢查之間的時間間隔是hbase.server.compactchecker.interval.multiplier乘以hbase.server.thread.wakefrequency。
hbase.lease.recovery.timeout
在放棄之前,我們等待dfs lease的總恢復(fù)時間。
hbase.lease.recovery.dfs.timeout
dfs恢復(fù)lease調(diào)用之間的時間間隔。應(yīng)該大于namenode為datanode的一部分發(fā)出塊恢復(fù)命令所需的時間總和;dfs.heartbeat.interval和主數(shù)據(jù)節(jié)點所花費的時間,在死數(shù)據(jù)節(jié)點上執(zhí)行數(shù)據(jù)塊恢復(fù)到超時;通常是dfs.client.socket-timeout。
hbase.column.max.version
新的列族描述符將使用此值作為要保留的默認版本數(shù)。
dfs.client.read.shortcircuit
如果設(shè)置為true,則此配置參數(shù)啟用short-circuit本地讀取。
dfs.domain.socket.path
如果將dfs.client.read.shortcircuit設(shè)置為true,則這是一個UNIX域套接字的路徑,該套接字將用于DataNode與本地HDFS客戶端之間的通信。如果該路徑中存在字符串“_PORT”,則會被DataNode的TCP端口替換。請注意托管共享域套接字的目錄的權(quán)限。
hbase.dfs.client.read.shortcircuit.buffer.size
如果未設(shè)置DFSClient配置dfs.client.read.shortcircuit.buffer.size,我們將使用此處配置的內(nèi)容作為short-circuit讀取默認直接字節(jié)緩沖區(qū)大小。DFSClient本機默認值是1MB;HBase保持HDFS文件的打開狀態(tài),所以文件塊*1MB的數(shù)量很快就開始累積起來,并由于直接內(nèi)存不足而威脅OOME。所以,我們從默認設(shè)置下來。使它大于在HColumnDescriptor中設(shè)置的默認hbase塊大小,通常是64k。
hbase.regionserver.checksum.verify
如果設(shè)置為true(默認),HBase將驗證hfile塊的校驗和。當(dāng)HBase寫出hfiles時,HBase將校驗和寫入數(shù)據(jù)。HDFS(在此寫入時)將校驗和寫入單獨的文件,而不是需要額外查找的數(shù)據(jù)文件。設(shè)置這個標志可以節(jié)省一些I/O。設(shè)置此標志時,HDFS的校驗和驗證將在hfile流內(nèi)部禁用。如果hbase-checksum驗證失敗,我們將切換回使用HDFS校驗和(所以不要禁用HDFS校驗!除此功能外,還適用于hfiles,而不適用于WAL)。如果這個參數(shù)設(shè)置為false,那么hbase將不會驗證任何校驗和,而是取決于HDFS客戶端中的校驗和驗證。
hbase.hstore.bytes.per.checksum
新創(chuàng)建的校驗和塊中的字節(jié)數(shù),用于hfile塊中的HBase級校驗和。
hbase.hstore.checksum.algorithm
用于計算校驗和的算法的名稱。可能的值是NULL,CRC32,CRC32C。
hbase.client.scanner.max.result.size
調(diào)用掃描器的下一個方法時返回的最大字節(jié)數(shù)。請注意,當(dāng)單個行大于此限制時,行仍然完全返回。默認值是2MB,這對于1ge網(wǎng)絡(luò)是有好處的。有了更快和/或更高的延遲網(wǎng)絡(luò),這個值應(yīng)該增加。
hbase.server.scanner.max.result.size
調(diào)用掃描器的下一個方法時返回的最大字節(jié)數(shù)。請注意,當(dāng)單個行大于此限制時,行仍然完全返回。默認值是100MB。這是保護服務(wù)器免受OOM情況的安全設(shè)置。
hbase.status.published
該設(shè)置激活了主控發(fā)布區(qū)域服務(wù)器的狀態(tài)。當(dāng)一臺區(qū)域服務(wù)器死亡并開始恢復(fù)時,主服務(wù)器會將這些信息推送到客戶端應(yīng)用程序,讓他們立即切斷連接,而不是等待超時。
hbase.status.publisher.class
用multicast消息實現(xiàn)狀態(tài)發(fā)布。
hbase.status.listener.class
使用multicast消息實現(xiàn)狀態(tài)監(jiān)聽器。
hbase.status.multicast.address.ip
用于multicase狀態(tài)發(fā)布的multicase地址。
hbase.status.multicast.address.port
用于multicase狀態(tài)發(fā)布的multicase端口。
hbase.dynamic.jars.dir
自定義過濾器JAR的目錄可以由區(qū)域服務(wù)器動態(tài)加載,而無需重新啟動。但是,已加載的過濾器/協(xié)處理器類將不會被卸載。不適用于協(xié)處理器。
hbase.security.authentication
控制是否為HBase啟用安全身份驗證。可能的值是“simple”(不認證)和“Kerberos”。
hbase.rest.filter.classes
用于REST服務(wù)的Servlet過濾器。
hbase.master.loadbalancer.class
用于在期間發(fā)生時執(zhí)行區(qū)域平衡的類。它將DefaultLoadBalancer替換為默認值(因為它被重命名為SimpleLoadBalancer )。
hbase.master.loadbalance.bytable
平衡器運行時的因子表名稱。默認:false。
hbase.master.normalizer.class
用于執(zhí)行期間發(fā)生時的區(qū)域標準化的類。
hbase.rest.csrf.enabled
設(shè)置為true以啟用對跨站點請求forgery(CSRF)的保護。
hbase.rest-csrf.browser-useragents-regex
通過將hbase.rest.csrf.enabled設(shè)置為true來啟用為REST服務(wù)器,針對跨站點請求偽造(CSRF)的防護時,用于匹配HTTP請求的User-Agent標頭的正則表達式的逗號分隔列表。如果傳入的用戶代理與這些正則表達式中的任何一個相匹配,則認為該請求被瀏覽器發(fā)送,因此CSRF預(yù)防被強制執(zhí)行。如果請求的用戶代理與這些正則表達式中的任何一個都不匹配,則該請求被認為是由除瀏覽器以外的其他東西發(fā)送的,例如腳本自動化。在這種情況下,CSRF不是一個潛在的攻擊向量,所以預(yù)防沒有被執(zhí)行。這有助于實現(xiàn)與尚未更新以發(fā)送CSRF預(yù)防報頭的現(xiàn)有自動化的向后兼容性。
hbase.security.exec.permission.checks
如果啟用此設(shè)置,并且基于ACL的訪問控制處于活動狀態(tài)(AccessController協(xié)處理器作為系統(tǒng)協(xié)處理器安裝,或作為表協(xié)處理器安裝在表上),則必須授予所有相關(guān)用戶EXEC權(quán)限(如果需要執(zhí)行協(xié)處理器端點調(diào)用。像任何其他權(quán)限一樣,EXEC權(quán)限可以在全局范圍內(nèi)授予用戶,也可以授予每個表或命名空間的用戶。有關(guān)協(xié)處理器端點的更多信息,請參閱HBase聯(lián)機手冊的協(xié)處理器部分。有關(guān)使用AccessController授予或撤消權(quán)限的更多信息,請參閱HBase聯(lián)機手冊的安全性部分。
hbase.procedure.regionserver.classes
在活動HRegionServer進程中默認加載的org.apache.hadoop.hbase.procedure.RegionServerProcedureManager過程管理器的逗號分隔列表。生命周期方法(init / start / stop)將由活動的HRegionServer進程調(diào)用,以執(zhí)行特定的全局barriered過程。在實現(xiàn)你自己的RegionServerProcedureManager之后,把它放在HBase的類路徑中,并在這里添加完全限定的類名稱。
hbase.procedure.master.classes
在活動HMaster進程中默認加載的org.apache.hadoop.hbase.procedure.MasterProcedureManager過程管理器的逗號分隔列表。程序通過其簽名進行標識,用戶可以使用簽名和即時名稱來觸發(fā)全局程序的執(zhí)行。在實現(xiàn)你自己的MasterProcedureManager之后,把它放在HBase的類路徑中,并在這里添加完全限定的類名稱。
hbase.coordinated.state.manager.class
協(xié)調(diào)狀態(tài)管理員的完全合格的名字。
hbase.regionserver.storefile.refresh.period
用于刷新輔助區(qū)域的存儲文件的時間段(以毫秒為單位)。0意味著此功能被禁用。輔助區(qū)域在次要區(qū)域刷新區(qū)域中的文件列表時會看到來自主要文件的新文件(來自刷新和壓縮)(沒有通知機制)。但是頻繁刷新可能會導(dǎo)致額外的Namenode壓力。如果文件的刷新時間不能超過HFile TTL(hbase.master.hfilecleaner.ttl),請求將被拒絕。此設(shè)置還建議將HFile TTL配置為較大的值。
hbase.region.replica.replication.enabled
是否啟用對輔助區(qū)域副本的異步WAL復(fù)制。如果啟用了此功能,則會創(chuàng)建一個名為“region_replica_replication”的復(fù)制對等項,它將對日志進行尾隨處理,并將突變復(fù)制到區(qū)域復(fù)制大于1的區(qū)域復(fù)制的區(qū)域復(fù)制。如果啟用一次,禁用此復(fù)制也需要禁用復(fù)制對等使用shell或Admin java類。復(fù)制到輔助區(qū)域副本可以在標準群集間復(fù)制上工作。
hbase.http.filter.initializers
一個以逗號分隔的類名列表。列表中的每個類都必須擴展org.apache.hadoop.hbase.http.FilterInitializer。相應(yīng)的過濾器將被初始化。然后,過濾器將應(yīng)用于所有面向jsp和servlet網(wǎng)頁的用戶。列表的排序定義了過濾器的排序。默認的StaticUserWebFilter添加hbase.http.staticuser.user屬性定義的用戶主體。
hbase.security.visibility.mutations.checkauths
如果啟用此屬性,將檢查可見性表達式中的標簽是否與發(fā)出突變的用戶相關(guān)聯(lián)
hbase.http.max.threads
HTTP服務(wù)器將在其ThreadPool中創(chuàng)建的最大線程數(shù)。
hbase.replication.rpc.codec
啟用復(fù)制時要使用的編解碼器,以便標簽也被復(fù)制。這與支持標簽的HFileV3一起使用。如果標簽未被使用或者所使用的hfile版本是HFileV2,則可以使用KeyValueCodec作為復(fù)制編解碼器。請注意,在沒有標簽時使用KeyValueCodecWithTags進行復(fù)制不會造成任何傷害。
hbase.replication.source.maxthreads
任何復(fù)制源將用于并行傳送編輯到接收器的最大線程數(shù)。這也限制了每個復(fù)制批次被分解成的塊的數(shù)量。較大的值可以提高主群集和從群集之間的復(fù)制吞吐量。默認值為10,很少需要改變。
hbase.serial.replication.waitingMs
默認情況下,在復(fù)制中,我們不能確定slave集群中的操作順序與master集群中的順序相同。如果將REPLICATION_SCOPE設(shè)置為2,我們將按照寫入順序進行編輯。這個配置是設(shè)置在下一次檢查之前,我們將等待多長時間(以毫秒為單位),如果日志不能被推送,因為有一些日志寫在它之前還沒有被推入。較大的等待將減少hbase:meta上的查詢數(shù)量,但會增加復(fù)制的延遲。此功能依賴于zk-less分配,因此用戶必須將hbase.assignment.usezk設(shè)置為false來支持它。
hbase.http.staticuser.user
要在呈現(xiàn)內(nèi)容時在靜態(tài)網(wǎng)頁過濾器上過濾的用戶名稱。一個示例使用是HDFS Web UI(用于瀏覽文件的用戶)。
hbase.regionserver.handler.abort.on.error.percent
區(qū)域服務(wù)器RPC線程的百分比無法中止RS。-1表示禁用中止;0表示即使單個處理程序已經(jīng)死亡也會中止;0.x表示只有當(dāng)這個百分比的處理程序死亡時才中止;1表示只中止所有的處理程序已經(jīng)死亡。
hbase.mob.file.cache.size
要緩存的已打開文件處理程序的數(shù)量。更大的值將通過為每個移動文件緩存提供更多的文件處理程序來減少頻繁的文件打開和關(guān)閉,從而有利于讀取。但是,如果設(shè)置得太高,則可能導(dǎo)致“打開的文件處理程序太多”。默認值為1000。
hbase.mob.cache.evict.period
mob高速緩存驅(qū)逐高速緩存的mob文件之前的時間(秒)。默認值是3600秒。
hbase.mob.cache.evict.remain.ratio
當(dāng)緩存的移動文件數(shù)量超過hbase.mob.file.cache.size時,觸發(fā)驅(qū)逐后保留的文件的比率(介于0.0和1.0之間)會被觸發(fā)。默認值是0.5f。
hbase.master.mob.ttl.cleaner.period
ExpiredMobFileCleanerChore運行的時間段。該單位是秒。默認值是一天。MOB文件名僅使用文件創(chuàng)建時間的日期部分。我們使用這個時間來決定文件的TTL到期時間。所以刪除TTL過期的文件可能會被延遲。最大延遲可能是24小時。
hbase.mob.compaction.mergeable.threshold
如果一個mob文件的大小小于這個值,那么它被認為是一個小文件,需要在mob compaction中合并。默認值是1280MB。
hbase.mob.delfile.max.count
mob壓縮中允許的最大del文件數(shù)。在mob壓縮中,當(dāng)現(xiàn)有的del文件的數(shù)量大于這個值時,它們被合并,直到del文件的數(shù)量不大于該值。默認值是3。
hbase.mob.compaction.batch.size
在一批mob壓縮中所允許的mob文件的最大數(shù)量。mob壓縮合并小的mob文件到更大的。如果小文件的數(shù)量非常大,則可能導(dǎo)致合并中的“打開的文件處理程序太多”。合并必須分成批次。此值限制在一批mob壓縮中選擇的mob文件的數(shù)量。默認值是100。
hbase.mob.compaction.chore.period
MobCompactionChore運行的時間。該單位是秒。默認值是一個星期。
hbase.mob.compactor.class
執(zhí)行mob compactor,默認一個是PartitionedMobCompactor。
hbase.mob.compaction.threads.max
MobCompactor中使用的最大線程數(shù)。
hbase.snapshot.master.timeout.millis
主快照程序執(zhí)行的超時。
hbase.snapshot.region.timeout
區(qū)域服務(wù)器將線程保持在快照請求池中等待超時。
hbase.rpc.rows.warning.threshold
批處理操作中的行數(shù),超過該值將記錄警告。
hbase.master.wait.on.service.seconds
默認是5分鐘。做30秒的測試。有關(guān)上下文,請參見HBASE-19794。
hbase-env.sh文件用來設(shè)置HBase環(huán)境變量。比如包括在啟動HBase守護程序(如堆大小和垃圾回收器配置)時傳遞JVM的選項。您還可以設(shè)置HBase配置、日志目錄、niceness、ssh選項,定位進程pid文件的位置等的配置。打開conf/hbase-env.sh文件并仔細閱讀其內(nèi)容。每個選項都有相當(dāng)好的記錄。如果希望在啟動時由HBase守護進程讀取,請在此處添加您自己的環(huán)境變量。
此處的更改將需要重啟HBase才能注意到更改。
編輯此文件以更改HBase文件的滾動速度,并更改HBase記錄消息的級別。
此處的更改將需要重新啟動集群以注意到更改,盡管可以通過HBase UI為特定的守護程序更改日志級別。
如果您在獨立模式下運行HBase,則不必為您的客戶端配置任何內(nèi)容,只要保證它們在同一臺計算機上即可。
由于HBase Master可以移動,客戶可以通過向ZooKeeper尋找當(dāng)前的關(guān)鍵位置來進行引導(dǎo)。ZooKeeper是保存所有這些值的地方。因此客戶需要ZooKeeper集合的位置才能做其他事情。通常這個集合位置被保存在hbase-site.xml中,并由客戶端從CLASSPATH中提取。
如果你正在配置一個IDE來運行一個HBase客戶端,你應(yīng)該在你的類路徑中包含conf/目錄,這樣可以找到hbase-site.xml設(shè)置(或者添加src/test/resources來獲取使用的hbase-site.xml文件通過測試)。
最小的情況是,當(dāng)連接到集群時,HBase客戶機需要依賴關(guān)系中的hbase-client模塊:
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.2.4</version>
</dependency>
一個基本的客戶端的hbase-site.xml的使用示例可能如下所示:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.zookeeper.quorum</name>
<value>example1,example2,example3</value>
<description>The directory shared by region servers.
</description>
</property>
</configuration>
Java客戶端使用的配置保存在HBaseConfiguration實例中。
HBaseConfiguration的工廠方法,HBaseConfiguration.create();,在調(diào)用時會讀取客戶端上的第一個hbase-site.xml的內(nèi)容(CLASSPATH如果存在的話)(調(diào)用也將包含在任何發(fā)現(xiàn)的hbase-default.xml中;hbase-default.xml在hbase.X.X.X.jar里面)。也可以直接指定配置,而無需從hbase-site.xml中讀取數(shù)據(jù)。例如,要以編程方式設(shè)置集群的ZooKeeper集成,請執(zhí)行以下操作:
Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum", "localhost"); // Here we are running zookeeper locally
如果多個ZooKeeper實例組成ZooKeeper集合,則可以在逗號分隔列表中指定它們(就像在hbase-site.xml文件中一樣)。這個填充的Configuration
實例然后可以傳遞給一個表,依此類推。
更多建議: