1.zookeeper返回的hbase地址是hostname,外网如何访问?

如果需要直接访问zk获取hbase地址进而访问,目前需要本机配置host ip  hostname 如果是要长期解决方法,那么只能通过搭建个Nginx来转发

2.Hbase本地Java测试写数据失败,端口访问不到

答: 这个是因为搭建的单机版本,然后regionServer配置的hostname, 在启动的时候会绑定端口hostname:16201(见/bin/local-regionservers.sh), 然后解析ubuntu的时候绑定的是127.0.0.1:16201, 所以外面访问不到. 解决: 修改hbase所在机器的host

127.0.0.1  myhostname
改为
10.0.0.1 myhostname

集群模式也一样,即/etc/hosts里面配置的hostname要指向本机ip 使用命令hostname查看本机hostname http://blog.csdn.net/chaijunkun/article/details/44238163 ps: (其实搭建hbase时候本应就指定好/etc/hosts里面的hostname对应具体ip,由于本人第一次搭建因此没注意所以踩了这个坑)


3.TSDB使用rest接口写数据OK,但是使用client写入不进数据?

现象:metric创建成功,但是没有数据 代码如下:

package net.opentsdb.core;

import com.stumbleupon.async.Callback;
import com.stumbleupon.async.Deferred;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import net.opentsdb.utils.Config;
import org.hbase.async.HBaseClient; import java.io.IOException;
import java.util.HashMap;
import java.util.Map; /**
* Created by hai on 16/12/22.
*/
public class TSDBExtTest extends TestCase
{
private TSDBExt tsdbExt; /**
* Create the test case
*
* @param testName name of the test case
*/
public TSDBExtTest(String testName )
{
super( testName );
} /**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( TSDBExtTest.class );
} public void setUp() throws IOException {
String zkquorum = System.getenv("HBASE_ZK");
String zkpath = System.getenv("HBASE_ZK_PATH");
if (null == zkpath) {
zkpath = "/hbase";
}
HBaseClient hbaseClient = new HBaseClient(zkquorum, zkpath);
Config opentsdbConfig = new Config(false);
opentsdbConfig.overrideConfig("tsd.storage.hbase.data_table", "tsdb");
opentsdbConfig.overrideConfig("tsd.storage.hbase.uid_table", "tsdb-uid");
opentsdbConfig.overrideConfig("tsd.core.auto_create_metrics", "true");
opentsdbConfig.overrideConfig("tsd.storage.enable_compaction", "false");
TSDB tsdb = new TSDB(hbaseClient, opentsdbConfig);
tsdbExt = new TSDBExt(tsdb, hbaseClient);
} public void tearDown() {
tsdbExt.shutdown();
}
/**
* Rigourous Test :-)
*/
public void testAtomicIncrementPointBy()
{
long ts = System.currentTimeMillis();
long v1 = 3;
Map<String, String> tags = new HashMap<>();
tags.put("tagk1", "tagv1");
tags.put("tagk2", "tagv2");
Deferred<Long> result = tsdbExt.atomicIncrementPointBy("test.ut10", ts, v1, tags);
result.addCallback(new Callback<Object, Long>() {
@Override
public Object call(Long aLong) throws Exception {
System.out.println("success result: " + aLong);
return null;
}
});
result.addErrback(new Callback<Object, Object>() {
@Override
public Object call(Object o) throws Exception {
System.out.println("error result: " + o);
return null;
}
}); assertTrue( true );
//Thread.sleep(100000);//bug解决
}
}

查询openTSDB结果如下:

  • 第一次尝试 看源码,第一次猜测是因为调用sendRPC()有buffer,并且默认flushInternal是1,因此请求被缓存到本地,然后等到缓存满了才发到服务端. 于是设置:
hbaseClient.setFlushInterval((short)0);
hbaseClient.setIncrementBufferSize(100);
  • 1
  • 2

然后重新run,发现依旧没有数据。

  • 第二次尝试 直接debug,一行行的走,此时发现一个非常奇怪的问题,即debug的时候发现数据写入成功了!但是不debug就失败。仔细一想,这玩意是个rpcCallBack,然后debug和不debug不同的只是我的主线程结束时间。 于是在代码最后加了句sleep(100000);搞定。

(貌似和buffer没关系?那网上说为了提高效率,把buffer设大有什么用? 第二个就是代码里面明明是buffer了,为什么还是一次写入了.代码还没细看,之后慢慢研究)

至此,问题解决.

http://blog.csdn.net/jinzhencs/article/details/53840957?utm_source=itdadao&utm_medium=referral

https://www.jianshu.com/p/0bafd0168647

openTSDB+HBase+ZK遇到的坑汇总的更多相关文章

  1. HBase全网最佳学习资料汇总

    HBase全网最佳学习资料汇总 摘要: HBase这几年在国内使用的越来越广泛,在一定规模的企业中几乎是必备存储引擎,互联网企业阿里巴巴.百度.腾讯.京东.小米都有数千台的HBase集群,中国电信的话 ...

  2. golang的defer踩坑汇总

    原文链接:http://www.zhoubotong.site/post/50.html defer语句用于延迟函数调用,每次会把一个函数压入栈中,函数返回前再把延迟的函数取出并执行.延迟函数可以有参 ...

  3. Key-Value Store Indexer(Lily HBase Indexer) 小型采坑

    环境: Cloudera Express 5.12.1 JDK 1.8.0_92 CentOS 7 步骤1:数据导入到Hbase中(非正题,跳过) hbase中表为allDoc,两个Family:fu ...

  4. OpenTSDB/HBase的调优过程整理

    背景 过年前,寂寞哥给我三台机器,说搞个新的openTSDB集群.机器硬件是8核16G内存.3个146G磁盘做数据盘. 我说这太抠了,寂寞哥说之前的TSDB集群运行了两年,4台同样配置的机器,目前hd ...

  5. hbase部署经验与坑总结

    1.本地单机部署hbase,想要使用独立zookeeper,不使用自带的 vim conf/hbase-env.sh export HBASE_MANAGES_ZK=false 设置不使用自带zook ...

  6. mpvue 小程序开发爬坑汇总

    <!-- 小程序的爬坑记录 --> 1 微信小程序之动态获取元素宽高 var obj=wx.createSelectorQuery(); 2 微信小程序图片自适应 <image cl ...

  7. Socket编程之Tomcat模拟_采坑汇总

    用java.net.Socket来模拟实现Tomcat,碰到了一些坑,大部分是没有想到的,记录下来自查. 直接上代码, public class TomcatDemo { private static ...

  8. Log4j2同步异步性能比较以及教程和问题(坑)汇总

    线程数:500个   每个线程日志输出次数: 500次 log4j2其实有两个输出异步日志的方式:AsyncLogger和AsyncAppend 他两的区别在于: AsyncLogger使用的是无锁高 ...

  9. iOS总结:项目中的各种小坑汇总

    一.字符串转JSON 在网络请求时,如果服务端返回的是字符串,那么就需要我们自己封装一个类,将请求下来的字符串转换成json对象,从而存入模型中. 注意: 字符串中如果含有一些特殊转意符(如\n.\t ...

随机推荐

  1. PHP搜索文件夹下全部文件

    搜索文件夹下全部文件 //搜索文件夹下全部文件,暂时不支持中文文件名 public function scanFile($path) { if (!is_dir($path)) return arra ...

  2. WINDOWS下好用的MongoDB 3.0以上客户端工具: NoSql Manager

      WINDOWS下好用的MongoDB 3.0以上客户端工具: NoSql Manager https://www.mongodbmanager.com/download  

  3. UVA639 二叉树

    题意:深度为n的二叉树每个节点上有个开关,初始为关闭,每当小球落在节点上都会改变开关的状态,问编号为m的小球最终会落在哪里. 思路:对于二叉树的节点k,左节点右节点的编号为2k,2k+1.只需由最后一 ...

  4. python爬虫-异常处理

    URLerror产生原因: 网络未连接(即不能上网) 服务器不存在 #-*-coding:utf--*- import urllib2 request=urllib2.Request('http:// ...

  5. JavaScript -- 操作input CheckBox 全选框

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 如何编写 Makefile

     1. 目标 依赖 命令 make会比较targets文件和prerequisites文件的修改日期,如果prerequisites文件的日期要比targets文件的日期要新,或者target不存在的 ...

  7. js组合模式

    组合模式(Composite),将对象组合成树形结构以表示‘部分-整体’的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性. 透明方式,也就是说在Commponent中声明所有用来管理子 ...

  8. java:管道流(线程间管道流)

    class Send implements Runnable{ PipedOutputStream pos = null; public Send() { this.pos = new PipedOu ...

  9. WPF绑定数据源之RelativeSource

    Command="{Binding ConfirmRegisterCommand}" CommandParameter="{Binding RelativeSource= ...

  10. LVM MBR分区(装载)

    必须有至少一个主分区(P),主分区个数+扩展分区个数<= 4个. 创建完主分区,可以创建扩展分区(E),扩展分区可以有1个,或者没有(扩展分区). 主分区(Primary  Partion)可以 ...