Hadoop学习三十九:HBase与MapReduce集成
一.概述
HBase与MapReduce集成时,有以下三种情形
- HBase作为数据流向。
- HBase作为数据源。
- HBase作为数据源和数据流向。
二.HBase作为数据流向
HBase作为数据流向时,如从Hdfs里向HBase里导入数据,可以有下列方式
- map里直接调用HBase Api,往HBase插入数据。此时job.setNumReduceTasks(0),并且job.setOutputFormatClass(NullOutputFormat.class)
- 使用TableOutputFormat,TableOutputFormat的RecordWriter会直接往HBase写数据。
- 可以在map阶段就写入。此时job.setNumReduceTasks(0)。
- 也可以有reduce来写入如IdentityTableReducer。
- 使用BulkLoad,HFileOutputFormat.configureIncrementalLoad(job, htable); 的背后job.setOutputFormatClass(HFileOutputFormat.class);
三.HBase作为数据源
HBase作为数据源,如分析HBase里的数据
自定义mapper继承TableMapper,实际以Result作为数据源,map和reduce阶段按业务逻辑来即可。
四.HBase作为数据源和数据流向
HBase作为数据源和数据流向,如将一个HBase表拆分为两个HBase表。mapper继承TableMapper,main方法里TableMapReduceUtil.initTableMapperJob后至少可以以下三种方式处理
- map阶段处理好数据,调用HBase Api插入到新HBase表。此时job.setNumReduceTasks(0),并且job.setOutputFormatClass(NullOutputFormat.class)。
- map阶段处理好数据,由TableOutputFormat写入到Hbase。
- 可以在map阶段就写入。此时job.setNumReduceTasks(0)。
- 也可以有reduce来写入如IdentityTableReducer。此时需要TableMapReduceUtil.initTableReducerJob。
五.源代码
http://platform-components.googlecode.com/svn/trunk/SourceCode/study-hadoop/src/main/java/com/jyz/study/hadoop/hbase/mapreduce/ 目录下的几个java代码可以很好的说明上述任一情况。
相关推荐
strongyoung 2020-04-11
eternityzzy 2020-07-19
鲸鱼写程序 2020-06-08
strongyoung 2020-06-04
WeiHHH 2020-05-30
晨曦之星 2020-08-14
lwb 2020-07-26
大而话之BigData 2020-06-16
ITwangnengjie 2020-06-14
gengwx00 2020-06-11
大而话之BigData 2020-06-10
needyit 2020-06-04
ITwangnengjie 2020-05-09
gengwx00 2020-05-08
gengwx00 2020-05-09
大而话之BigData 2020-05-06
Buerzhu 2020-05-01