我最近一直在做很多关于HBase的阅读,我对HMaster和Zookeeper在HBase架构中的作用感到困惑。
我问的原因是,如果我使用Java,我会使用HConnectionManager类来创建连接。看起来HConnectionManager已经有一个可用区域位置的缓存。构建缓存的原因是先前提出了一些请求,但如果缓存不存在则会发生这种情况,这是第一个请求。
谁接受了第一个HBase请求,它是动物园管理员的法定人数吗?我们正在为HBaseConfiguration类提交hbase-site.xml文件。
我读到的另一件事是元信息被缓存在"客户端",即使在HBase REST的情况下也是如此?这里的客户端是HMaster还是正在进行REST调用的实际用户。如果是这样,如果元数据暴露给客户端,它就不会暴露安全威胁。
答案 0 :(得分:0)
客户端连接到ZooKeeper以获取最新状态。 HBaseMaster的作用是确保此列表正确(即在启动时将区域分配给regionservers,失败等)。客户只会出于管理目的联系HBaseMaster,例如创建表,更改其结构等(通过HBaseAdmin类)。您可以阅读更多相关信息here。
在HBase REST的情况下,客户端向REST服务器发送REST请求,该服务器内部拥有HBase客户端
答案 1 :(得分:0)
以HBase-1.0.1.1为基础回答:
1.当客户请求数据时,谁会收到该请求?
a)查看zookeeper的hbase:元区域位置和缓存元区域位置以供将来使用。
b)扫描区域服务器中的hbase:meta并获取我们需要的区域位置。客户端还缓存区域位置。
c)请求区域服务器。
2.谁接受了第一个HBase请求,它是动物园管理员的法定人数吗?
如果全部是第一个,则为是,否则可能是元区域或用户表区域。
<强> 3.security 强>
你可以使用kerberos。它支持HBase。