hbase->Mapreduce->hbase

Hbase对Mapreduce API进行了扩展,方便Mapreduce任务读写HTable数据。

package taglib.customer;
import java.io.IOException;  

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.hbase.mapreduce.TableMapper;
import org.apache.hadoop.hbase.mapreduce.TableReducer;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
public class MrHbase {

	public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
		// TODO Auto-generated method stub
		Configuration conf = HBaseConfiguration.create();
		conf.set("hbase.zookeeper.quorum", "192.168.58.101");
        Job job = new Job(conf,"ExampleSummary");
        job.setJarByClass(MrHbase.class);     // class that contains mapper and reducer  

        Scan scan = new Scan();
        scan.setCaching(500);        // 1 is the default in Scan, which will be bad for MapReduce jobs
        scan.setCacheBlocks(false);  // don't set to true for MR jobs
        // set other scan attrs
        //scan.addColumn(family, qualifier);
        TableMapReduceUtil.initTableMapperJob(
                "blog",        // input table
                scan,               // Scan instance to control CF and attribute selection
                MyMapper.class,     // mapper class
                Text.class,         // mapper output key
                IntWritable.class,  // mapper output value
                job);
        TableMapReduceUtil.initTableReducerJob(
                "blog2",        // output table
                MyTableReducer.class,    // reducer class
                job);
        job.setNumReduceTasks(1);   // at least one, adjust as required  

        boolean b = job.waitForCompletion(true);
        if (!b) {
            throw new IOException("error with job!");
        }
	}
	public static class MyMapper extends TableMapper<Text, IntWritable>  {  

        private final IntWritable ONE = new IntWritable(1);
        private Text text = new Text();  

        public void map(ImmutableBytesWritable row, Result value, Context context) throws IOException, InterruptedException {
            String ip = Bytes.toString(row.get());
            String url = new String(value.getValue(Bytes.toBytes("article"), Bytes.toBytes("title")));
            text.set(ip+"&"+url);
            context.write(text, ONE);
        }
    }
	public static class MyTableReducer extends TableReducer<Text, IntWritable, ImmutableBytesWritable>  {
        public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
            int sum = 0;
            for (IntWritable val : values) {
                sum += val.get();
            }  

            Put put = new Put(key.getBytes());
            put.add(Bytes.toBytes("article"), Bytes.toBytes("title"), Bytes.toBytes(String.valueOf(sum)));  

            context.write(null, put);
        }
    }  

}
时间: 2024-11-05 17:33:07

hbase->Mapreduce->hbase的相关文章

HBase - MapReduce - HBase 作为输入源的示例 | 那伊抹微笑

博文作者:那伊抹微笑 csdn 博客地址:http://blog.csdn.net/u012185296 itdog8 地址链接 : http://www.itdog8.com/thread-203-1-1.html 博文标题:HBase - MapReduce - HBase 作为输入源的示例 | 那伊抹微笑 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在 技术方向:Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+

HBase - MapReduce - HBase 作为输出源的示例 | 那伊抹微笑

博文作者:那伊抹微笑 csdn 博客地址:http://blog.csdn.net/u012185296 itdog8 地址链接 : http://www.itdog8.com/thread-204-1-1.html 博文标题:HBase - MapReduce - HBase 作为输出源的示例 | 那伊抹微笑 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在 技术方向:Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+

MapReduce/Hbase进阶提升(原理剖析、实战演练)

什么是MapReduce? MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(归约)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性.他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上. 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一

Hadoop企业级完整训练:Rocky的16堂课(HDFS&amp;MapReduce&amp;HBase&amp;Hive&amp;Zookeeper&amp;Sqoop&amp;Pig&amp;Flume&amp;Project) - 0515

Hadoop是云计算的事实标准软件框架,是云计算理念.机制和商业化的具体实现,是整个云计算技术学习中公认的核心和最具有价值内容. 如何从企业级开发实战的角度开始,在实际企业级动手操作中深入浅出并循序渐进的掌握Hadoop是本课程的核心.   云计算学习者的心声: 如何从企业级开发的角度,不断动手实际操作,循序渐进中掌握Hadoop,直到能够直接进行企业级开始,是困惑很多对云计算感兴趣的朋友的核心问题,本课程正是为解决此问题而生,学习者只需要按照一步步的跟着视频动手操作,即可完全无痛掌握Hadoo

Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

通过这一阶段的调研总结,从内部机理的角度详细分析,HDFS.MapReduce.Hbase.Hive是如何运行,以及基于Hadoop数据仓库的构建和分布式数据库内部具体实现.如有不足,后续及时修改. HDFS的体系架构 整个Hadoop的体系结构主要是通过HDFS来实现对分布式存储的底层支持,并通过MR来实现对分布式并行任务处理的程序支持. HDFS采用主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的(在最新的Hadoop2.2版本

HBase MapReduce

1. HBase to HBase Mapper 继承 TableMapper,输入为Rowkey和Result. public abstract class TableMapper<KEYOUT, VALUEOUT> extends Mapper<ImmutableBytesWritable, Result, KEYOUT, VALUEOUT> { public TableMapper() { }} package com.scb.jason.mapper; import org

王家林的云计算分布式大数据Hadoop征服之旅:HDFS&amp;MapReduce&amp;HBase&amp;Hive&amp;集群管理

一:课程简介: 作为云计算实现规范和实施标准的Hadoop恰逢其时的应运而生,使用Hadoop用户可以在不了解分布式底层细节的情况下开发出分布式程序,从而可以使用众多廉价的计算设备的集群的威力来高速的运算和存储,而且Hadoop的运算和存储是可靠的.高效,的.可伸缩的,能够使用普通的社区服务器出来PB级别的数据,是分布式大数据处理的存储的理想选择. 本课程会助你深入浅出的掌握Hadoop开发(包括HDFS.MapReduce.HBase.Hive等),并且在此基础上掌握Hadoop集群的配置.维

Hbase Mapreduce编程

Hbase Mapreduce编程 hadoop,hbase安装参考:http://blog.csdn.net/mapengbo521521/article/details/41777721 hbase表创建数据插入参考:http://blog.csdn.net/mapengbo521521/article/details/43917119 hbase mapreduce参考:http://wenku.baidu.com/link?url=w5WwJHqI2KWOx_xQcIrP0Q2GYo0s

HBase - MapReduce - 使用 MapReduce 批量操作 HBase 介绍 | 那伊抹微笑

博文作者:那伊抹微笑 csdn 博客地址:http://blog.csdn.net/u012185296 itdog8 地址链接 : http://www.itdog8.com/thread-202-1-1.html 博文标题:HBase - MapReduce - 使用 MapReduce 批量操作 HBase 介绍 | 那伊抹微笑 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在 技术方向:Flume+Kafka+Storm+Redis/Hbase+

HBase MapReduce 使用

项目中需要用MapReduce来读取或者写Hbase,这样可以节省大量开发时间. Hbase本身的jar包里就有这样的API , 以下是我从官网上找的一些资料,和大家分享一下. 原文地址:http://hbase.apache.org/book/mapreduce.example.html 总体说明一下:TableMapper 主要是读hbase数据,TableReducer 主要是写hbase数据.可以结合一起用,也可以分开用. (一) 读Hbase实例 public static class