HBase(九)集成MapReduce

HBase表中的数据最终都是存储在HDFS上,HBase天生的支持MR的操作,我们可以通过MR直接处理HBase表中的数据,并且MR可以将处理后的结果直接存储到HBase表中。

参考: http://hbase.apache.org/book.html#mapreduce

实战一:HBase表到HBase表

需求:读取HBase当中myuser这张表的f1:name、f1:age数据,将数据写入到另外一张myuser2表的f1列族里面去

第一步:创建myuser2这张hbase表

注意:列族的名字要与myuser表的列族名字相同

第二步:创建maven工程并导入jar包

第三步:开发MR程序实现功能

自定义map类

自定义reduce类

main入口类

实战二: HDFS到HBase表

需求读取hdfs上面的数据,写入到hbase表里面去

hadoop102执行以下命令准备数据文件,并将数据文件上传到HDFS上面去

在/opt/data目录,创建user.txt文件

内容如下:

将文件上传到hdfs的路径下面去

代码开发

实战三:HDFS到HBase表(批量加载)

需求

通过bulkload的方式批量加载数据到HBase表中

将我们hdfs上面的这个路径/hbase/input/user.txt的数据文件,转换成HFile格式,然后load到myuser2这张表里面去

知识点描述:

  • 加载数据到HBase当中去的方式多种多样,我们可以使用HBase的javaAPI或者使用sqoop将我们的数据写入或者导入到HBase当中去,但是这些方式不是最佳的,因为在导入的过程中占用Region资源导致效率低下

  • 我们也可以通过MR的程序,将我们的数据直接转换成HBase的最终存储格式HFile,然后直接load数据到HBase当中去即可

HBase数据正常写流程回顾

bulkload方式的处理示意图

好处

  • 导入过程不占用Region资源
  • 能快速导入海量的数据
  • 节省内存
  1. 开发生成HFile文件的代码

自定义map类

程序main

3、观察HDFS上输出的结果

4、加载HFile文件到hbase表中

方式一:代码加载

Views: 12