首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

hbase学习之使用并发的地图per

2012-12-24 
hbase学习之使用并发的mapper首先hadoop是支持并发的Mapper的,所以hbase没有道理不实现并发的Mapper,这个

hbase学习之使用并发的mapper
   首先hadoop是支持并发的Mapper的,所以hbase没有道理不实现并发的Mapper,这个类是org.apache.hadoop.hbase.mapreduce.MultithreadedTableMapper.

   该类简单理解就是重写了Mapper的run方法
    


   以上是源代码,引自hbase-0.94.1

   同时,该类内部还实现了一个private的class MapRunner,该MapRunner持有一个mapper变量,而这个mapper就是我们要执行的mapper,而这个mapper是怎么设置进去的呢?


   以上是源代码,引自hbase-0.94.1
   可以看出,我们要实现并发的Mapper类一定不能是MultithreadedTableMapper 的子类(本人在试验的时候就因为继承了MultithreadedTableMapper 而抛出异常),通过在提交任务之前调用此静态方法,就可以设定我们真实的Mapper类。

   同时
/**   * Set the number of threads in the pool for running maps.   * @param job the job to modify   * @param threads the new number of threads   */  public static void setNumberOfThreads(Job job, int threads) {    job.getConfiguration().setInt(NUMBER_OF_THREADS,        threads);  }

   我们还可以调用该方法来设置并发线程的数目,默认的并发数目是10。

   此外还要注意,我们使用TableMapReduceUtil来initTableMapperJob中的Mapper class必须是MultithreadedTableMapper。

   最后,该类其实还实现了一些其它的内部类和方法来辅助数据的一致性,有兴趣的朋友可以自己看源代码,我这里只抛一个砖。

热点排行