`
liyonghui160com
  • 浏览: 761373 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HBase MapReduce实例分析

阅读更多

 

 

跟Hadoop的无缝集成使得使用MapReduce对HBase的数据进行分布式计算非常方便,本文将介绍HBase下 MapReduce开发要点

 

package hbase;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.mapreduce.TableOutputFormat;
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.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;

public class WordCountHBase {

    public static class Map extends
            Mapper<LongWritable, Text, Text, IntWritable> {
        private IntWritable i = new IntWritable(1);

        public void map(LongWritable key, Text value, Context context)
                throws IOException, InterruptedException {
            String s[] = value.toString().trim().split(" ");
            // 将输入的每行以空格分开
            for (String m : s) {
                context.write(new Text(m), i);
            }
        }
    }

    public static class Reduce extends
            TableReducer<Text, IntWritable, NullWritable> {
        public void reduce(Text key, Iterable<IntWritable> values,
                Context context) throws IOException, InterruptedException {
            int sum = 0;
            for (IntWritable i : values) {
                sum += i.get();
            }
            Put put = new Put(Bytes.toBytes(key.toString()));
            // Put实例化,每一个词存一行
            put.add(Bytes.toBytes("content"), Bytes.toBytes("count"),
                    Bytes.toBytes(String.valueOf(sum)));
            // 列族为content,列为count,列值为数目
            context.write(NullWritable.get(), put);
        }
    }

    public static void createHBaseTable(String tableName) throws IOException {
        HTableDescriptor htd = new HTableDescriptor(tableName);
        HColumnDescriptor col = new HColumnDescriptor("content");
        htd.addFamily(col);
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum", "libin2");
        HBaseAdmin admin = new HBaseAdmin(conf);
        if (admin.tableExists(tableName)) {
            System.out.println("table exists, trying to recreate table......");
            admin.disableTable(tableName);
            admin.deleteTable(tableName);
        }
        System.out.println("create new table:" + tableName);
        admin.createTable(htd);
    }

    public static void main(String[] args) throws IOException,
            InterruptedException, ClassNotFoundException {
        String tableName = "WordCount";
        Configuration conf = new Configuration();
        conf.set(TableOutputFormat.OUTPUT_TABLE, tableName);
        createHBaseTable(tableName);
        String input = args[0];
        Job job = new Job(conf, "WordCount table with " + input);
        job.setJarByClass(WordCountHBase.class);
        job.setNumReduceTasks(3);
        job.setMapperClass(Map.class);
        job.setReducerClass(Reduce.class);
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);
        job.setInputFormatClass(TextInputFormat.class);
        job.setOutputFormatClass(TableOutputFormat.class);
        FileInputFormat.addInputPath(job, new Path(input));
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

 

分享到:
评论

相关推荐

    MapReduce实例

    使用MapReduce读取hbase数据库中千万级别的数据,处理数据并统计,将统计后的结果存入mysql

    hbase导入话单数据mapreduce函数实现执行过程实例(博客附件)

    这是一篇博客的附件。 博客地址:http://blog.csdn.net/luckymelina/article/details/22889383

    [PPT]《云计算》教材配套课件9-HBase的原理与实验

    并介绍了以Hadoop为代表的开源云计算技术和云计算仿真器CloudSim,分析了云计算领域的理论研究热点问题,给出了云计算应用实例以及云计算实验的详细步骤。本书主要内容包括:Google的GFS、MapReduce、Bigtable、...

    Hadoop权威指南 第二版(中文版)

    第16章 实例分析  Hadoop 在Last.fm的应用  Last.fm:社会音乐史上的革命  Hadoop a Last.fm  用Hadoop产生图表  Track Statistics程序  总结  Hadoop和Hive在Facebook的应用  概要介绍  Hadoop a Facebook...

    Hadoop权威指南(中文版)2015上传.rar

    第16章 实例分析 Hadoop 在Last.fm的应用 Last.fm:社会音乐史上的革命 Hadoop a Last.fm 用Hadoop产生图表 Track Statistics程序 总结 Hadoop和Hive在Facebook的应用 概要介绍 Hadoop a Facebook 假想的使用情况...

    深入理解hadoop

    第5章~第7章是本书的重点,深入分析了MapReduce框架,不仅包括MapReduce框架的API,还介绍MapReduce框架的更复杂概念及其设计理念。第8章~第14章介绍Hadoop生态系统,包括支持MapReduce程序的单元测试和集成测试...

    深入理解大数据--大数据并行处理与编程实践

    《深入理解大数据:大数据处理与编程实践》在总结多年来MapReduce并行处理技术课程教学经验和成果的基础上,与业界著名企业Intel公司的大数据技术...这是本书很多实例的源代码 对很多进行大数据学习的朋友们会很有帮助

    Hadoop实战(陆嘉恒)

    内容全面,对hadoop整个技术体系进行了全面的讲解,不仅包括hdfs和mapreduce这两大核心内容,而且还包括hive、hbase、mahout、pig、zookeeper、avro、chukwa等与hadoop相关的子项目的内容。实战性强,为各个知识点...

    Hadoop实战

    内容全面,对hadoop整个技术体系进行了全面的讲解,不仅包括hdfs和mapreduce这两大核心内容,而且还包括hive、hbase、mahout、pig、zookeeper、avro、chukwa等与hadoop相关的子项目的内容。实战性强,为各个知识点...

    Hadoop实战-陆嘉恒

    内容全面,对hadoop整个技术体系进行了全面的讲解,不仅包括hdfs和mapreduce这两大核心内容,而且还包括hive、hbase、mahout、pig、zookeeper、avro、chukwa等与hadoop相关的子项目的内容。实战性强,为各个知识点...

    《Hadoop实战》试读本(作者:陆嘉恒)

    内容全面,对Hadoop整个技术体系进行了全面的讲解,不仅包括HDFS和MapReduce这两大核心内容,而且还包括Hive、HBase、Mahout、Pig、ZooKeeper、Avro、Chukwa等与Hadoop相关的子项目的内容。实战性强,为各个知识点...

    Hadoop权威指南-中文译版

    对HadoopTom不熟悉的初学者,可以参考本书。Wbite著,此为第二版(修订升级),由周敏奇等人翻译。该书介绍了Hadoop的安装及使用,详述了MapReduce机制并介绍了Hbase,Hive,Zookeeper及HDFS,最后给出了实例分析。

    Hadoop实战丛书

    内容全面,对hadoop整个技术体系进行了全面的讲解,不仅包括hdfs和mapreduce这两大核心内容,而且还包括hive、hbase、mahout、pig、zookeeper、avro、chukwa等与hadoop相关的子项目的内容。实战性强,为各个知识点...

    Hadoop实战(陆嘉恒)译

    在云上运行Hadoop9.1 Amazon Web Services 简介9.2 安装AWS9.2.1 获得AWS身份认证凭据9.2.2 获得...实例9.6 Amazon Elastic MapReduce 和其他AWS 服务9.6.1 Amazon Elastic MapReduce9.6.2 AWS导入/导出9.7 小结第10 章...

    Hadoop实战中文版

    9.4 在EC2 上运行MapReduce 程序 9.4.1 将代码转移到Hadoop集群上 9.4.2 访问Hadoop集群上的数据 9.5 清空和关闭EC2 实例 9.6 Amazon Elastic MapReduce 和其他AWS 服务 9.6.1 Amazon Elastic MapReduce 9.6.2...

    新版Hadoop视频教程 段海涛老师Hadoop八天完全攻克Hadoop视频教程 Hadoop开发

    07-hadoop中的RPC应用实例demo.avi 08-hdfs下载数据源码跟踪铺 垫.avi 09-hdfs下载数据源码分析-getFileSystem.avi 10-hdfs下载数据源码分析-getFileSystem2.avi 第三天 mapreduce的原理和编程 01-hdfs源码...

    云计算讲义PPT 1

    并介绍了以Hadoop为代表的开源云计算技术和云计算仿真器CloudSim,分析了云计算领域的理论研究热点问题,给出了云计算应用实例以及云计算实验的详细步骤。本书主要内容包括:Google的GFS、MapReduce、Bigtable、...

    云计算讲义PPPT 2

    并介绍了以Hadoop为代表的开源云计算技术和云计算仿真器CloudSim,分析了云计算领域的理论研究热点问题,给出了云计算应用实例以及云计算实验的详细步骤。本书主要内容包括:Google的GFS、MapReduce、Bigtable、...

Global site tag (gtag.js) - Google Analytics