gpt4 book ai didi

HBase 节俭 : how to connect to remote HBase master/cluster?

转载 作者:行者123 更新时间:2023-12-05 00:00:01 25 4
gpt4 key购买 nike

感谢 Cloudera 发行版,我在本地机器上运行了一个 HBase master/datanode + Thrift 服务器,并且可以编写和测试 HBase 客户端程序并使用它,没问题。

但是,我现在需要在生产中使用 Thrift,并且我无法找到有关如何让 Thrift 与生产 HBase 集群一起运行的文档。

据我了解,我需要在 上运行 hbase-thrift 程序。客户端节点因为 Thrift 程序只是 HBase 的另一个中间客户端。

所以我猜我必须能够以某种方式将主节点主机名/IP 指定给 HBase-Thrift?我该怎么做?

另外,关于如何在生产中扩大规模有什么建议吗?我只需要这样的设置:

Client <-> Thrift client <-> HBase Master <-> Multiple HBase workers

最佳答案

让它运行

您不必在本地计算机上运行 Thrift 服务器,它可以在任何地方运行,但 RegionServers 通常是一个好地方*。然后在代码中连接到该服务器。

一个 Python 示例:

transport = TSocket.TSocket("random-regionserver", 9090)

您显然会替换 random-regionserver使用您正在运行 Thrift 服务器的服务器之一。

该服务器从通常的位置获取其配置。如果您使用的是 CDH,那么您会在 /etc/hbase/conf/hbase-site.xml 中找到配置。你需要添加一个属性 hbase.zookeeper.quorum :
<property>
<name>hbase.zookeeper.quorum</name>
<value>list of your zookeeper servers</value>
</property>

当您从下载的 Apache 发行版启动 Thrift 服务器时,这类似,除了 hbase-site.xml可能会位于不同的目录中。

扩大规模

现在扩大规模的一种简单方法是在 Thrift 客户端中保留所有 Regionserver 的列表,并在连接时随机选择一个。或者您创建多个连接并每次使用一个随机连接。某些语言绑定(bind)(即 PHP)有 TSocketPool您可以在其中传递所有服务器。否则,您需要做一些手动工作。

使用这种技术,所有读取和写入都应该或多或少地分布在集群中的 Thrift 服务器上。每个到达 Thrift 服务器的读取或写入操作仍将被转换为来自 Thrift 服务器的基于 Java 的 API 调用,然后打开与正确 Regionserver(s) 的网络连接以执行请求的操作。

这意味着您将无法获得与使用 Java API 时一样好的性能。如果您自己缓存区域位置并点击适当的 Thrift 服务器,这可能会有所帮助,但即便如此,即使它最终在本地服务器上,也会进行额外的 Java API 调用。 HBASE-4460将有助于这种情况,但这不包含在 CDH3u4 或 CDH4 中。

* 有问题 HBASE-4460它实际上在 Regionserver 中嵌入了 Thrift 服务器。

关于HBase 节俭 : how to connect to remote HBase master/cluster?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10919618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com