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. 读完这篇文章,就基本搞定了Redis数据库

    简单来说Redis就是一个数据库,不过与传统的数据库不同的是Redis的数据是存在内存中的,所以存写速度非常快,因此Redis被广泛应用于缓存方向. 另外,Redis也经常用来做分布式锁.Redis提 ...

  2. DBUtiles中的简单使用(QueryRunner和ResultSetHandler的手动实现)

    DBUtiles是一个很好的处理JDBC的工具类.(DbUtils is a small set of classes designed to make working with JDBC easie ...

  3. google Json

    gradle仓库地址: // https://mvnrepository.com/artifact/com.google.code.gson/gsoncompile group: 'com.googl ...

  4. SpringMVC的AJAX请求报406错误

    SpringMVC的AJAX请求报406错误原因有两种:1.jackson包没有引入 2.如果已经引入jackson包了还报406的错误,那么就有可能是请求的url路径是.html结尾,但是返回的数据 ...

  5. HBase协处理器的使用(添加Solr二级索引)

    给HBase添加一二级索引,HBase协处理器结合solr 代码如下 package com.hbase.coprocessor; import java.io.IOException; import ...

  6. 简学Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  7. JavaWeb -- http-equiv=refresh跳转的时候出现Session 丢失, 解决办法。。

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  8. iframe标签的子父页面调用函数和属性

    在使用iframe标签时,总想通过子页面调用父页面的一些方法和属性.今天终于发现了. 1在父页面写一个函数 //让子页面来调用此方法,控制导航栏 function childfunc(){ alert ...

  9. Oracle大数据表的分表处理

    1.首先给大数据表创建rownum序列号 --增加序列号字段 alter table TEST add xlh number; --填充序列号 update TEST set xlh = rownum ...

  10. Java JDK、Tomcat、Eclipse环境配置

    Java 下载地址:http://www.oracle.com/ 根据提示一步一步进行安装,通常安装到C:\Program Files\Java,包含: 环境变量配置: JAVA_HOME:C:\Pr ...