美文网首页
hbase(二) : 客户端如何定位region

hbase(二) : 客户端如何定位region

作者: 以梦为马驾驾驾 | 来源:发表于2019-11-02 22:29 被阅读0次

    hbase1.3

    hbase将表横向切分为不同的region, 放在不同的server上, 那么指示客户端去哪里寻找需要的region的元信息存在哪里了呢:
    : 这些元信息也存在了region(root和meta)中, 被放置在server上, 且只有zookeeper知道, 分为root表和meta表的是在0.96版本之前. 但是开发人员发现,对于一般的集群, 仅仅meta表就够用了, 所以在那之后,暂时取消了root表, 取消root表对于第一次读也带来了便利, 少一次获取root表的rpc. 客户端会缓存这些元信息, 以减少后续操作的rpc.

    客户端通过conf创建连接, 所有的连接由HConnectionManager类管理, 这个类提供了根据conf创建HConnection的接口, 且内部维持一个Map, 对于相同的conf, 总是返回相同的HConnection实例, 可以让客户端HTable有效利用元信息缓存. 因为所有的客户端实例都共享相同的HConnection的缓存, 有region的位置, zookeeper信息等, 所以, 对于HConnection实例的清理会不那么方便, 目前是客户端调用#deleteConnection(Configuration)方法, 关闭zookeeper客户端, HConnection实例的资源, 关闭连接服务器的代理.虽然清理Hconnection实例本身不会有大问题(会拖慢关闭的速度, 打印一些zookeeper的错误日志), 但是若是在其他客户端使用HConnection的时候清理, 可能会造成一些问题, 因此, 使用起来仍然小心.

    1. 若不想你的Hconnection被共享, 则创建的时候为"hbase.client.instance.id"指定一个独特的值.
    2. 可以添加钩子来关闭HConnection实例

    相关文章

      网友评论

          本文标题:hbase(二) : 客户端如何定位region

          本文链接:https://www.haomeiwen.com/subject/ifhovctx.html