继之前写的设计和使用tip,这里补充一下hbase所有的配置项。之前涉及的一个项目在hbase设计上存在缺陷,当进入时已经存在着很多rowkey设计和读写问题,现在重读hbase文档,把所有的配置项整理一遍。
hbase.tmp.dir:本地文件系统的临时目录,默认是${java.io.tmpdir}/hbase-${user.name};
hbase.rootdir:hbase持久化的目录,被所有regionserver共享,默认${hbase.tmp.dir}/hbase,一般设置为hdfs://namenode.example.org:9000/hbase类似,带全限定名;
hbase.cluster.distributed:hbase集群模式运作与否的标志,默认是false,开启需要设置为true,false时启动hbase会在一个jvm中运行hbase和zk;
hbase.zookeeper.quorum:重要的也是必须设置的,启动zk的服务器列表,逗号分隔,cluster模式下必须设置,默认是localhost,hbase客户端也需要设置这个值去访问zk;
hbase.local.dir:本地文件系统被用在本地存储的目录,默认${hbase.tmp.dir}/local/;
hbase.master.port:hbase master绑定的端口,默认是60000;
hbase.master.info.port:hbase master web 界面的端口,默认是60010,设置为-1可以禁用ui;
hbase.master.info.bindAddress:master web界面的绑定地址,默认是0.0.0.0;
hbase.master.logcleaner.plugins:清理日志的插件列表,逗号分隔,被LogService调用的LogCleanerDelegate,可以自定义,顺序执行,清理WAL和HLog;默认org.apache.hadoop.hbase.master.cleaner.TimeToLiveLogCleaner
hbase.master.logcleaner.ttl:HLog在.oldlogdir目录中生存的最长时间,过期则被Master起线程回收,默认是600000;
hbase.master.hfilecleaner.plugins:HFile的清理插件列表,逗号分隔,被HFileService调用,可以自定义,默认org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner
hbase.master.catalog.timeout:Catalog Janitor从master到META的超时时间,我们知道这个Janitor是定时的去META扫描表目录,来决定回收无用的regions,默认是600000;
fail.fast.expired.active.master:如果master过期,那么不需要从zk恢复,直接终止,默认是false;
hbase.master.dns.interface:master的dns接口,向该接口提供ip,默认是default;
hbase.master.dns.nameserver:master使用的dns主机名或者ip,默认是default;
hbase.regionserver.port:regionserver绑定的端口,默认是60020;
hbase.regionserver.info.port:regionserver的web界面端口,-1取消界面,默认是60030;
hbase.regionserver.info.bindAddress:regionserver的web绑定,默认是0.0.0.0;
hbase.regionserver.info.port.auto:master或者regionserver是否自动搜索绑定的端口,默认是false;
hbase.regionserver.handler.count:regionserver上rpc listener的个数,http://kenwublog.com/hbase-performance-tuning把这个配置称为io线程数,其实雷同,就是说在regionserver上一个处理rpc的handler,默认是30;
hbase.regionserver.msginterval:regionserver向master发消息的间隔,默认3000毫秒;
hbase.regionserver.optionallogflushinterval:如果没有足够的entry触发同步,那么过了这个间隔后HLog将被同步到HDFS,默认是1000毫秒;
hbase.regionserver.regionSplitLimit:regionsplit的最大限额,默认是MAX_INT=2147483647,设置这个限制后,在到达限制时region split就不会再进行;
hbase.regionserver.logroll.period:不管有多少版本,直接roll掉commit log的周期,也就是说一个固定的时间周期,到期就roll,默认是3600000毫秒;
hbase.regionserver.logroll.errors.tolerated:可接受的WAL关闭错误个数,到达后将触发服务器终止;设置为0那么在WAL writer做log rolling失败时就停止region server,默认是2;
hbase.regionserver.hlog.reader.impl:HLog 文件reader的实现类,默认是org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader;
hbase.regionserver.hlog.writer.impl:HLog 文件writer的实现类,默认是org.apache.hadoop.hbase.regionserver.wal.ProtobufLogWriter;
hbase.regionserver.global.memstore.upperLimit:memstore在regionserver内存中的上限,届时新的update被阻塞并且flush被强制写,默认是0.4就是堆内存的40%;阻塞状态持续到regionserver的所有memstore的容量到达hbase.regionserver.global.memstore.lowerLimit;
hbase.regionserver.global.memstore.lowerLimit:memstore在regionserver内存中的最大上限,到达时flush就被强制写,默认是0.38等价于38%的内存容量;
hbase.regionserver.optionalcacheflushinterval:一个edit版本在内存中的cache时长,默认3600000毫秒,设置为0的话则禁止自动flush;
hbase.regionserver.catalog.timeout:regionserver的Catalog Janitor访问META的超时时间,默认是600000;
hbase.regionserver.dns.interface:同master类似~~不讲
hbase.regionserver.dns.nameserver:同master类似
zookeeper.session.timeout:这是个值得说道一下的配置,首先ZK客户端要用,Hbase使用zk的客户端联系总体,同时也被用来启动一个zk server,作为zk的maxSessionTimeout,总的来说就是regionserver与zk的关键参数,如果连接超时,master会重新的balance,regionserver也会被从集群名单中清除,默认是90000;一个问题是如果zk 由hbase自己维护,那么该参数作为regionserver连接是一个值,如果zk在另外的集群,那么zk自己的maxSessionTimeout参数将优先于Hbase的该参数,届时可能会发生超时时间不同的问题;
zookeeper.znode.parent:znode存放root region的地址,默认是root-region-server;
zookeeper.znode.acl.parent:root znode的acl,默认acl;
hbase.zookeeper.dns.interface:zk的dns接口,默认default;
hbase.zookeeper.dns.nameserver:zk的dns服务地址,默认default;
hbase.zookeeper.peerport:zk的peer之间的通讯端口,默认是2888;
hbase.zookeeper.leaderport:zk选leader的通讯端口,默认是3888;
hbase.zookeeper.useMulti:zk支持多重update,要求zk在3.4版本以上,默认是false;
hbase.config.read.zookeeper.config:让hbaseconfig去读zk的config,默认false,也不支持开启,这个功能很搞笑~~个人观点;
hbase.zookeeper.property.initLimit:zk的配置,同步的属性个数限制,默认10个~~没用;
hbase.zookeeper.property.syncLimit:zk的配置,同步时的每次请求的条数,默认5个;
hbase.zookeeper.property.dataDir:zk的配置,snapshot存放的目录,默认是${hbase.tmp.dir}/zookeeper;
hbase.zookeeper.property.clientPort:zk的配置,client连zk的端口,默认2181;
hbase.zookeeper.property.maxClientCnxns:zk的配置,允许接入zk的最大并发连接数的限制,按ip分配,默认300;