配置完hbase rest kerbeross后,使用api访问hbase为什么会报错

查看: 2024|回复: 3
请问 HBase开启kerberos认证后
zk是不是必须开啊?
主题帖子积分
新手上路, 积分 40, 距离下一级还需 10 积分
新手上路, 积分 40, 距离下一级还需 10 积分
目前环境是 HBase配置了kerberos认证,但是zk没有配置。 我想用java api去操作HBase的时候&&zk一直弹debug信息。部分栈如下:
[Java] 纯文本查看 复制代码 16:09:24 DEBUG [TGT Renewer for hadoop/namenode-1@MLOGCN.INN]
org.apache.hadoop.security.UserGroupInformation : Current time is 2
16:09:24 DEBUG [TGT Renewer for hadoop/namenode-1@MLOGCN.INN]
org.apache.hadoop.security.UserGroupInformation : Next refresh is 0
o.a.hadoop.hbase.zookeeper.RecoverableZooKeeper : Process identifier=hconnection-0x105fece7 connecting to ZooKeeper ensemble=datanode-3:2181,datanode-4:2181,datanode-5:2181
org.apache.zookeeper.ZooKeeper : Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/ GMT
org.apache.zookeeper.ZooKeeper : Client environment:host.name=namenode-1
org.apache.zookeeper.ZooKeeper : Client environment:java.version=1.8.0_121
org.apache.zookeeper.ZooKeeper : Client environment:java.vendor=Oracle Corporation
org.apache.zookeeper.ZooKeeper : Client environment:java.home=/usr/local/jdk1.8.0_121/jre
org.apache.zookeeper.ZooKeeper : Client environment:java.class.path=mlogplatdemo-1.0-SNAPSHOT.jar
org.apache.zookeeper.ZooKeeper : Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
org.apache.zookeeper.ZooKeeper : Client environment:java.io.tmpdir=/tmp
org.apache.zookeeper.ZooKeeper : Client piler=&NA&
org.apache.zookeeper.ZooKeeper : Client environment:os.name=Linux
org.apache.zookeeper.ZooKeeper : Client environment:os.arch=amd64
org.apache.zookeeper.ZooKeeper : Client environment:os.version=3.10.0-514.el7.x86_64
org.apache.zookeeper.ZooKeeper : Client environment:user.name=hadoop
org.apache.zookeeper.ZooKeeper : Client environment:user.home=/home/hadoop
org.apache.zookeeper.ZooKeeper : Client environment:user.dir=/home/hadoop
org.apache.zookeeper.ZooKeeper : Initiating client connection, connectString=datanode-3:2181,datanode-4:2181,datanode-5:2181 sessionTimeout=90000 watcher=hconnection-0x105fece70x0, quorum=datanode-3:2181,datanode-4:2181,datanode-5:2181, baseZNode=/hbase
16:09:24 DEBUG [
org.apache.zookeeper.ClientCnxn : zookeeper.disableAutoWatchReset is false
INFO [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Opening socket connection to server datanode-3/192.168.130.154:2181. Will not attempt to authenticate using SASL (unknown error)
INFO [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Socket connection established to datanode-3/192.168.130.154:2181, initiating session
16:09:24 DEBUG [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Session establishment request sent on datanode-3/192.168.130.154:2181
INFO [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Session establishment complete on server datanode-3/192.168.130.154:2181, sessionid = 0x159cc42c2cf00d4, negotiated timeout = 40000
16:09:24 DEBUG [main-EventThread] org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher : hconnection-0x105fece70x0, quorum=datanode-3:2181,datanode-4:2181,datanode-5:2181, baseZNode=/hbase Received ZooKeeper Event, type=None, state=SyncConnected, path=null
16:09:24 DEBUG [main-EventThread] org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher : hconnection-0x105fece7-0x159cc42c2cf00d4 connected
16:09:24 DEBUG [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Reading reply sessionid:0x159cc42c2cf00d4, packet:: clientPath:null serverPath:null finished:false header:: 1,3
replyHeader:: 1,,0
request:: '/hbase/hbaseid,F
response:: s{,,6,3,29,0,0,0,67,0,}
16:09:24 DEBUG [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Reading reply sessionid:0x159cc42c2cf00d4, packet:: clientPath:null serverPath:null finished:false header:: 2,4
replyHeader:: 2,,0
request:: '/hbase/hbaseid,F
response:: #ffffffff6303030ffffff8bfffffff0ffffff8cffffffe6ffffff9cffffffda692c52d,s{,,6,3,29,0,0,0,67,0,}
org.apache.hadoop.hbase.util.DynamicClassLoader : Failed to identify the fs of dir /tmp/hbase-hadoop/hbase/lib, ignored
java.io.IOException: No FileSystem for scheme: file
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2644)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2651)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:92)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2687)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2669)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:371)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:170)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:355)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295)
at org.apache.hadoop.hbase.util.DynamicClassLoader.initTempDir(DynamicClassLoader.java:120)
at org.apache.hadoop.hbase.util.DynamicClassLoader.&init&(DynamicClassLoader.java:98)
at org.apache.hadoop.hbase.protobuf.ProtobufUtil.&clinit&(ProtobufUtil.java:243)
at org.apache.hadoop.hbase.ClusterId.parseFrom(ClusterId.java:64)
at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:75)
at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:105)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.retrieveClusterId(ConnectionManager.java:905)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.&init&(ConnectionManager.java:648)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:238)
at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:218)
at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:119)
at com.mlog.dataplat.hbaseutils.HBaseConn.&init&(HBaseConn.java:46)
at com.mlog.dataplat.hbaseutils.HBaseConn.&init&(HBaseConn.java:19)
at com.mlog.dataplat.hbaseutils.HBaseConn$SingletonInstance.&clinit&(HBaseConn.java:56)
at com.mlog.dataplat.hbaseutils.HBaseConn.getTable(HBaseConn.java:64)
at com.mlog.dataplat.hbaseutils.HBaseUtil.getRow(HBaseUtil.java:197)
at com.mlog.dataplat.hbaseservice.HBaseServiceImpl.get_json(HBaseServiceImpl.java:124)
at com.mlog.dataplat.hbaseservice.HBase.get_json(HBase.java:91)
at com.mlog.dataplat.Application.main(Application.java:30)
16:09:25 DEBUG [
org.apache.hadoop.hbase.ipc.AbstractRpcClient : Codec=org.apache.hadoop.hbase.codec.KeyValueCodec@2b662a77, compressor=null, tcpKeepAlive=true, tcpNoDelay=true, connectTO=10000, readTO=20000, writeTO=60000, minIdleTimeBeforeClose=120000, maxRetries=0, fallbackAllowed=false, bind address=null
16:09:25 DEBUG [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Reading reply sessionid:0x159cc42c2cf00d4, packet:: clientPath:null serverPath:null finished:false header:: 3,4
replyHeader:: 3,,0
request:: '/hbase/meta-region-server,F
response:: #ffffffff96f6e3affffff8b1b1ffffffb546a16aafffffff947d18ffffffd4ffffff84ffffff9bffffffacffffffa62b100183,s{,,7,7,0,0,0,0,63,0,}
16:09:25 DEBUG [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Reading reply sessionid:0x159cc42c2cf00d4, packet:: clientPath:null serverPath:null finished:false header:: 4,8
replyHeader:: 4,,0
request:: '/hbase,F
response:: v{'replication,'meta-region-server,'rs,'splitWAL,'backup-masters,'table-lock,'flush-table-proc,'region-in-transition,'online-snapshot,'master,'running,'recovering-regions,'tokenauth,'draining,'namespace,'hbaseid,'table}
16:09:25 DEBUG [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Reading reply sessionid:0x159cc42c2cf00d4, packet:: clientPath:null serverPath:null finished:false header:: 5,4
replyHeader:: 5,,0
request:: '/hbase/meta-region-server,F
response:: #ffffffff96f6e3affffff8b1b1ffffffb546a16aafffffff947d18ffffffd4ffffff84ffffff9bffffffacffffffa62b100183,s{,,7,7,0,0,0,0,63,0,}
16:09:25 DEBUG [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Reading reply sessionid:0x159cc42c2cf00d4, packet:: clientPath:null serverPath:null finished:false header:: 6,8
replyHeader:: 6,,0
request:: '/hbase,F
response:: v{'replication,'meta-region-server,'rs,'splitWAL,'backup-masters,'table-lock,'flush-table-proc,'region-in-transition,'online-snapshot,'master,'running,'recovering-regions,'tokenauth,'draining,'namespace,'hbaseid,'table}
16:09:25 DEBUG [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Reading reply sessionid:0x159cc42c2cf00d4, packet:: clientPath:null serverPath:null finished:false header:: 7,4
replyHeader:: 7,,0
request:: '/hbase/meta-region-server,F
response:: #ffffffff96f6e3affffff8b1b1ffffffb546a16aafffffff947d18ffffffd4ffffff84ffffff9bffffffacffffffa62b100183,s{,,7,7,0,0,0,0,63,0,}
16:09:25 DEBUG [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Reading reply sessionid:0x159cc42c2cf00d4, packet:: clientPath:null serverPath:null finished:false header:: 8,8
replyHeader:: 8,,0
request:: '/hbase,F
response:: v{'replication,'meta-region-server,'rs,'splitWAL,'backup-masters,'table-lock,'flush-table-proc,'region-in-transition,'online-snapshot,'master,'running,'recovering-regions,'tokenauth,'draining,'namespace,'hbaseid,'table}
16:09:25 DEBUG [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Reading reply sessionid:0x159cc42c2cf00d4, packet:: clientPath:null serverPath:null finished:false header:: 9,4
replyHeader:: 9,,0
request:: '/hbase/meta-region-server,F
response:: #ffffffff96f6e3affffff8b1b1ffffffb546a16aafffffff947d18ffffffd4ffffff84ffffff9bffffffacffffffa62b100183,s{,,7,7,0,0,0,0,63,0,}
16:09:25 DEBUG [main-SendThread(datanode-3:2181)]
org.apache.zookeeper.ClientCnxn : Reading reply sessionid:0x159cc42c2cf00d4, packet:: clientPath:null serverPath:null finished:false header:: 10,8
replyHeader:: 10,,0
request:: '/hbase,F
response:: v{'replication,'meta-region-server,'rs,'splitWAL,'backup-masters,'table-lock,'flush-table-proc,'region-in-transition,'online-snapshot,'master,'running,'recovering-regions,'tokenauth,'draining,'namespace,'hbaseid,'table}
望指点下。&&我好懵逼啊
主题帖子积分
高级会员, 积分 2454, 距离下一级还需 2546 积分
高级会员, 积分 2454, 距离下一级还需 2546 积分
即使不配置认证,zookeeper在hbase中也是必须的。楼主需配置zookeeper
主题帖子积分
新手上路, 积分 40, 距离下一级还需 10 积分
新手上路, 积分 40, 距离下一级还需 10 积分
即使不配置认证,zookeeper在hbase中也是必须的。楼主需配置zookeeper
我知道zk是必须的。我遇到的问题是: 我hbase配置了kerberos。 然后用javaapi去链接的时候。一直报上面的信息。&&可是我并不知道是哪里出了问题。
主题帖子积分
高级会员, 积分 1585, 距离下一级还需 3415 积分
高级会员, 积分 1585, 距离下一级还需 3415 积分
我知道zk是必须的。我遇到的问题是: 我hbase配置了kerberos。 然后用javaapi去链接的时候。一直报上面的 ...
在core-site.xml文件中添加如下内容
&property&&&
& && &&&&name&fs.hdfs.impl&/name&&&
& && &&&&value&org.apache.hadoop.hdfs.DistributedFileSystem&/value&&&
& && &&&&description&The FileSystem for hdfs: uris.&/description&&&
&/property&&&
&property&&&
& && &&&&name&fs.file.impl&/name&&&
& && &&&&value&org.apache.hadoop.fs.LocalFileSystem&/value&&&
& && &&&&description&The FileSystem for hdfs: uris.&/description&&&
&/property&&&
生效后,再试试
积极上进,爱好学习
经常参与各类话题的讨论,发帖内容较有主见
经常帮助其他会员答疑
积极宣传本站,为本站带来更多注册会员
站长推荐 /4
云计算hadoop视频大全(新增 yarn、flume|storm、hadoop一套视频
等待验证会员请验证邮箱
新手获取积分方法
技术类问答,解决学习openstack,hadoop生态系统中遇到的问题
Powered by拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(39afaeda-ua98).
重新安装浏览器,或使用别的浏览器hbase问题总结 -
- ITeye博客
博客分类:
hbase问题总结
1 java.io.IOException: java.io.IOException: java.lang.IllegalArgumentException: offset (0) + length (8) exceed the capacity of the array: 4
做简单的incr操作时出现,原因是之前put时放入的是int
长度为 vlen=4 ,不适用增加操作,只能改为long型 vlen=8
2 写数据到column时 org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NotServingRegionException: 1 time, servers with issues: 10.xx.xx.37:60020,
或 是 org.apache.hadoop.hbase.NotServingRegionException: Region is not online:
这两种出错,master-status中出现Regions in Transition 长达十几分钟,一直处于PENDING_OPEN状态,导致请求阻塞。目前把10.xx.xx.37这台机器下线,运行一夜稳定,没有出现因split造 成的阻塞。怀疑是机器问题。Hmaster的日志显示这台region server 不停的open close,不做任何split 或flush
RIT 的全称是region in transcation. 每次hbase master 对region 的一个open 或一个close 操作都会向Master 的RIT中插入一条记录,因为master 对region 的操作要保持原子性,region 的 open 和 close 是通过Hmaster 和 region server 协助来完成的. 所以为了满足这些操作的协调,回滚,和一致性.Hmaster 采用了 RIT 机制并结合Zookeeper 中Node的状态来保证操作的安全和一致性.
OFFLINE, // region is in an offline state
PENDING_OPEN, // sent rpc to server to open but has not begun
OPENING, // server has begun to open but not yet done
OPEN, // server opened region and updated meta
PENDING_CLOSE, // sent rpc to server to close but has not begun
CLOSING, // server has begun to close but not yet done
CLOSED, // server closed region and updated meta
SPLITTING, // server started split of a region
SPLIT // server completed split of a region
进一步发现是load balance的问题 region server不停重复的被open close,参考/hbase/book.html#regions.arch.assignment
重启了region server正常
后来的代码运行中又出现region not on line ,是NotServingRegionException抛出的,原因是“Thrown by a region server if it is sent a request for a region it is not serving.”
为什么会不断请求一个离线的region?且这种错误集中在150个中的3个region,追踪服务器端log,region 会被CloseRegionHandler关掉,过了20分钟左右才重新打开,关掉后客户端请求的region仍然是这个关闭的region?
3 设置开关不写入hbase并不生效
代码初上线,增加了开关,万一hbase有问题则关闭掉开关。但是出现问题了发现程序卡死,目前认为原因是不断加长的retry机制,60秒超时,1-32秒的10次retry,万一出问题,切换开关也没有用。
需要配置rpc超时参数和retry time解决它
4 flush、split、compact导致stop-the-world
出现长时间的flush split操作导致hbase服务器端无法响应请求。需要调整region大小,并测试获取flush次数
5 hbase参数设置
hbase.regionserver.handler.count
考虑到sas盘的io能力,设置为50
hbase.hregion.memstore.block.multiplier
当memstore的大小为hbase.hregion.memstore.flush.size的multiplier倍数时,阻塞读写进行flush,默认为2
6 region server crush
Regionserver crash的原因是因为GC时间过久导致Regionserver和zookeeper之间的连接timeout。
Zookeeper内部的timeout如下:
minSessionTimeout 单位毫秒,默认2倍tickTime。
maxSessionTimeout 单位毫秒,默认20倍tickTime。
(tickTime也是一个配置项。是Server内部控制时间逻辑的最小时间单位)
如果客户端发来的sessionTimeout超过min-max这个范围,server会自动截取为min或max,然后为这个Client新建一个Session对象。
默认的tickTime是2s,也就是客户端最大的timeout为40s,及时regionserver的zookeeper.session.timeout设置为60s也没用。
将zookeeper集群的tickTime修改为9s,最大的timeout为180s,同时修改zookeeper.session.timeout为120s,这样可以避免GC引发timeout。
添加参数hbase.regionserver.restart.on.zk.expire为true,改参数的作用是当regionserver和zookeeper之间timeout之后重启regionserver,而不是关掉regionserver。
7 代码问题导致死锁
master慢查询日志中一个查询达到了2小时,最终导致服务器响应变慢,无法应对大写入。追究原因是getColumns操作一下取出十几万的数据,没有做分页;更改程序分页500条左右,目前没有出现问题
8 operation too slow
05:30:39,141 WARN org.apache.hadoop.ipc.HBaseServer: (operationTooSlow): {"processingtimems":69315,"ts":4775807,"client":"10.75.0.109:34780","starttimems":5,"queuetimems":0,"class":"HRegionServer","responsesize":0,"method":"delete","totalColumns":1,"table":"trackurl_status_list","families":{"sl":[{"timestamp":5,"qualifier":"zzzn1VlyG","vlen":0}]},"row":""}
删除一行数据用了69315s
而且神奇的是row为"",row无法设置null进去,但可以增加空串。做了一轮测试
删除不存在的column
耗时 700ms
删除存在的column
非空row-key
删除任意的column
不清楚是否是个bug,也还不知道怎么就传了个空row-key进去,目前策略为在代码端避免对空row-key做操作。
9 responseTooSlow
17:52:06,619 WARN org.apache.hadoop.ipc.HBaseServer: (responseTooSlow): {"processingtimems":1156438,"call":"multi(org.apache.hadoop.hbase.client.MultiAction@3dbb29e5), rpc version=1, client version=29, methodsFingerPrint=-","client":"10.75.0.109:35245","starttimems":7,"queuetimems":0,"class":"HRegionServer","responsesize":0,"method":"multi"}
引用hbase说明:The output is tagged with operation e.g. (operationTooSlow) if the call was a client operation, such as a Put, Get, or Delete, which we expose detailed fingerprint information for. If not, it is tagged (responseTooSlow) and still produces parseable JSON output, but with less verbose information solely regarding its duration and size in the RPC itself.
目前做法是取消了对某个key多个column的批量delete操作避免阻塞,没有发现新问题
10 output error
17:52:06,812 WARN org.apache.hadoop.ipc.HBaseServer: IPC Server Responder, call get([B@61574be4, {"timeRange":[0,4775807],"totalColumns":1,"cacheBlocks":true,"families":{"c":["ALL"]},"maxVersions":1,"row":"zOuu6TK"}), rpc version=1, client version=29, methodsFingerPrint=- from 10.75.0.151:52745: output error
11 rollbackMemstore问题
较频繁出现这样的log:
10:21:49,887 DEBUG org.apache.hadoop.hbase.regionserver.HRegion: rollbackMemstore rolled back 0 keyvalues from start:0 to end:0
方法解释为:Remove all the keys listed in the map from the memstore. This method is called when a Put has updated memstore but subequently fails to update the wal. This method is then invoked to rollback the memstore.
很奇怪的是开始和结束的index都为0
方法中循环: for (int i = i & i++) {
因此是空数据,空回滚。需要进一步调查
12 新上线一个region server
导致region not on line
往错误的region server服务器请求region
13 请求不存在的region,重新建立tablepool也不起作用
请求的时间戳
最新region rowkey相关时间戳
最终发现维持region location表的属性是在HConnectionManager中
get Get,delete Delete,incr Increment 是在 ServerCallable类 withRetries处理
情景1 若有出错(SocketTimeoutException ConnectException RetriesExhaustedExcetion),则清理regionServer location
情景2 numRetries 若设置为1 ,则 循环只执行一次,connect(tries!=0) 为connect(false),即reload=false,不会进行location更新,当为numRetries&1的时候才会重新获取
get Gets List, put Put或Puts List,delete Deletes List 则调用HConnectionManager的 processBatch去处理,当发现批量get或者put、delete操作结果有问题,则刷新regionServer location
设置 numRetries为&1次, 我这里是3次,解决问题
14 zookeeper.RecoverableZooKeeper(195): Possibly transient ZooKeeper exception: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master
这是在我单机做测试时出现的,无论是从ide或是bin启动hbase,从shell里可以正常连接,从测试程序中无法连接,zookeeper端口是2181,客户端端口应该与zookeeper无关才对,
最终更改配置21818端口换为2181 运行正常,应该是单机环境才要做这种更改。
&property&
&name&hbase.zookeeper.property.clientPort&/name&
&value&2181&/value&
&description&Property from ZooKeeper's config zoo.cfg.
The port at which the clients will connect.
&/description&
&/property&
hbase-site.xml配置
hbase.tmp.dir
本地文件系统tmp目录,一般配置成local模式的设置一下,但是最好还是需要设置一下,因为很多文件都会默认设置成它下面的
&property&
&name&hbase.tmp.dir&/name&
&value&/mnt/dfs/11/hbase/hbase-tmp&/value&
&/property&
${java.io.tmpdir}/hbase-${user.name}
写到系统的/tmp目录
hbase.rootdir
HBase集群中所有RegionServer共享目录,用来持久化HBase的数据,一般设置的是hdfs的文件目录,如hdfs://namenode.
&property&
&name&hbase.rootdir&/name&
&value&hdfs://mycluster/hbase&/value&
&/property&
${hbase.tmp.dir}/hbase
hbase.cluster.distributed
集群的模式,分布式还是单机模式,如果设置成false的话,HBase进程和Zookeeper进程在同一个JVM进程。
线上配置为true
默认值:false
hbase.zookeeper.quorum
zookeeper集群的URL配置,多个host中间用逗号(,)分割
&property&
&name&hbase.zookeeper.quorum&/name&
&value&inspurXXX.xxx.xxx.org,inspurXXX.xxx.xxx.org,inspurXXX.xxx.xxx.org,inspurXXX.xxx.xxx.org,&/value&
&/property&
默认值:localhost
hbase.zookeeper.property.dataDir
ZooKeeper的zoo.conf中的配置。 快照的存储位置
线上配置:/home/hadoop/zookeeperData
默认值:${hbase.tmp.dir}/zookeeper
zookeeper.session.timeout
客户端与zk连接超时时间
线上配置:min)
默认值:min)
hbase.zookeeper.property.tickTime
Client端与zk发送心跳的时间间隔
线上配置:6000(6s)
默认值:6000
hbase.security.authentication
HBase集群安全认证机制,目前的版本只支持kerberos安全认证。
线上配置:kerberos
默认值:空
hbase.security.authorization
HBase是否开启安全授权机制
线上配置: true
默认值: false
hbase.regionserver.kerberos.principal
regionserver的kerberos认证的主体名称(由三部分组成:服务或用户名称、实例名称以及域名)
线上配置:hbase/_HOST@HADOOP.
hbase.regionserver.keytab.file
regionserver keytab文件路径
线上配置:/home/hadoop/etc/conf/hbase.keytab
默认值:无
hbase.master.kerberos.principal
master的kerberos认证的主体名称(由三部分组成:服务或用户名称、实例名称以及域名)
线上配置:hbase/_HOST@HADOOP.
hbase.master.keytab.file
master keytab文件路径
线上配置:/home/hadoop/etc/conf/hbase.keytab
默认值:无
hbase.regionserver.handler.count
regionserver处理IO请求的线程数
线上配置:50
默认配置:10
hbase.regionserver.global.memstore.upperLimit
RegionServer进程block进行flush触发条件:该节点上所有region的memstore之和达到upperLimit*heapsize
线上配置:0.45
默认配置:0.4
hbase.regionserver.global.memstore.lowerLimit
RegionServer进程触发flush的一个条件:该节点上所有region的memstore之和达到lowerLimit*heapsize
线上配置:0.4
默认配置:0.35
hbase.client.write.buffer
客户端写buffer,设置autoFlush为false时,当客户端写满buffer才flush
线上配置:M)
默认配置:M)
hbase.hregion.max.filesize
单个ColumnFamily的region大小,若按照ConstantSizeRegionSplitPolicy策略,超过设置的该值则自动split
线上配置:(100G)
默认配置:(20G)
hbase.hregion.memstore.block.multiplier
超过memstore大小的倍数达到该值则block所有写入请求,自我保护
线上配置:8(内存够大可以适当调大一些,出现这种情况需要客户端做调整)
默认配置:2
hbase.hregion.memstore.flush.size
memstore大小,当达到该值则会flush到外存设备
线上配置:(100M)
默认值: (128M)
hbase.hregion.memstore.mslab.enabled
是否开启mslab方案,减少因内存碎片导致的Full GC,提高整体性能
线上配置:true
默认配置: true
hbase.regionserver.maxlogs
regionserver的hlog数量
线上配置:128
默认配置:32
hbase.regionserver.hlog.blocksize
hlog大小上限,达到该值则block,进行roll掉
线上配置:(512M)
默认配置:hdfs配置的block大小
paction.min
进入minor compact队列的storefiles最小个数
线上配置:10
默认配置:3
paction.max
单次minor compact最多的文件个数
线上配置:30
默认配置:10
hbase.hstore.blockingStoreFiles
当某一个region的storefile个数达到该值则block写入,等待compact
线上配置:100(生产环境可以设置得很大)
默认配置: 7
hbase.hstore.blockingWaitTime
block的等待时间
线上配置:90000(90s)
默认配置:90000(90s)
hbase.hregion.majorcompaction
触发major compact的周期
线上配置:0(关掉major compact)
默认配置:d)
hbase.paction.large
large compact线程池的线程个数
线上配置:5
默认配置:1
hbase.paction.small
small compact线程池的线程个数
线上配置:5
默认配置:1
hbase.paction.throttle
compact(major和minor)请求进入large和small compact线程池的临界点
线上配置:(10G)
默认配置:2 * this.minFilesToCompact * this.region.memstoreFlushSize
paction.max.size
minor compact队列中storefile文件最大size
线上配置:(20G)
默认配置:Long.MAX_VALUE
hbase.rpc.timeout
RPC请求timeout时间
线上配置:min)
默认配置:60000(10s)
hbase.regionserver.region.split.policy
split操作默认的策略
线上配置: org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy(采取老的策略,自己控制split)
默认配置: org.apache.hadoop.hbase.regionserver.IncreasingToUpperBoundRegionSplitPolicy(在 region没有达到maxFileSize的前提下,如果fileSize达到regionCount * regionCount * flushSize则进行split操作)
hbase.regionserver.regionSplitLimit
单台RegionServer上region数上限
线上配置:150
默认配置:
hbase-env.sh配置
指定系统运行环境
export JAVA_HOME=/usr/lib/jvm/java-6-sun/ #JDK HOME
export HBASE_HOME=/home/hadoop/cdh4/hbase-0.94.2-cdh4.2.1 # HBase 安装目录
export HBASE_LOG_DIR=/mnt/dfs/11/hbase/hbase-logs #日志输出路径
JVM参数调优
export HBASE_OPTS="-verbose:gc -XX:+PrintGCDetails -Xloggc:${HBASE_LOG_DIR}/hbase-gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime \
-server -Xmx20480m -Xms20480m -Xmn10240m -Xss256k
-XX:SurvivorRatio=4 -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=15 \
-XX:ParallelGCThreads=16 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection \
-XX:+CMSClassUnloadingEnabled
-XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSMaxAbortablePrecleanTime=5000
.每一个Region都有一个Memstore,Memstore默认大小为128MB,可通过hbase.hregion.memstore.flush.size更改;
Region会随着split操作逐步增多,为了控制 Memstore之和导致OOM错误,在hbase老版本中是通过 hbase.regionserver.global.memstore.upperLimit和 hbase.regionserver.global.memstore.lowerLimit进行控制,新版本中使用 hbase.regionserver.global.memstore.size和 hbase.regionserver.global.memstore.lowerLimit控制;
Hbase-env.sh中HEAP_SIZE=4G时,老版本 Hbase.regionserver.global.memstore.upperLimit(默认 HEAP_SIZE*0.4)=1.6G,hbase.regionserver.global.memstore.lowerLimit(默认 HEAP_SIZE*0.35)=1.4G,新版本hbase.regionserver.global.memstore.size(默认 HEAP_SIZE*0.4)=1.6G和 Hbase.regionserver.global.memstore.lowerLimit(hbase.regionserver.global.memstore.size*HEAP_SIZE*0.95)=1.52G;
Memstore总和达到第一个临界值,会在所有memstore中选择一个最大的那个进行flushing,此时不会阻塞写;
Memstore总和达到第二个临界值,会阻塞所有的读写,将当前所有memstore进行flushing。
每一个Region都有一个BlockCache,BlockCache总和默认打下为HEAP_SIZE乘以0.4,默认是通过hfile.block.cache.size设置;
所有的读请求,先到BlockCache中查找,基本Memstore中有的值在BlockCache中也都有,找不到再去Hfile中找。
hbase中默认规定Memstore总和最大值 (hbase.regionserver.global.memstore.size默认0.4)和BlockCache总和最大值 (hfile.block.cache.size默认0.4)之和不能大于0.8,因为要预留0.2的HEAP_SIZE供其他操作使用,这个可详见 hbase源代码Org.apache.hadoop.hbase.io.util.HeapMemorySizeUtil.java文件。
浏览: 321684 次
来自: 杭州
table中无数据
为什么都是只有问没有答,哭晕在厕所
不完整,缺com.tcs.org.demostic.pub.u ...

我要回帖

更多关于 hbase shell kerberos 的文章

 

随机推荐