I constantly get the following errors when I tried to add splits to a table.
org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.NotServingRegionException):
org.apache.hadoop.hbase.NotServingRegionException: Region
grapple_vertices,cust|rval#7ffffeb7cffca280|1636500018299676757,1410945568
484.e7743495366df3c82a8571b36c2bdac3. is not online on
lvshdc5dn0193.lvs.paypal.com,60020,1405014719359
at
org.apache.hadoop.hbase.regionserver.HRegionServer.getRegionByEncodedName(HRegionServer.java:2676)
at
org.apache.hadoop.hbase.regionserver.HRegionServer.getRegion(HRegionServer.java:4095)
at
org.apache.hadoop.hbase.regionserver.HRegionServer.splitRegion(HRegionServer.java:3818)
at
But when I checked the region server (from hbase' webUI), the region is
actually listed there.
What does the error mean actually? How can I solve it?
Currently I'm adding splits single-threaded, and I want to make it
parallel, is there anything I need to be careful about?
Here's the code for adding splits:
def addSplits(tableName: String, splitKeys: Seq[Array[Byte]]): Unit = {
val admin = new HBaseAdmin(conn)
try {
val regions = admin.getTableRegions(tableName.getBytes("UTF8"))
val regionStartKeys = regions.map(_.getStartKey)
val splits = splitKeys.diff(regionStartKeys)
splits.foreach { splitPoint =>
admin.split(tableName.getBytes("UTF8"), splitPoint)
}
// NOTE: important!
admin.balancer()
}
finally {
admin.close()
}
}
Any help is appreciated.
--
Jianshi Huang
LinkedIn: jianshi
Twitter: @jshuang
Github & Blog: http://huangjs.github.com/