How HMaster Detect Death of RegionServer

Step 3 of explanation about what happens after Full GC may be vague. It confuses audiences by ServerManager on HMaster finds there must be something wrong with this RegionServer How does HMaster detect the death of RegionServer? ...

Jul 6, 2018 · 3 min · xgugeng

RegionServer Stops after Full GC

One of the most devastating and unpredictable latency intruders is the Java Virtual Machine’s “stop the world” pauses for garbage collection (memory clean-up). This post troubleshoots an unexpected shutdown of RegionServer fundamentally caused by Full GC and makes the whole process clear. ...

Jul 5, 2018 · 2 min · xgugeng

A Troubleshooting for Threads Explosion in HBase Client

An issue, excessive threads of HBase client, annoyed me for a quite while. It reminds me to penetrate into uses of Executorservice in HBase client. That’s the origin of this blog. ...

Mar 9, 2018 · 3 min · xgugeng

HBase Batch Puts with BufferedMutator

BufferedMutator is meant for batched, potentially asynchronous puts into a single table. This class relies heavily on AsyncProcess, which I has explained here. Then, we can focus on what BufferedMutator does in this post. ...

Jan 15, 2018 · 3 min · xgugeng

HBase Batch Puts without BufferedMutator

For batch puts, it’s better if you construct a list of puts and then call HTable.put(final List<Put> puts), because it uses a single RPC call to commit the batch, but depending on the size of the list write buffer may flush it all or not. In this post, BufferedMutator is excluded. It will be discussed in the near future. ...

Jan 9, 2018 · 4 min · xgugeng

Multiversion Concurrency Control in HBase

Multiversion Concurrency Control (MVCC for short) manages the read/write consistency, providing an interface for readers to determine what entries to ignore, and a mechanism for writers to obtain new write numbers, then “commit” the new writes for readers to read (thus forming atomic transactions). ...

Dec 27, 2017 · 7 min · xgugeng

A Lifecycle of HBase's Put: Server-side

Following the preceding A Lifecycle of HBase’s Put: Client-side, this post will figure out how a Put request does its mutation on HRegionServer. The whole process involves WAL, MemStore, and Coprocessor etc. After reading this post, hope you make their roles clear. ...

Dec 5, 2017 · 11 min · xgugeng

A Lifecycle of HBase's Put: Client-side

Put is used to perform insert or update a single row of HBase table. It’s essential to understand its lifecycle, which can be broke into two pieces, Client-side, How the put request is built up and sent to the right RegionServer. Server-side, How the RegionServer handle the Put request and update one row. In view of the limitation of one single post, the client-side is discussed only. ...

Nov 24, 2017 · 9 min · xgugeng

HBase Code Analysis: MemStore

The MemStore holds in-memory modifications to the Store. This post deeps into the source code for sake of understanding what it really do underneath. ...

Nov 23, 2017 · 7 min · xgugeng

HBase Storage Internals

Overview An HBase Table consists of multiple rows. Table will be split into Regions based on rows’ lexicographical order. A Store corresponds to a column family for a table for a given region. A Store hosts a MemStore and 0 or more StoreFiles (HFiles). The MemStore holds in-memory modifications to the Store. StoreFiles are composed of Blocks. ...

Nov 16, 2017 · 6 min · xgugeng