多亏了Cloudera的分布,我有一个HBase的主/数据节点+节俭服务器在本地机器上运行,并能编写和测试HBase的客户端程序,并使用它,没有任何问题。
不过,我现在需要在生产中使用节俭,我无法找到如何让储蓄与生产的HBase集群上运行的文件。
据我了解,我需要在客户端节点上运行HBase的,节俭计划,因为节俭计划仅仅是另一个中间客户HBase的。
所以我猜我必须能够以某种方式指定主节点的主机名/ IP到HBase的,节俭? 我会怎么做呢?
此外,在任何建议,就如何在生产规模这个吗? 难道我只需要像这样的设置:
Client <-> Thrift client <-> HBase Master <-> Multiple HBase workers
让它运行
您不必在本地计算机上运行一个节俭的服务器,它可以在任何地方运行,但RegionServers通常是一个好地方*。 在你的代码,然后连接到该服务器。
一个Python例如:
transport = TSocket.TSocket("random-regionserver", 9090)
在那里你会明显地更换random-regionserver
与你正在运行的服务器节俭的服务器之一。
该服务器从平时的地方得到它的配置。 如果你使用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发行启动节俭服务器,这是除了类似hbase-site.xml
可能会坐在不同的目录。
缩放它
一个简单的方法,现在扩大规模是保持所有Regionservers的列表中你的储蓄客户和随机挑选一个上连接。 或者你创建多个连接,并使用一个随机各一次。 有些语言绑定(即PHP)有TSocketPool
在那里你可以在所有服务器通过。 否则,您需要做一些手工的工作。
使用这种技术的所有读取和写入,应在整个旧货服务器集群中的更多或更少的分布。 到达一个节俭服务器每个读或写操作仍然会被翻译成从随后打开的网络连接到正确的RegionServer的(一个或多个),以执行请求的操作节俭服务器基于Java API调用。
这意味着,你会当你使用Java API,你不会得到良好性能。 如果缓存自己区域的位置和命中适当节俭服务器但即使如此,即使在本地服务器上结束了一个额外的Java API调用将作出这可能会有帮助。 HBASE-4460将帮助这种情况,但这不包括在CDH3u4或CDH4。
*有一个问题HBASE-4460这实际上嵌入在RegionServer的旧货服务器。