openTSDB+HBase+ZK遇到的坑汇总
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
- 时序列数据库武斗大会之什么是TSDB
- 时序列数据库武斗大会之TSDB名录 Part 1
- 时序列数据库武斗大会之TSDB名录 Part 2
- 时序列数据库武斗大会之OpenTSDB篇
- 时序列数据库武斗大会之KairosDB篇
openTSDB+HBase+ZK遇到的坑汇总的更多相关文章
- HBase全网最佳学习资料汇总
HBase全网最佳学习资料汇总 摘要: HBase这几年在国内使用的越来越广泛,在一定规模的企业中几乎是必备存储引擎,互联网企业阿里巴巴.百度.腾讯.京东.小米都有数千台的HBase集群,中国电信的话 ...
- golang的defer踩坑汇总
原文链接:http://www.zhoubotong.site/post/50.html defer语句用于延迟函数调用,每次会把一个函数压入栈中,函数返回前再把延迟的函数取出并执行.延迟函数可以有参 ...
- 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 ...
- OpenTSDB/HBase的调优过程整理
背景 过年前,寂寞哥给我三台机器,说搞个新的openTSDB集群.机器硬件是8核16G内存.3个146G磁盘做数据盘. 我说这太抠了,寂寞哥说之前的TSDB集群运行了两年,4台同样配置的机器,目前hd ...
- hbase部署经验与坑总结
1.本地单机部署hbase,想要使用独立zookeeper,不使用自带的 vim conf/hbase-env.sh export HBASE_MANAGES_ZK=false 设置不使用自带zook ...
- mpvue 小程序开发爬坑汇总
<!-- 小程序的爬坑记录 --> 1 微信小程序之动态获取元素宽高 var obj=wx.createSelectorQuery(); 2 微信小程序图片自适应 <image cl ...
- Socket编程之Tomcat模拟_采坑汇总
用java.net.Socket来模拟实现Tomcat,碰到了一些坑,大部分是没有想到的,记录下来自查. 直接上代码, public class TomcatDemo { private static ...
- Log4j2同步异步性能比较以及教程和问题(坑)汇总
线程数:500个 每个线程日志输出次数: 500次 log4j2其实有两个输出异步日志的方式:AsyncLogger和AsyncAppend 他两的区别在于: AsyncLogger使用的是无锁高 ...
- iOS总结:项目中的各种小坑汇总
一.字符串转JSON 在网络请求时,如果服务端返回的是字符串,那么就需要我们自己封装一个类,将请求下来的字符串转换成json对象,从而存入模型中. 注意: 字符串中如果含有一些特殊转意符(如\n.\t ...
随机推荐
- CSS3动画表单
在线演示 本地下载
- 从引物序列出发查找pcr产物的内容和在基因组上的位置
1.利用primer_blast工具,找出这对引物序列在基因组上的位置: 结果大概会像这样: 2.这些结果都是根据hg38基因组来定位的,转换成hg19: 利用UCSCde hgLiftover 在线 ...
- cocos2dx打飞机项目笔记一:项目结构介绍
最近在学习cocos2dx引擎,版本是2.1.3,开发环境是win7 + vs2010,模仿微信打飞机游戏,开发中参考了 csdn 偶尔e网事 的系列文章:http://blog.csdn.net/c ...
- Bootstrap3组件--1
目录 1. Glyphicons字体图标 2.下拉菜单 3.按钮组 4. 输入框组 5.导航 6. 导航条 7. 路径导航 1. Glyphicons字体图标 出于性能的考虑,所有图标都需要一个基类 ...
- 音乐下载api
青檬音乐 http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=5.6.5.6&format=js ...
- 【P2236】彩票(搜索+剪枝)
想说这个题要是想做出来就必须不干一件事情,那就是不要点开标签..点开标签看到那些平衡树什么的.... 首先,我们要理解这个题的题意.买彩票是什么大家都应该知道吧,一般来说,就是从很多数里面选出来几个, ...
- 关于view里面xib的问题
[[[NSBundle mainBundle] loadNibNamed:@"NetFailView" owner:self options:nil] lastObject]; 会 ...
- wareshark网络协议分析之ARP
一.ARP协议简介 简单的说ARP协议就是实现ip地址到物理地址的映射.当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址(物理地址)来确定网络接口的. ARP ...
- PowerDesigner生成数据库表和逆向生成表结构(MySQL数据库)
一.Download Connector/ODBC下载ODBC驱动,地址:https://dev.mysql.com/downloads/connector/odbc/, 需要注意:PowerDesi ...
- 有若干个箱子,假设每个箱子的最大承重为 MaxW 。将货物分配装箱
今天在博客园中看到一个博问,就写了下实现代码. 问题: 有若干个箱子,假设每个箱子的最大承重为 MaxW .有一批物品,它们的重量分别为w1.w2...Wn,假设每个物品的重量都不超过箱子承重.写个算 ...