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 ,添加HBase类库引用
export HBASE_HOME=/home/iic/hbase-0.20.3
export HADOOP_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 for example you do not have access to hadoop-env.sh or are unable to restart the hadoop cluster, is bundling the hbase jars into a mapreduce job jar adding it and its dependencies under the job jar lib/
directory and the hbase conf into the job jars top-level directory.
测试,出现异常:java.lang.OutOfMemoryError: Java heap space
bin/hadoop org.apache.hadoop.hbase.PerformanceEvaluation sequentialWrite 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/hadoop jar 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 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/
分享到:
相关推荐
这个压缩包文件包含的是Hadoop 1.1.2版本的操作示例,以及与之相关的HBase、Hive和MapReduce的jar包。这些工具是大数据处理生态系统中的核心组件,下面将分别详细介绍它们的功能和用法。 **Hadoop**: Hadoop是...
行计数示例**:通过一个简单的例子来演示如何使用MapReduce来计算HBase表中的行数。 - **50. Map 任务分割**:解释了如何优化MapReduce作业中Map任务的分割策略。 - **51. HBase MapReduce 示例**:提供了几个使用...
- **Schema Design Case Studies**(模式设计案例研究):通过具体的例子展示如何设计有效的HBase表结构。 #### 七、HBase与MapReduce集成 - **HBase, MapReduce, and the CLASSPATH**(HBase、MapReduce与...
案例研究是通过实际的例子展示HBase如何在不同的应用场景下工作。这包括Schema设计和性能、故障排除方面的案例。 ### 运维管理 运维管理章节介绍了HBase的工具和实用程序,帮助管理员更好地维护和管理HBase集群。 ...
2. 空间JOIN操作:通过预计算或者MapReduce任务,模拟实现传统数据库中的JOIN操作。 3. 并行处理:利用HBase的分布式特性,进行大规模地理数据的并行处理和分析。 五、GISMaster的性能优化 1. 表分区:根据地理区域...
- **第2章:入门指南**:通过一个简单的例子来展示如何安装配置HBase环境,以及如何使用命令行工具进行基本操作,如创建表、插入数据和查询数据。 - **第3章:分布式HBase、HDFS和MapReduce**:深入探讨HBase如何...
本文旨在帮助初次接触HBase的业务开发与测试人员快速理解HBase的基本概念和技术要点,包括HTable的设计原则、与HBase的交互方式、利用MapReduce进行数据分析以及如何测试HBase MapReduce任务。 **1.2 从一个示例...
接下来,会进一步涉及分布式HBase的概念,包括HBase如何与Hadoop的文件系统(HDFS)结合,以及如何在HBase之上使用MapReduce进行大规模数据分析。由于HBase是构建在HDFS之上,它能够利用HDFS的高可靠性和容错性。...
- **HBase MapReduce示例**:提供了一些使用HBase进行MapReduce编程的例子。 - **跨表访问**:在一个MapReduce作业中访问多个HBase表的方法。 #### 八、HBase安全 - **客户端访问控制**:确保只有授权用户可以访问...
HBase是Hadoop项目的一部分,运行在Hadoop文件系统(HDFS)之上,支持MapReduce的批处理作业。 本书可以为读者提供HBase的基础知识和高级应用的知识。首先,它从HBase的基础概念和快速开始入手,涵盖了HBase的核心...
《HBase权威指南》中的例7.1是一个典型的MapReduce作业示例,它演示了如何使用MapReduce将数据从一个文件加载到HBase表中。这个过程涉及到了多个关键的IT知识点,包括HBase的基本概念、MapReduce的工作原理以及它们...
其次,书中会涉及HBase与Hadoop的关系,包括如何在Hadoop集群上部署和管理HBase,以及如何利用Hadoop MapReduce进行批量数据处理。HBase可以无缝集成到Hadoop生态系统中,借助HDFS(Hadoop Distributed File System...
【Java大数据作业_5Mapreduce、数据挖掘】的课后作业涵盖了多个MapReduce和大数据处理的关键知识点,包括日志分析、Job执行模式、HBase的相关类、容量调度配置、MapReduce流程以及二次排序算法。下面将对这些内容...
为了更好地理解和应用HBase,可以参考学生成绩分析的例子。例如,学校可以利用HBase存储和分析海量的学生学籍信息和成绩记录,利用HBase的列存储和高扩展性,实现对大规模学生成绩数据的实时查询和分析。 总结来说...
`TableInputFormat`是HBase提供的一个输入格式类,它可以将HBase表的数据转换为Hadoop MapReduce可以处理的键值对。在Java中,我们需要通过`HBaseConfiguration`创建一个配置对象,然后设置HBase的相关属性,如...
5. **Hadoop**:Hadoop是开源的大数据处理框架,主要由HDFS(分布式文件系统)和MapReduce(并行计算模型)组成。在这个云盘系统中,Hadoop可能是用来分布式存储文件数据,确保数据的冗余和容错性。 项目结构...
在这个例子中,Map函数用于将文档中的单词拆分为键值对,Reduce函数则汇总各个单词出现的次数。 #### Hadoop扩展 除了HDFS和MapReduce之外,Hadoop还有一系列扩展组件,包括: - **HBase**:一个高性能的分布式列...
为了实现这些需求,HBase以Native API、Thriftserver(支持C++、PHP、Go、Python语言)、Phoenix查询服务器、MapReduce作业、Spark作业和流处理的方式进行访问。 在滴滴的使用案例中,数据主要分为几类:统计结果和...