Hbase_配置说明

来源:互联网 发布:动漫和动画的区别 知乎 编辑:程序博客网 时间:2024/06/05 10:14
  1. 通用和master配置

    hbase.rootdir

    regionserver的数据根目录,用来持久化HBase。例如,要表示hdfs中的’/hbase’目录,namenode 运行在debug01的8020端口,则需要设置为hdfs:// debug01:8020/hbase。这个是必须要设置的项目,默认值本地文件系统的/tmp只能在单机模式使用。

    hbase.master.port

    默认: 60000 HBase Master服务端口。

    hbase.cluster.distributed

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

    hbase.tmp.dir

    本地的临时目录。需要注意的是默认的/tmp会在重启时清空。

    hbase.master.info.port

    默认: 60010 HBase Master web UI的端口. 设置为-1 则不运行web UI。

    hbase.master.info.bindAddress

    默认: 0.0.0.0 HBase Master web UI绑定的IP

    hbase.master.dns.interface

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

    hbase.master.dns.nameserver

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

    hbase.snapshot.enabled

    默认值:true 是否启用snapshot功能。

    hbase.balancer.period

    默认: 300000 Master执行region balancer的间隔。

    hbase.master.logcleaner.ttl

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

    hbase.master.logcleaner.plugins

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

    hbase.rest.port

    默认: 8080 HBase REST server的端口

    hbase.rest.readonly

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

    hbase.coprocessor.master.classes

    默认: null。 Master所使用的协处理器类名。多个类的情况下使用逗号分割。比如使用
    org.apache.hadoop.hbase.security.access.AccessController提供了安全管控能力。

    hbase.rpc.engine

    默认: null。HBase使用的rpc引擎类。一般使用带安全验证的org.apache.hadoop.hbase.ipc.SecureRpcEngine类

  2. RegionServer相关

    hbase.regionserver.port

    默认: 60020 HBase RegionServer绑定的端口

    hbase.regionserver.info.port

    默认: 60030 HBase RegionServer web 界面绑定的端口。设置为-1 则不运行web UI

    hbase.regionserver.info.port.auto

    默认: false RegionServer是否在当hbase.regionsever.info.port已经被占用的时候,可以搜一个空闲的端口绑定。默认关闭。

    hbase.regionserver.info.bindAddress

    默认: 0.0.0.0 HBase RegionServer web 界面的IP地址

    hbase.regionserver.class

    默认: org.apache.hadoop.hbase.ipc.HRegionInterface
    RegionServer接口类。客户端在连接region server的时候会使用到。

    hbase.regionserver.lease.period

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

    hbase.regionserver.handler.count

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

    hbase.regionserver.msginterval

    默认: 3000
    RegionServer 发消息给 Master 时间间隔,单位是毫秒

    hbase.regionserver.optionallogflushinterval

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

    hbase.regionserver.regionSplitLimit

    默认: 2147483647
    region的数量到了这个值后就不会在分裂了。这不是一个region数量的硬性限制。但是起到了一定指导性的作用。默认是MAX_INT(不限制)。

    hbase.regionserver.logroll.period

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

    hbase.regionserver.hlog.enabled

    默认:true 是否启用WAL

    hbase.regionserver.wal.enablecompression

    默认:false 是否对日志压缩

    hbase.regionserver.hlog.reader.impl

    默认: org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader
    HLog file reader 的实现.

    hbase.regionserver.hlog.writer.impl

    默认: org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter
    HLog file writer 的实现.

    hbase.regionserver.thread.splitcompactcheckfrequency

    默认: 20000
    region server 多久执行一次split/compaction 检查.

    hbase.regionserver.nbreservationblocks

    默认: 4
    储备的内存block的数量。当发生out of memory 异常的时候,我们可以用这些内存在RegionServer停止之前做清理操作。

    hbase.regionserver.dns.interface

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

    hbase.regionserver.dns.nameserver

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

    hbase.regions.slop

    默认: 0
    当任一regionserver有average + (average * slop)个region时会执行Rebalance

    hbase.regionserver.global.memstore.upperLimit

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

    hbase.regionserver.global.memstore.lowerLimit

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

    hbase.coprocessor.regionserver.classes

    Master所使用的协处理器类名。多个类的情况下使用逗号分割。比如使用org.apache.hadoop.hbase.security.access.AccessController提供了安全管控能力。
    默认: null。

  3. Client相关参数

    hbase.client.write.buffer

    默认: 2097152
    HTable客户端的写缓冲的默认大小。因为缓冲在客户端和服务端需要申请空间,需要消耗客户端和服务端两个地方的内存。较大的buffer,可以减少RPC的次数,从而提高性能。估算服务器端被占用的内存: hbase.client.write.buffer * hbase.regionserver.handler.count

    hbase.client.pause

    默认: 1000
    客户端操作失败后的重试暂停时间。

    hbase.client.retries.number

    默认: 10
    客户端失败后的最大重试次数。例如region查询,get,Update等操作。

    hbase.client.scanner.caching

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

    hbase.client.keyvalue.maxsize

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

  4. ZooKeeper相关

    hbase.zookeeper.dns.interface

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

    hbase.zookeeper.dns.nameserver

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

    zookeeper.session.timeout

    默认: 180000
    ZooKeeper 会话超时.HBase把这个值传递给zk集群,向他推荐一个会话的最大超时时间。单位是毫秒。

    zookeeper.znode.parent

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

    zookeeper.znode.rootserver

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

    hbase.zookeeper.quorum

    默认: localhost
    Zookeeper集群的地址列表,用逗号分割。例如:”host1.mydomain.com,host2.mydomain.com,host3.mydomain.com”.默认是localhost,如果在hbase-env.sh设置了HBASE_MANAGES_ZK,这些ZooKeeper节点就会和HBase一起启动。

    hbase.zookeeper.peerport

    默认: 2888 ZooKeeper节点使用的端口。

    hbase.zookeeper.leaderport

    默认: 3888 ZooKeeper用来选择Leader的端口。

    hbase.zookeeper.property.initLimit

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

    hbase.zookeeper.property.syncLimit

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

    hbase.zookeeper.property.dataDir

    默认: ${hbase.tmp.dir}/zookeeper
    ZooKeeper的zoo.conf中的配置。 快照的存储位置

    hbase.zookeeper.property.clientPort

    默认: 2181 ZooKeeper的zoo.conf中的配置。 客户端连接的端口

    hbase.zookeeper.property.maxClientCnxns

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

  5. 模式和存储相关

    hbase.table.max.rowsize

    默认:1073741824
    当不指定Get和Scan操作中的scan选项时,获取的最大行的字节大小。超过则抛出RowTooBigException异常。

    hbase.hregion.memstore.flush.size

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

    hbase.server.thread.wakefrequency

    默认: 10000
    Service线程(log roller等)的sleep时间间隔,单位毫秒。

    hbase.hregion.preclose.flush.size

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

    hbase.hregion.memstore.block.multiplier

    默认: 2
    如果memstore有hbase.hregion.memstore.block.multiplier倍数的hbase.hregion.flush.size的大小,就会阻塞update操作。这是为了预防在update高峰期会导致的失控。如果不设上界,flush的时候会花很长的时间来合并或者分割,最坏的情况就是引发out of memory异常。

    hbase.hregion.memstore.mslab.enabled

    默认: false
    启用memStore分配本地缓冲区。这个特性是为了防止在大量写负载的时候堆的碎片过多。这可以减少GC操作的频率。

    hbase.hregion.max.filesize

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

    hbase.hstore.compactionThreshold

    默认: 3
    当一个HStore含有多于这个值的HStoreFiles的时候,会执行一个合并操作,把这HStoreFiles写成一个。这个值越大,需要合并的时间就越长。

    hbase.hstore.blockingStoreFiles

    默认: 7
    当一个HStore含有多于这个值的HStoreFiles的时候,会执行一个合并操作,update会阻塞直到合并完成,直到超过了hbase.hstore.blockingWaitTime的值

    hbase.hstore.blockingWaitTime

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

    hbase.hstore.compaction.max

    默认: 10
    每个“小”合并的HStoreFiles最大数量。

    hbase.hregion.majorcompaction

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

    hbase.mapreduce.hfileoutputformat.blocksize

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

    hfile.block.cache.size

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

    hbase.hash.type

    默认: murmur
    哈希函数使用的哈希算法。可以使用MurmurHash和 jenkins (JenkinsHash). 提供给 bloom filters使用.

  6. 安全相关

    hbase.security.authentication

    HBase的权限管控方式。可选输入为simple和kerberos。
    默认值:simple

    hbase.security.authentication

    是否启用HBase安全验证。
    默认:false

    hbase.superuser

    HBase的超级管理员用户。
    默认值:hbase

    hbase.master.keytab.filehbase.master.kerberos.principalhbase.regionserver.keytab.filehbase.regionserver.kerberos.principal
  7. Thrift

    hbase.thrift.minWorkerThreads

    线程池上创建的最少连接数量。在每个连接上创建新线程,直到至少创建了min个线程为止。Default 16

    hbase.thrift.maxWorkerThreads

    线程池上创建的最大连接数量。超过这个连接数以后服务器将停掉连接。Default 1000

    hbase.thrift.maxQueuedRequests

    请求等待队列能够容纳的最大请求数

    hbase.thrift.htablepool.size.max

    Thrift网关服务器上允许的最大htable表池数量。因为这是每个表名,所以我们假设一个表有1000个默认的工作线程

    hbase.regionserver.thrift.framed

    在服务器端使用TFramedTransport 。这是推荐的Thrift传输方式,在客户端需要类似的设置。设置为false时将选择默认的传输方式

    hbase.regionserver.thrift.compact

    使用TCompactProtocol 二进制协议进行传输。

    hbase.regionserver.thrift.framed.max_frame_size_in_mb

    当使用framed传输时,默认的frame大小

    【问题】
    Python无法读写HBase中的数据,报错:TTransportException: TSocket read 0 bytes
    原因:hbase默认选择TBinaryProtocol作为数据传输协议,而客户端数据协议为Compact。因此,将hbase.regionserver.thrift.compact设置为true
    同时,如果客户端选择了默认的传输方式,则hbase.regionserver.thrift.framed也应该被置为false

原创粉丝点击