首页 > 其他分享 >Hbase MapReduce例子

Hbase MapReduce例子

时间:2023-09-21 10:03:57浏览次数:57  
标签:bin 0.20 jar MapReduce hadoop 例子 iic hbase Hbase


Hbase Mapreduce例子


http://hadoop.apache.org/hbase/docs/current/api/org/apache/hadoop/hbase/mapreduce/package-summary.html#package_description

http://wiki.apache.org/hadoop/Hbase/MapReduce (Deprecated)

 

需要重启Hadoop的方式

所有机器都有修改配置

1:修改$HADOOP_HOME/conf/hadoop-env.sh

export HBASE_HOME=/home/iic/hbase-0.20.3

exportHADOOP_CLASSPATH=$HBASE_HOME/hbase-0.20.3.jar:$HBASE_HOME/hbase-0.20.3-test.jar:$HBASE_HOME/conf:${HBASE_HOME}/lib/zookeeper-3.3.0.jar

 

不需要重启Hadoop的方式(把依赖类库打包进jar/lib目录下,同时代码中调用job.setJarByClass(XXX.class);)

Another possibility, if forexample you do not have access to hadoop-env.sh or are unable torestart the hadoop cluster, is bundling the hbase jars into amapreduce job jar adding it and its dependencies under the jobjar lib/

 

测试,出现异常:java.lang.OutOfMemoryError: Java heap space

bin/hadoop org.apache.hadoop.hbase.PerformanceEvaluationsequentialWrite 4 

HBase map reduce 2

此例子,把表mrtest中的列contents的值,反转后,保存到列text里。

bin/hbase shell

create 'mrtest', 'contents','text'

put 'mrtest', '1','contents:', 'content'

put'mrtest', '1', 'text:','text'

get'mrtest','1'

 

类com.test.hadoop.hbase.HBaseTest 生成100W的测试数据。

 

/home/iic/hadoop-0.20.2/bin/hadoopjar  examples/examples_1.jar  examples.TestTableMapReduce

 

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 rowcounterscores grade

结果

10/04/12 17:08:05 INFOmapred.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/hadoopjar  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/hadoopjar  examples.zip  examples.TestHFileOutputFormat

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

exportPATH=$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

 

查看其使用方式

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

Usage: loadtable.rb TABLENAMEHFILEOUTPUTFORMAT_OUTPUT_DIR

其使用JRuby

 

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

1:your MapReduce job ensures a total ordering among all keys ,bydefault distributes keys among reducers using a Partitioner thathashes 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 wouldget keys 1 and 3 (in order).

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

 

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

 

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

 

验证导入的行数

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

 

HFile生成例子2:

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

对于后续的数据操作,可以使用Map文本文件+HbaseTable直接操作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个ReduceTask,避免Total Order Key的问题

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

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

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

导入Hbase

jruby bin/loadtable.rb

 

验证导入的行数

bin/hadoop jar /home/iic/hbase-0.20.3/hbase-0.20.3.jarrowcounter 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/


 


标签:bin,0.20,jar,MapReduce,hadoop,例子,iic,hbase,Hbase
From: https://blog.51cto.com/u_16255870/7548695

相关文章

  • HBase 之HFileOutputFormat
     hadoopmr输出需要导入hbase的话最好先输出成HFile格式,再导入到HBase,因为HFile是HBase的内部存储格式,所以导入效率很高,下面是一个示例1.创建HBase表t11.hbase(main):157:0*create't1','f1'2.0row(s)in1.3280seconds3.4.hbase(main):158:0>5.ROW......
  • hadoop,hbase,hive安装全记录
    操作系统:CentOS5.5Hadoop:hadoop-0.20.203.0jdk1.7.0_01namenode主机名:master,namenode的IP:10.10.102.15datanode主机名:slave1,datanode的IP:10.10.106.8datanode主机名:slave2,datanode的IP:10.10.106.9一、hadoop安装1、建立用户useraddhadooppasswdhadoop2.安装JDK*先查......
  • 把xls的数据导到Hbase
    这属于Hbase的一个例子,不过Hbase的例子有点问题,需要更改下。其实我感觉Hbase属于一个BigTable,感觉和xls真的很像,闲话不说了,上code才是王道。Java代码importjava.io.IOException;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.Path;i......
  • Hbase--执行hbase shell命令时提示:ERROR: KeeperErrorCode = NoNode for /hbase/mast
    1、问题描述执行hbase shell命令时提示:ERROR:KeeperErrorCode=NoNodefor/hbase/master2、问题原因这是与因为服务器重启后Hadoop的运行和Hbase的运行异常。3、解决办法依次去停止和启动Hadoop(1)到hadoop的sbin目录下 ./stop-all.sh(2)再./start-all.sh(3)再到hbase的b......
  • java数据库连接池介绍与例子
    一、连接池原理及介绍:   数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能......
  • div 拖动例子
    第一个是简单的例子:<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html> <head> <title>dragTest</title> <metahttp-equiv="content-type"content="text/html;charset=UTF-8"> <......
  • Hbase Shell的常用命令
    总结的一些Hbaseshell的命令都很简单,可以help来查看帮助create'user_test','info'describe'user_test'disable'user_testinfo'drop'user_testinfo'put'user_test','test-1','info:username','test1......
  • HFile详解-基于HBase0.90.5
    1.HFile详解HFile文件分为以下六大部分 序号名称描述1数据块由多个block(块)组成,每个块的格式为:[块头]+[key长]+[value长]+[key]+[value]。2元数据块元数据是key-value类型的值,但元数据快只保存元数据的value值,元数据的key值保存在第五项(元数据索引块)中。该块由多个元数......
  • 实现mapreduce多文件自定义输出
     普通maprduce中通常是有map和reduce两个阶段,在不做设置的情况下,计算结果会以part-000*输出成多个文件,并且输出的文件数量和reduce数量一样,文件内容格式也不能随心所欲。这样不利于后续结果处理。如果只是想做到输出结果的文件名可控,实现自己的LogNameMultipleTextOutputFormat类,......
  • HBase HFile与Prefix Compression内部实现全解--KeyValue格式
    1.引子 HFile(HBaseFile)是HBase使用的一种文件存储格式的抽象, 目前存在两种版本的HFile:HFileV1和HFileV2 HBase0.92之前的版本仅支持HFileV1,HBase0.92/0.94同时支持HFileV1和HFileV2。 以下分别是HFileV1/V2的结构图: HFileV1HFileV2(注:这两个图片在hbase......