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 ...
随机推荐
- js 职责链模式简要介绍
定义: 使多个对象都有机会处理请求,避免发送者与接受者之间的耦合关系,将对象连成一条链,沿着这条链传递请求,直到有一个对象处理它. 如何把对象串联起来?解决方法通常是将另一个对象作为新创建对象的参数, ...
- 机器学习相关知识整理系列之二:Bagging及随机森林
1. Bagging的策略 从样本集中重采样(有放回)选出\(n\)个样本,定义子样本集为\(D\): 基于子样本集\(D\),所有属性上建立分类器,(ID3,C4.5,CART,SVM等): 重复以 ...
- Cocos2d-x项目移植到WP8系列之五:播放MP3
原文链接: http://www.cnblogs.com/zouzf/p/3972549.html 这一块的细节还是不太了解,只是东凑西拼能跑起来而已 1.网上下载lamb库 生成需要的lib库,详情 ...
- Redux API之bindActionCreators
bindActionCreators(actionCreators,dispatch) 把 action creators 转成拥有同名 keys 的对象,但使用 dispatch 把每个 actio ...
- INSPIRED启示录 读书笔记 - 第16章 市场调研
常用的市场调研工具和方法 用户调查:第一,设计调查问卷需要技巧和经验,不是一件容易的事:第二,调查结果为获得解决方案提供了一要途径,但不是解决方案本身 产品使用分析:使用分析工具记录用户使用产品的行为 ...
- Go Concurrency or Parallel
关于并发和并行,先看两个示例 示例1: package main import "fmt" var quit = make(chan int) func foo6(){ for i ...
- mongodb 中 Aggregation 的管道和分片集合( Pipeline and Sharded Collections)
mongodb 中的aggretion 中,如果管道中存在一个与之相匹配的shard key ,那么这个管道只运行在与之相匹配的shard 中,在以前(3.2),pipeline 被分流,最后又由pr ...
- C++中随机数的生成
1.随机数由生成器和分布器结合产生 生成器generator:能够产生离散的等可能分布数值 分布器distributions: 能够把generator产生的均匀分布值映射到其他常见分布,如均匀分布u ...
- PHP开发环境MAMP for Windows
Windows上的整合PHP开发环境有很多,如:Windows上使用的Wampserver(http://www.wampserver.com/),跨平台的Xampp(https://www.apac ...
- iOS Font
1. 非常棒的查看字体样貌网站: http://iosfonts.com 1. 查看设备支持字体: NSArray *familyNames = [NSMutableArray arrayWithAr ...