我正在尝试配置一个 hbase 客户端来连接到在泊客容器中运行的 HBase。鉴于它是出于集成测试目的,我们可以将主服务器和区域服务器硬编码(将它们全部放在同一个地址)。
我们使用云集分布,但我想这应该是一样的。我已经在组织.apache.hadoop.conf.configuration中定义了“hbase.master”。
configuration.set("hbase.master",config.getMaster ());
它似乎被接受了(看了SO中提到这一点的其他问题)。
但是尝试为区域服务器执行类似的操作,如http://archive.cloudera.com/cdh5/cdh/5/hbase-0.98.6-cdh5.3.4/book/config.files.html
configuration.set(“hbase.regionserver.port”,config.getRegionserver())
我可以看到,这仍然是从Zookeeper中检索的,因为错误显示无法使用套接字连接到60002,这是regionserver端口号(我放在配置中的端口号与Docker中声明的端口号不同。
第一个更简单的方法是将条目放在/etc/hosts中,以便hbase服务器名称指向环回地址。
由于我们不想修改CI环境中的配置文件,因此我们发现的解决方法是根据此答案设置我们自己的主机名解析器 https://stackoverflow.com/a/43870031/3774176
仅适用于JDK8,但除此之外,还有类似的解决方案。
问题内容: 我为远程服务器编写了以下hbase客户端类: 它引发了一些异常: 您能告诉我为什么会引发异常,代码有什么问题以及如何解决它。 问题答案: 由于您的HBase服务器的hosts文件,因此会发生此问题。 您只需要编辑HBase服务器的/ etc / hosts文件。 从该文件中删除localhost条目,然后将localhost条目放在HBase服务器IP的前面。 例如,您的HBase服务
创建 HTTP 客户端 使用默认选项创建一个HttpClient实例,如下所示: HttpClient client = vertx.createHttpClient(); 如果您想要在创建时配置客户端的选项,如下所示: HttpClientOptions options = new HttpClientOptions().setKeepAlive(false); HttpClient clien
创建 TCP 客户端 最简单的方法来创建一个 TCP 客户端,使用默认选项如下所示: NetClient client = vertx.createNetClient(); 配置 TCP 客户端 如果你不想使用默认值,则创建TCP 客户端时,通过传入NetClientOptions实例可以配置: NetClientOptions options = new NetClientOptions().s
问题内容: 我有以下代码: 为什么这不将“ bar”写到我的文本文件中,但提示“ 42”? 注意:此问题的早期修订版本明确涉及服务器上的PHP和客户端上的JavaScript。当一种语言在客户端上运行而另一种语言在服务器上运行时,问题和解决方案的本质对于 任何 一对语言都是相同的(即使它们是相同的语言)。当您看到有关特定语言的答案时,请考虑到这一点。 问题答案: 您的代码分为两个完全独立的部分,
我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se
问题内容: 我有以下代码: 为什么这不将“ bar”写入我的文本文件,而是发出“ 42”警报? 注意:此问题的早期修订版本明确涉及服务器上的PHP和客户端上的JavaScript。当一种语言在客户端上运行而另一种语言在服务器上运行时,问题和解决方案的本质对于 任何 一对语言都是相同的(即使它们是相同的语言)。当您看到有关特定语言的答案时,请考虑到这一点。 问题答案: 您的代码分为两个完全独立的部分