hbase-default.xml

该文档是用hbase默认配置文件生成的,文件源是 hbase-default.xml。 

在实际的HBase生产环境中应用于%HBASE_HOME%/conf/hbase-site.xml中。 
hbase.rootdir 

    这个目录是region server的共享目录,用来持久化HBase。URL需要是'完全正确'的,还要包含文件系统的scheme。例如,要表示hdfs中的'/hbase'目录,namenode 运行在namenode.example.org的9090端口。则需要设置为hdfs://namenode.example.org:9000/hbase。默认情况下HBase是写到/tmp的。不改这个配置,数据会在重启的时候丢失。 

    默认: file:///tmp/hbase-${user.name}/hbase 
hbase.master.port 

    HBase的Master的端口. 

    默认: 60000 
hbase.cluster.distributed 

    HBase的运行模式。false是单机模式,true是分布式模式。若为false,HBase和Zookeeper会运行在同一个JVM里面。 

    默认: false 
hbase.tmp.dir 

    本地文件系统的临时文件夹。可以修改到一个更为持久的目录上。(/tmp会在重启时清楚) 

    默认: /tmp/hbase-${user.name} 
hbase.master.info.port 

    HBase Master web 界面端口. 设置为-1 意味着你不想让他运行。 

    默认: 60010 
hbase.master.info.bindAddress 

    HBase Master web 界面绑定的端口 

    默认: 0.0.0.0 
hbase.client.write.buffer 

    HTable客户端的写缓冲的默认大小。这个值越大,需要消耗的内存越大。因为缓冲在客户端和服务端都有实例,所以需要消耗客户端和服务端两个地方的内存。得到的好处是,可以减少RPC的次数。可以这样估算服务器端被占用的内存: hbase.client.write.buffer * hbase.regionserver.handler.count 

    默认: 2097152 
hbase.regionserver.port 

    HBase RegionServer绑定的端口 

    默认: 60020 
hbase.regionserver.info.port 

    HBase RegionServer web 界面绑定的端口 设置为 -1 意味这你不想与运行 RegionServer 界面. 

    默认: 60030 
hbase.regionserver.info.port.auto 

    Master或RegionServer是否要动态搜一个可以用的端口来绑定界面。当hbase.regionserver.info.port已经被占用的时候,可以搜一个空闲的端口绑定。这个功能在测试的时候很有用。默认关闭。 

    默认: false 
hbase.regionserver.info.bindAddress 

    HBase RegionServer web 界面的IP地址 

    默认: 0.0.0.0 
hbase.regionserver.class 

    RegionServer 使用的接口。客户端打开代理来连接region server的时候会使用到。 

    默认: org.apache.hadoop.hbase.ipc.HRegionInterface 
hbase.client.pause 

    通常的客户端暂停时间。最多的用法是客户端在重试前的等待时间。比如失败的get操作和region查询操作等都很可能用到。 

    默认: 1000 
hbase.client.retries.number 

    最大重试次数。例如 region查询,Get操作,Update操作等等都可能发生错误,需要重试。这是最大重试错误的值。 

    默认: 10 
hbase.client.scanner.caching 

    当调用Scanner的next方法,而值又不在缓存里的时候,从服务端一次获取的行数。越大的值意味着Scanner会快一些,但是会占用更多的内存。当缓冲被占满的时候,next方法调用会越来越慢。慢到一定程度,可能会导致超时。例如超过了hbase.regionserver.lease.period。 

    默认: 1 
hbase.client.keyvalue.maxsize 

    一个KeyValue实例的最大size.这个是用来设置存储文件中的单个entry的大小上界。因为一个KeyValue是不能分割的,所以可以避免因为数据过大导致region不可分割。明智的做法是把它设为可以被最大region size整除的数。如果设置为0或者更小,就会禁用这个检查。默认10MB。 

    默认: 10485760 
hbase.regionserver.lease.period 

    客户端租用HRegion server 期限,即超时阀值。单位是毫秒。默认情况下,客户端必须在这个时间内发一条信息,否则视为死掉。 

    默认: 60000 
hbase.regionserver.handler.count 

    RegionServers受理的RPC Server实例数量。对于Master来说,这个属性是Master受理的handler数量 

    默认: 10 
hbase.regionserver.msginterval 

    RegionServer 发消息给 Master 时间间隔,单位是毫秒 

    默认: 3000 
hbase.regionserver.optionallogflushinterval 

    将Hlog同步到HDFS的间隔。如果Hlog没有积累到一定的数量,到了时间,也会触发同步。默认是1秒,单位毫秒。 

    默认: 1000 
hbase.regionserver.regionSplitLimit 

    region的数量到了这个值后就不会在分裂了。这不是一个region数量的硬性限制。但是起到了一定指导性的作用,到了这个值就该停止分裂了。默认是MAX_INT.就是说不阻止分裂。 

    默认: 2147483647 
hbase.regionserver.logroll.period 

    提交commit log的间隔,不管有没有写足够的值。 

    默认: 3600000 
hbase.regionserver.hlog.reader.impl 

    HLog file reader 的实现. 

    默认: org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader 
hbase.regionserver.hlog.writer.impl 

    HLog file writer 的实现. 

    默认: org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter 
hbase.regionserver.thread.splitcompactcheckfrequency 

    region server 多久执行一次split/compaction 检查. 

    默认: 20000 
hbase.regionserver.nbreservationblocks 

    储备的内存block的数量(译者注:就像石油储备一样)。当发生out of memory 异常的时候,我们可以用这些内存在RegionServer停止之前做清理操作。 

    默认: 4 
hbase.zookeeper.dns.interface 

    当使用DNS的时候,Zookeeper用来上报的IP地址的网络接口名字。 

    默认: default 
hbase.zookeeper.dns.nameserver 

    当使用DNS的时候,Zookeepr使用的DNS的域名或者IP 地址,Zookeeper用它来确定和master用来进行通讯的域名. 

    默认: default 
hbase.regionserver.dns.interface 

    当使用DNS的时候,RegionServer用来上报的IP地址的网络接口名字。 

    默认: default 
hbase.regionserver.dns.nameserver 

    当使用DNS的时候,RegionServer使用的DNS的域名或者IP 地址,RegionServer用它来确定和master用来进行通讯的域名. 

    默认: default 
hbase.master.dns.interface 

    当使用DNS的时候,Master用来上报的IP地址的网络接口名字。 

    默认: default 
hbase.master.dns.nameserver 

    当使用DNS的时候,RegionServer使用的DNS的域名或者IP 地址,Master用它来确定用来进行通讯的域名. 

    默认: default 
hbase.balancer.period 

    Master执行region balancer的间隔。 

    默认: 300000 
hbase.regions.slop 

    当任一regionserver有average + (average * slop)个region是会执行Rebalance 

    默认: 0 
hbase.master.logcleaner.ttl 

    Hlog存在于.oldlogdir 文件夹的最长时间, 超过了就会被 Master 的线程清理掉. 

    默认: 600000 
hbase.master.logcleaner.plugins 

    LogsCleaner服务会执行的一组LogCleanerDelegat。值用逗号间隔的文本表示。这些WAL/HLog cleaners会按顺序调用。可以把先调用的放在前面。你可以实现自己的LogCleanerDelegat,加到Classpath下,然后在这里写下类的全称。一般都是加在默认值的前面。 

    默认: org.apache.hadoop.hbase.master.TimeToLiveLogCleaner 
hbase.regionserver.global.memstore.upperLimit 

    单个region server的全部memtores的最大值。超过这个值,一个新的update操作会被挂起,强制执行flush操作。 

    默认: 0.4 
hbase.regionserver.global.memstore.lowerLimit 

    当强制执行flush操作的时候,当低于这个值的时候,flush会停止。默认是堆大小的 35% . 如果这个值和 hbase.regionserver.global.memstore.upperLimit 相同就意味着当update操作因为内存限制被挂起时,会尽量少的执行flush(译者注:一旦执行flush,值就会比下限要低,不再执行) 

    默认: 0.35 
hbase.server.thread.wakefrequency 

    service工作的sleep间隔,单位毫秒。 可以作为service线程的sleep间隔,比如log roller. 

    默认: 10000 
hbase.hregion.memstore.flush.size 

    当memstore的大小超过这个值的时候,会flush到磁盘。这个值被一个线程每隔hbase.server.thread.wakefrequency检查一下。 

    默认: 67108864 
hbase.hregion.preclose.flush.size 

    当一个region中的memstore的大小大于这个值的时候,我们又触发了close.会先运行“pre-flush”操作,清理这个需要关闭的memstore,然后将这个region下线。当一个region下线了,我们无法再进行任何写操作。如果一个memstore很大的时候,flush操作会消耗很多时间。"pre-flush"操作意味着在region下线之前,会先把memstore清空。这样在最终执行close操作的时候,flush操作会很快。 

    默认: 5242880 
hbase.hregion.memstore.block.multiplier 

    如果memstore有hbase.hregion.memstore.block.multiplier倍数的hbase.hregion.flush.size的大小,就会阻塞update操作。这是为了预防在update高峰期会导致的失控。如果不设上界,flush的时候会花很长的时间来合并或者分割,最坏的情况就是引发out of memory异常。(译者注:内存操作的速度和磁盘不匹配,需要等一等。原文似乎有误) 

    默认: 2 
hbase.hregion.memstore.mslab.enabled 

    体验特性:启用memStore分配本地缓冲区。这个特性是为了防止在大量写负载的时候堆的碎片过多。这可以减少GC操作的频率。(GC有可能会Stop the world)(译者注:实现的原理相当于预分配内存,而不是每一个值都要从堆里分配) 

    默认: false 
hbase.hregion.max.filesize 

    最大HStoreFile大小。若某个Column families的HStoreFile增长达到这个值,这个Hegion会被切割成两个。 Default: 256M. 

    默认: 268435456 
hbase.hstore.compactionThreshold 

    当一个HStore含有多于这个值的HStoreFiles(每一个memstore flush产生一个HStoreFile)的时候,会执行一个合并操作,把这HStoreFiles写成一个。这个值越大,需要合并的时间就越长。 

    默认: 3 
hbase.hstore.blockingStoreFiles 

    当一个HStore含有多于这个值的HStoreFiles(每一个memstore flush产生一个HStoreFile)的时候,会执行一个合并操作,update会阻塞直到合并完成,直到超过了hbase.hstore.blockingWaitTime的值 

    默认: 7 
hbase.hstore.blockingWaitTime 

    hbase.hstore.blockingStoreFiles所限制的StoreFile数量会导致update阻塞,这个时间是来限制阻塞时间的。当超过了这个时间,HRegion会停止阻塞update操作,不过合并还有没有完成。默认为90s. 

    默认: 90000 
hbase.hstore.compaction.max 

    每个“小”合并的HStoreFiles最大数量。 

    默认: 10 
hbase.hregion.majorcompaction 

    一个Region中的所有HStoreFile的major compactions的时间间隔。默认是1天。 设置为0就是禁用这个功能。 

    默认: 86400000 
hbase.mapreduce.hfileoutputformat.blocksize 

    MapReduce中HFileOutputFormat可以写 storefiles/hfiles. 这个值是hfile的blocksize的最小值。通常在HBase写Hfile的时候,bloocksize是由table schema(HColumnDescriptor)决定的,但是在mapreduce写的时候,我们无法获取schema中blocksize。这个值越小,你的索引就越大,你随机访问需要获取的数据就越小。如果你的cell都很小,而且你需要更快的随机访问,可以把这个值调低。 

    默认: 65536 
hfile.block.cache.size 

    分配给HFile/StoreFile的block cache占最大堆(-Xmx setting)的比例。默认是20%,设置为0就是不分配。 

    默认: 0.2 
hbase.hash.type 

    哈希函数使用的哈希算法。可以选择两个值:: murmur (MurmurHash) 和 jenkins (JenkinsHash). 这个哈希是给 bloom filters用的. 

    默认: murmur 
hbase.master.keytab.file 

    HMaster server验证登录使用的kerberos keytab 文件路径。(译者注:HBase使用Kerberos实现安全) 

    默认: 
hbase.master.kerberos.principal 

    例如. "hbase/_HOST@EXAMPLE.COM". HMaster运行需要使用 kerberos principal name. principal name 可以在: user/hostname@DOMAIN 中获取. 如果 "_HOST" 被用做hostname portion,需要使用实际运行的hostname来替代它。 

    默认: 
hbase.regionserver.keytab.file 

    HRegionServer验证登录使用的kerberos keytab 文件路径。 

    默认: 
hbase.regionserver.kerberos.principal 

    例如. "hbase/_HOST@EXAMPLE.COM". HRegionServer运行需要使用 kerberos principal name. principal name 可以在: user/hostname@DOMAIN 中获取. 如果 "_HOST" 被用做hostname portion,需要使用实际运行的hostname来替代它。在这个文件中必须要有一个entry来描述 hbase.regionserver.keytab.file 

    默认: 
zookeeper.session.timeout 

    ZooKeeper 会话超时.HBase把这个值传递改zk集群,向他推荐一个会话的最大超时时间。详见http://hadoop.apache.org/zookeeper/docs/current/zookeeperProgrammers.html#ch_zkSessions "The client sends a requested timeout, the server responds with the timeout that it can give the client. "。 单位是毫秒 

    默认: 180000 
zookeeper.znode.parent 

    ZooKeeper中的HBase的根ZNode。所有的HBase的ZooKeeper会用这个目录配置相对路径。默认情况下,所有的HBase的ZooKeeper文件路径是用相对路径,所以他们会都去这个目录下面。 

    默认: /hbase 
zookeeper.znode.rootserver 

    ZNode 保存的 根region的路径. 这个值是由Master来写,client和regionserver 来读的。如果设为一个相对地址,父目录就是 ${zookeeper.znode.parent}.默认情形下,意味着根region的路径存储在/hbase/root-region-server. 

    默认: root-region-server 
hbase.zookeeper.quorum 

    Zookeeper集群的地址列表,用逗号分割。例如:"host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".默认是localhost,是给伪分布式用的。要修改才能在完全分布式的情况下使用。如果在hbase-env.sh设置了HBASE_MANAGES_ZK,这些ZooKeeper节点就会和HBase一起启动。 

    默认: localhost 
hbase.zookeeper.peerport 

    ZooKeeper节点使用的端口。详细参见:http://hadoop.apache.org/zookeeper/docs/r3.1.1/zookeeperStarted.html#sc_RunningReplicatedZooKeeper 

    默认: 2888 
hbase.zookeeper.leaderport 

    ZooKeeper用来选择Leader的端口,详细参见:http://hadoop.apache.org/zookeeper/docs/r3.1.1/zookeeperStarted.html#sc_RunningReplicatedZooKeeper 

    默认: 3888 
hbase.zookeeper.property.initLimit 

    ZooKeeper的zoo.conf中的配置。 初始化synchronization阶段的ticks数量限制 

    默认: 10 
hbase.zookeeper.property.syncLimit 

    ZooKeeper的zoo.conf中的配置。 发送一个请求到获得承认之间的ticks的数量限制 

    默认: 5 
hbase.zookeeper.property.dataDir 

    ZooKeeper的zoo.conf中的配置。 快照的存储位置 

    默认: ${hbase.tmp.dir}/zookeeper 
hbase.zookeeper.property.clientPort 

    ZooKeeper的zoo.conf中的配置。 客户端连接的端口 

    默认: 2181 
hbase.zookeeper.property.maxClientCnxns 

    ZooKeeper的zoo.conf中的配置。 ZooKeeper集群中的单个节点接受的单个Client(以IP区分)的请求的并发数。这个值可以调高一点,防止在单机和伪分布式模式中出问题。 

    默认: 2000 
hbase.rest.port 

    HBase REST server的端口 

    默认: 8080 
hbase.rest.readonly 

    定义REST server的运行模式。可以设置成如下的值: false: 所有的HTTP请求都是被允许的 - GET/PUT/POST/DELETE. true:只有GET请求是被允许的 

    默认: false 
<think>好的,我需要帮助用户验证他们的hbase-site.xml配置是否正确。用户提到了三个参数:hbase.rootdir、hbase.cluster.distributed和hbase.unsafe.stream.capability.enforce,并给出了具体的配置值。我需要根据提供的引用和HBase的常见配置实践来检查这些设置是否合理。 首先看hbase.rootdir的配置。用户设置的是hdfs://localhost:9000/hbase。根据引用[2]中的例子,hbase.rootdir应该指向HDFS的路径,比如hdfs://master/hbase。这里的localhost:9000是HDFS的默认地址和端口,通常namenode运行在9000端口。如果用户的HDFS确实运行在本地且端口正确,那么这样配置是没问题的。不过需要注意,如果是在分布式环境中,可能需要使用主机名而不是localhost,如引用[2]中的master。所以需要确认用户的HDFS配置是否匹配。 接下来是hbase.cluster.distributed设置为true。引用[2]和[3]都提到,当设置为true时表示分布式部署。用户如果是分布式环境,这正确。但如果是单机模式,应该设为false。用户设置为true,说明他们在分布式模式下运行,这需要与实际情况相符。 然后是hbase.unsafe.stream.capability.enforce设置为false。引用[3]提到,在分布式情况下,这个参数应设为false。而引用[2]中的例子却设置为true,可能存在冲突。需要进一步确认。通常,这个参数用于强制检查HDFS的流能力,若HDFS版本较新(如Hadoop 3.x以上),设为false可以避免兼容性问题。因此用户设为false是正确的,尤其是在分布式环境中,如引用[3]所建议。 另外,用户可能忽略其他配置,如hbase.zookeeper.quorum,这在分布式环境中是必须的,但用户的问题中未提及,可能需要提醒。但用户只关心这三个参数,所以可能不需要深入讨论其他配置。 最后,启动顺序是否正确?引用[4]指出启动顺序应为Hadoop先启动,然后是HBase,关闭时相反。用户可能需要注意这一点,但当前问题不涉及启动顺序,所以可能不需要在这里提及。 总结:用户的配置基本正确,但需要根据实际环境调整hbase.rootdir的主机名和端口,并确认分布式模式是否符合实际部署情况。同时,hbase.unsafe.stream.capability.enforce设为false在分布式下是正确的,但需确保HDFS版本兼容。</think>根据提供的配置参数和引用内容,以下是对$hbase-site.xml$配置的验证分析: ### 1. **hbase.rootdir配置验证** 配置项:$hdfs://localhost:9000/hbase$ - **正确性分析**: - 若HDFS的NameNode地址确为`localhost:9000`(例如单机伪分布式部署),此配置正确。 - 在分布式集群中,需将`localhost`替换为实际的主机名(例如`master`)[^2]。 - 路径`/hbase`需确保HDFS中已预先创建该目录(若未自动生成)。 ### 2. **hbase.cluster.distributed配置验证** 配置项:`true` - **正确性分析**: - `true`表示启用分布式模式,适用于多节点集群部署[^3]。 - 若为单机模式(如开发测试环境),应设置为`false`。 ### 3. **hbase.unsafe.stream.capability.enforce配置验证** 配置项:`false` - **正确性分析**: - 该参数用于兼容HDFS的流式读写能力。在Hadoop 3.x及以上版本中,需设置为`false`以避免文件系统检查失败[^3]。 - 若Hadoop版本为2.x且未启用高级特性,可保留默认值`true`,但`false`更通用。 ### 4. **综合验证结论** 您的配置**基本正确**,但需注意: 1. `hbase.rootdir`需与HDFS的`core-site.xml`中`fs.defaultFS`的地址**完全一致**(如HDFS地址为`hdfs://master:9000`,则需同步修改)。 2. 分布式模式下需额外配置`hbase.zookeeper.quorum`(如未配置,HBase将无法启动)[^2]。 ### 验证步骤建议 1. 检查HDFS是否正常运行: ```bash hdfs dfs -ls / ``` 2. 启动HBase后查看日志: ```bash tail -f $HBASE_HOME/logs/hbase-*.log ``` 若出现HDFS连接错误,需检查`hbase.rootdir`地址[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值