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 ...
随机推荐
- 【P1274】魔术数字游戏(搜索+剪枝+模拟)
做完了这个题的我一口老血喷在屏幕上... 这个题难度不高(~~胡扯~~),就是爆搜就可以了,然而..判断条件灰常多,剪枝也就非常多..然而,这些判断条件又不得不必须满足,所以也就十分容易错... 说一 ...
- java菜鸟笔记(一)
- 【转载】JAVA多线程读取、操作List集合
本文转载自:http://blog.csdn.net/wang1989cs/article/details/47663565 import java.util.ArrayList; import ja ...
- SqlCacheDependency:asp.net SQL缓存依赖
先看下MSDN对此类的介绍: 在以下两者之间建立关系:一是在 ASP.NET 应用程序的 Cache 对象中存储的项:二是特定 SQL Server 数据库表或 SQL Server 2005 查询 ...
- 一次应用js文件时遇到的怪异现象
使用thinkphp开发的网页中, 应用js文件 <script language="JavaScript" src="__JS__/printer/jquer ...
- 搜索5--noi1700:八皇后问题
搜索5--noi1700:八皇后问题 一.心得 二.题目 1700:八皇后问题 查看 提交 统计 提问 总时间限制: 10000ms 内存限制: 65536kB 描述 在国际象棋棋盘上放置八个皇后 ...
- spring: 使用profiles选择数据源(结合嵌入式数据源EmbeddedDatabaseBuilder)
一般需要在不同的环境(日常环境.性能测试环境.预发环境和生产环境等等)中配置不同的数据源,例如,在开发时非常适合使用嵌入式数据源.在QA环境中比较适合使用DBCP的BasicDataSource.在生 ...
- Model compatibility cannot be checked because the database does not contain model metadata. Ensure that IncludeMetadataConvention has been added to the DbModelBuilder conventions
Model compatibility cannot be checked because the database does not contain model metadata. Ensure t ...
- npm、模块暴露,小知识点区别
--save-dev与--save的区别 npm install xxx --save-dev 是指将包信息添加到 package.json 里的 devDependencies节点,表示开发时依赖的 ...
- 免费获得 NTFS for Mac 12. Special Edition 激活码活动
进入页面:http://www.paragon-drivers.com/cn/ntfs-mac-free/ntfs-free.html 先点击“下载”按钮,下载 NTFS for Mac 12. Sp ...