`
san_yun
  • 浏览: 2582928 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

hbase mapreduce例子

 
阅读更多

参考:

http://hbase.apache.org/book/mapreduce.html

http://genius-bai.iteye.com/blog/641927

 

 

 

HBase 自带例子

hbase-0.20.3\src\test

计算表的总行数(org.apache.hadoop.hbase.mapreduce.RowCounter)

bin/hadoop jar /home/iic/hbase-0.20.3/hbase-0.20.3.jar rowcounter scores grade

结果

10/04/12 17:08:05 INFO mapred.JobClient:     ROWS=2

 

对HBase的列进行Lucene索引(examples.TestTableIndex)

对表mrtest的列contents进行索引,使用lucene-core-2.2.0.jar,需把它加入类路径。lucene-core-2.2.0.jar加入到examples.zip/lib目录下,同时代码中必须指定job.setJarByClass(TestTableIndex.class);不然lucene不识别

 

bin/hadoop fs -rmr testindex

bin/hadoop jar  examples.zip  examples.TestTableIndex

 

 

先从文件中产生适合HBase的HFiles文件,再倒入到Hbase中,加快导入速度

examples.TestHFileOutputFormat

输入的数据,由例子自动生成,其中Key是前面补0的十位数“0000000001”。

输出数据目录:/user/iic/hbase-hfile-test

bin/hadoop fs -rmr hbase-hfile-test

bin/hadoop jar  examples.zip  examples.TestHFileOutputFormat

加载生成的数据到Hbae中(要先安装JRuby,才能执行)

export PATH=$PATH:/home/iic/jruby-1.4.0/bin/

echo $PATH

 

vi bin/loadtable.rb

require '/home/iic/hbase-0.20.3/hbase-0.20.3.jar'
require '/home/iic/hadoop-0.20.2/hadoop-0.20.2-core.jar'
require '/home/iic/hadoop-0.20.2/lib/log4j-1.2.15.jar'
require '/home/iic/hadoop-0.20.2/lib/commons-logging-1.0.4.jar'
require '/home/iic/hbase-0.20.3/lib/zookeeper-3.3.0.jar'
require '/home/iic/hbase-0.20.3/lib/commons-cli-2.0-SNAPSHOT.jar'

$CLASSPATH <<'/home/iic/hbase-0.20.3/conf';

 

delete table "hbase-test" 

 

jruby  bin/loadtable.rb  hbase-test  /user/iic/hbase-hfile-test

 

查看其使用方式

(bin/hbase org.jruby.Main bin/loadtable.rb

Usage: loadtable.rb TABLENAME HFILEOUTPUTFORMAT_OUTPUT_DIR

其使用JRuby

 

注意:此种方式,必须解决几个问题

1:your MapReduce job ensures a total ordering among all keys ,by default distributes keys among reducers using a Partitioner that hashes on the map task output key。(key.hashCode() & Integer.MAX_VALUE) % numReduceTasks

默认MR在使用默认的default hash Partitioner 分配Key给Reducer的时候,如果Key是0~4,有2个Task,则

reducer 0 would have get keys 0, 2 and 4 whereas reducer 1 would get keys 1 and 3 (in order).

则生成的Block里面的Start key 和 End Key次序讲混乱,

 

System.out.println((new ImmutableBytesWritable("0".getBytes())
    .hashCode() & Integer.MAX_VALUE)

 

所以需要实现自己的Hash Partitioner ,生成the keys need to be orderd so reducer 0 gets keys 0-2 and reducer 1 gets keys 3-4 (See TotalOrderPartitioner up in hadoop for more on what this means).

 

验证导入的行数

bin/hadoop jar /home/iic/hbase-0.20.3/hbase-0.20.3.jar rowcounter hbase-test info 

 

HFile生成例子2:

此种例子,只适合第一次海量导入数据,因为bin/loadtable.rb每次都替换所有的文件。

对于后续的数据操作,可以使用Map文本文件+Hbase Table直接操作Insert的功能。

或者保证新增加的Key跟原来没有冲突,按照bin/loadtable.rb的逻辑,添加新的Block。

 

生成1KW数据的test_1kw.log:0,content0,1271222976817

/home/bmb/jdk1.6.0_16/bin/java  -cp examples.zip examples.CreateLogFile  test_1kw.log 10000000

bin/hadoop fs -put test_1kw.log hadoop-performance-test

只用1个Reduce Task,避免Total Order Key的问题

bin/hadoop jar examples.zip examples.TestCreateHFileMR  hadoop-performance-test  hadoop-hbase-hfile-test  1

生成Hbase Hfile文件才花了一点时间,比性能测试生成1KW的HBase数据快了N多。

10/04/15 14:22:59--10/04/15 14:25:22

导入Hbase

jruby  bin/loadtable.rb  hbase-test2  hadoop-hbase-hfile-test

 

验证导入的行数

bin/hadoop jar /home/iic/hbase-0.20.3/hbase-0.20.3.jar rowcounter hbase-test2 info

 

其他HBase MapReduce例子
http://www.hadoop.org.cn/mapreduce/hbase-mapreduce/

http://www.spicylogic.com/allenday/blog/2008/08/28/hbase-bulk-load-import-example/

分享到:
评论

相关推荐

    hadoop1.1.2操作例子 包括hbase hive mapreduce相应的jar包

    hadoop1.1.2操作例子 包括hbase hive mapreduce相应的jar包

    merge-hbase.rar

    hbase的mapreduce, 是Hbase权威指南上面的例子, 例7.1: MapReduce作业从一个文件中读取数据并写入Hbase表

    HBaseBulkImportXML:如何将 XML 文件中的数据批量导入 HBase 表的示例

    幸运的是 HBase 带有批量加载功能,这个例子演示了它们是如何工作的。 HBase 批量加载过程包括两个步骤: 1. 通过 MapReduce 作业准备 HFile,以及2. 使用 LoadIncrementalHFiles.doBulkLoad 将 HFile 导入 HBase ...

    HBase_XML_bulkimport

    幸运的是 HBase 带有批量加载功能,这个例子演示了它们是如何工作的。 HBase 批量加载过程包括两个步骤: 1. 通过 MapReduce 作业准备 HFile,以及2. 使用 LoadIncrementalHFiles.doBulkLoad 将 HFile 导入 HBase ...

    Hadoop实战(第2版)

    2.2.3 从数据库中拉数据技术点4 使用MapReduce 将数据导入数据库 技术点5 使用Sqoop 从MySQL 导入数据 2.2.4 HBase 技术点6 HBase 导入HDFS 技术点7 将HBase 作为MapReduce 的数据源2.3 将数据导出...

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

     一个导入的例子  生成代码  其他序列化系统  深入了解数据库导入  导入控制  导入和一致性  直接模式导入  使用导入的数据  导入的数据与Hive  导入大对象  执行导出  深入了解导出  导出与事务  ...

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

    一个导入的例子 生成代码 其他序列化系统 深入了解数据库导入 导入控制 导入和一致性 直接模式导入 使用导入的数据 导入的数据与Hive 导入大对象 执行导出 深入了解导出 导出与事务 导出和SequenceFile 第16章 实例...

    nosql 入门教程

    11.2 MapReduce和HBase 192 11.3 MapReduce和Apache Mahout 196 11.4 小结 197 第12章 使用Hive分析大数据 199 12.1 Hive基础 199 12.2 回到电影评分 203 12.3 亲切的SQL 209 12.4 HiveQL连接 211 12.4.1 ...

    Hadoop实战(陆嘉恒)译

    用Pig编程10.1 像Pig 一样思考10.1.1 数据流语言10.1.2 数据类型10.1.3 用户定义函数10.2 安装Pig10.3 运行Pig10.4 通过Grunt 学习Pig Latin...10.7.3 多查询执行10.8 Pig 实战——计算相似专利的例子10.9 小结第11 章...

    Hadoop实战中文版

    10.5.3 关系型运算符 10.5.4 执行优化 10.6 用户定义函数 10.6.1 使用UDF 10.6.2 编写UDF 10.7 脚本 10.7.1 注释 10.7.2 参数替换 10.7.3 多查询执行 10.8 Pig 实战——计算相似专利的例子 10.9 小结 第...

    Hadoop实战

    18910.5.4 执行优化 19610.6 用户定义函数 19610.6.1 使用UDF 19610.6.2 编写UDF 19710.7 脚本 19910.7.1 注释 19910.7.2 参数替换 20010.7.3 多查询执行 20110.8 Pig实战——计算相似专利的例子 20110.9 小结 206第...

    Hadoop实战中文版.PDF

    18910.5.4 执行优化 19610.6 用户定义函数 19610.6.1 使用UDF 19610.6.2 编写UDF 19710.7 脚本 19910.7.1 注释 19910.7.2 参数替换 20010.7.3 多查询执行 20110.8 Pig实战——计算相似专利的例子 ...

    大数据学习笔记.pdf

    5.1 Spark应用程序例子 ................................................................................................ 20 5.2 Spark-submit语法 ............................................................

Global site tag (gtag.js) - Google Analytics