目录
1、配置
要对HBase进行MR操作首先需要hadoop需要持有HBase的一些jar包才能连接到HBase
这些需要的jar包我们可以通过在hbase目录下输入:bin/hbase mapredcp查看
有两种方式实现
方法1:
这个方式是临时的,即将之前命令得到的值临时加到环境变量中
export HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`
若没有配置HBASE_HOME也可临时配置
方法2:
这个方法时将配置代码写到hadoop-env.sh中,使得每次启动hadoop都会执行这个配置代码:
注:要写到HADOOP_CLASSPATH的for循环后
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/module/hbase-1.3.1/lib/*
2、一些MR操作HBase的官方案例
案例1:统计指定表中的数据数量
/opt/module/hadoop-2.7.2/bin/yarn jar lib/hbase-server-1.3.1.jar rowcounter stu2
注hbase-server-1.3.1.jar就是官方案例的jar包
row=4代表有4个数据
案例2:将HDFS中的数据文件写入到HBase中
先将数据文件上传到HDFS中:
hadoop fs -put fruit.tsv /input/
在HBase中创建对应的表
执行官方文档MR:
/opt/module/hadoop-2.7.2/bin/yarn jar lib/hbase-server-1.3.1.jar importtsv \
-Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:color fruit \
hdfs://hadoop102:9000/input/fruit.tsv
其中-Dimpoettsv.columns=HBASE_ROW_KEY指定的是第一列数据为row key
info:name指定的是第二列数据为info列族下的name列
info:color也是如此
且这些值的顺序可以打乱,只要符合你表的数据的分布就行
fruit为表名
我们来看看结果:
3、API实现MR操作HBase
第一个MR代码是实现将HDFS中的数据文件保存到HBase中
第二个MR代码是实现将HBase表中的符合条件的数据提取出保存到另一个表中
若是要读HDFS中的文件则map继承Mapper,若要读取H