因为DataNode和RegionServer通常会部署在相同的机器上,所以会产生Locality这样的概念。
HBase的Locality是通过HDFS的Block复制实现的。在复制Block时,HBase是这样选择副本的位置的:
- 第一个副本写到本地节点上;
- 第二个副本写到另一个机架的随机节点上;
- 第三个副本写到相同机架的一个随机选择的其他节点上;
- 如果还有更多的副
因为DataNode和RegionServer通常会部署在相同的机器上,所以会产生Locality这样的概念。
HBase的Locality是通过HDFS的Block复制实现的。在复制Block时,HBase是这样选择副本的位置的:
前段时间我们在项目中使用了HBase,在这里记一下使用经历或者说踩过的坑。
我们读取数据的方式主要是批量查询,因此在最初的设计中就将大部分查询字段放在了RowKey上,目的是利用RowKey作为索引的特性。
关于RowKey的设计,通常有要求唯一性、散列性以及尽量短。我们在设计RowKey时也尽量地按照这三个原则去做。为了保证唯一性,也想过直接将…
BulkLoad是一种高效写入HBase的方式,适用于将数据批量迁移到HBase。
BulkLoad使用MapReduce作业直接生成HBase的StoreFile,并将生成的StoreFile直接装载入正在运行的HBase集群。较之使用HBase的API,使用BulkLoad耗费的CPU和网络资源都相对较少。
因为BulkLoad绕过了正常写数据的路径(W…
在执行BulkLoad的时候报了如下的错误:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Exception in thread "main" java.lang.IllegalArgumentException: Can not create a Path from a null string at org.apache.hadoop.fs.Path.checkPathArg(Path |