- 浏览: 142805 次
最新评论
-
di1984HIT:
写的很好偶~~~~~
Java 的DelayQueue -
di1984HIT:
学习了~!!!
HBase之 HTable线程不安全 -
di1984HIT:
学习了~~~
HTable的使用 -
di1984HIT:
学习了~~~
HBase的数据的update -
di1984HIT:
查询不是并行的region查询么?这么奇怪啊。
HBase scan的客户端分析
文章列表
java操作Thrift
thrift的原理及使用介绍可参考http://dongxicheng.org/search-engine/thrift-framework-intro/
1:下载thrift并解压
下载地址:http://thrift.apache.org/download/
2:编写Thrift文件(定义接口,结构,异常等),保存为demoHelllo.thrift
namespace java com.micmiu.thrift.demo
HelloWorldService1 {
string sayHello(1:String username ...
使用jdk自带的jstack来分析。
top 工具可以显示 cpu 的平均利用率(user,nice,system,idle,iowait,irq,softirq,etc.)显示如下:
uptime 该项显示的是系统启动时间、已经运行的时间和三个平均负载值(最近1秒,5秒,15秒的负载值)。
processes 自最近一次刷新以来的运行进程总数。当然这些进程被分为正在运行的,休眠的,停止的等很多种类。进程和状态显示可以通过交互命令t来实现。
CPU states 显示用户模式,系统模式,优先级进程(只有优先级为负的列入考虑)和闲置等各种情况所占用CPU时间的百分比。优先级进程 ...
HTable的使用
- 博客分类:
- HBase Client端
当前一般HBase的读写(删除也认为是写)都是通过HTable对象来操作的。
首先看官方的注释
* <p>Used to communicate with a single HBase table.
*
* <p>This class is not thread safe for reads nor write.
*
* <p>In case of write ...
继续HMASTER的failover 流程
上一篇说道master failover的一个漏洞,这几天好好的看了一下,终于找到问题的关键在
哪儿了。首先来看如何重现。
1. master 发送rpc请求去open region,此时zk上的节点时offline状态。
2. rs收到请求还没有开始处理,即zk节点仍然是offline。
3. master重启
4. master开始failover 流程,rs继续处理open region动作
关键就在第四步:
如果rs已经将region open了。
1). master先收到zk node changed时间。然后再处理failover ...
继续上一篇的master failover流程
master挂掉期间没有regionserver挂掉的情况。
昨天写着写着突然发现90 failover存在一个bug,今天测试了一下,果然存在。
当master处理zk上面的unassigned节点时,首先会去getchlidren。这个函数会获取zk unassigned节点
set watch(该节点删除触发nodedeleted事件,有子节点创建删除会触发nodeChildrenchanged)然后会对
unassigned下所有节点getdata(watch)并set watch。如果这些节点有些值为M_ ...
HBase的master重启时走的是failover流程。
由于在HMaster挂掉的瞬间有很多正在执行的事务,如:
1. 某个table可能正在disable到一半,master挂掉
2. create table到一半,master挂掉
3. move 动作到一半,master挂掉当
master挂 ...
HBase编译过程中碰到的问题
- 博客分类:
- HBASE 配置
测试环境上hbase采用maven编译,只要安装了maven就行.
在hbase目录下mvn package -Dmaven.test.skip.exec=true编译好的jar放在target
目录下,将jia包替换以后。
1.重启集群发现一个问题:HMaster启动了,但是Regionserver没有起来
后来分析maven编译之前时候会把依赖都下到.m2/目录下,Hbase集群在启动的时候会首先从该目录下寻找jar包,而其中的一个hadoop的core jar包与集群的hbase版本冲突,因此编译以后不能启动。
解决方法:对maven不了解不知道怎么去修改寻找路劲,所 ...
HBase中rowkey是索引,任何对全表的扫描或是统计都需要用到scan接口。
本文主要探讨的是客户端是如何通过scan来扫描hbase的table的。
主要关注几个问题:
1.每一个Table可能不止一个region,分布在不同的regionserver上。客户端需要找到每个region的位置并与之通信;
2.Hbase是以append形式把数据写进去的,无论是写还是删除只是在keyvalue上打个标签,然后put进内存而已。等到region的内存满64m以后,会flush成一个新的文件写入磁盘。真正的数据删除操作会等到执行compact时候进行;那么在compac ...
Java 的DelayQueue
- 博客分类:
- Java 数据结构
今天看了一下HBase的代码,发现在很多地方都用了DelayQueue,网上有很多解析DelayQueue的实例
http://www.cnblogs.com/jobs/archive/2007/04/27/730255.html
提到了DelayQueue的使用场景:
a) 关闭空闲连接。服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之。b) 缓存。缓存中的对象,超过了空闲时间,需要从缓存中移出。c) 任务超时处理。在网络协议滑动窗口请求应答式交互时,处理超时未响应的请求。一种笨笨的办法就是,使用一个后台线程,遍历所有对象,挨个检查。这种笨笨的办法简单好用,但是 ...
参考网上的一些api guide,总结了的一些HBase的client api,以及自己的一些理解
三个部分:首先描述hbase建表,读写数据的过程;然后详细介绍一下这些过程中所使用的API,并给出实例;最后给出一些在使用HBase客户端时的一些注意事项和建议。
一家之言而已,记录加强印象~~~
1.在Hbase的log管理(一)中,描述了Hbase对于Hlog的更新和清理过程。其中提到会把已经写入磁盘的log文件move到.oldlog文件中,那么.oldlog中的文件又如何处理呢?
HMaster启动的时候会起一个守护线程LogCleaner,专门清理oldlog中的文件,频率是60s
2.数据以KeyValue形式到达HRegionServer,将写入WAL之后,写入一个SequenceFile。看过去没问题,但是因为数据流在写入文件系统时,经常会缓存以提高性能。这样,有些本以为在日志文件中的数据实际在内存中。这里,提供了一个LogFlusher的类。它调用HLog.option ...
在单线程环境下使用hbase的htable是没有问题,但是突然高并发多线程情况下就可能出现问题原因是什么呢?
我们来看看Htable的api说明
This class is not thread safe for updates; the underlying write buffer can be corrupted if multiple threads contend over a single HTable instance.
当有多个线程竞争时可能把当前正在写的线程corrupted这是为什么呢
还是从HTbale的源码来看
public ...
每一个Regionserver中都有一个HLog,一般情况下除非设置了SETWAL(false)否则对hbase的写操作在put到内存之前会append到log中以防止机器down 掉造成的数据丢失。
首先来看RS启动后对HLog的处理
private HLog setupWALAndReplication() throws IOException {
final Path oldLogDir = new Path(rootDir, HConstants.HREGION_OLDLOGDIR_NAME);
Path logdir = new Path(rootDir, HL ...
上一篇Blog提到了HBase在regionserver挂掉以后,master会处理,其中很重要的一步是就是splitlog,把.logs目录下的该rs的文件夹里的HLog文件,按照region进行分配。splitlog的代码如下所示:
private List<Path> splitLog(final FileStatus[] logfiles) throws IOException {
List<Path> processedLogs = new ArrayList<Path>();//成功处理以后的文件放入这个目录下
List< ...
上一篇blog谈到了rs挂掉的几种情况。
HBase作为nosql的一种产品,应用于大规模分布式的海量数据,其中有一个优点就是其对于机器down掉的容错性。
客户端不需要关注机器是否挂掉或者怎么样,server会自动处理down的server,处理器上的region并分配到其他server从而最大限度地提高系统可用性
今天来看看当rs挂掉以后的处理情况。
前面我们说过rs启动以后会在zk上的rs目录下注册自己的节点,而master监听了这一节点的变化包括delete,changed,created等动作。此时master监听到了node deleted事件会按如下处理: ...