`
punishzhou
  • 浏览: 142805 次
社区版块
存档分类
最新评论
文章列表
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时间的百分比。优先级进程 ...
当前一般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采用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 ...
今天看了一下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事件会按如下处理: ...
Global site tag (gtag.js) - Google Analytics