没有合适的资源?快使用搜索试试~ 我知道了~
hdfs上内容读取到hbase,纯正的Mapreduce代码。试试看,支持多线程
资源推荐
资源详情
资源评论
MapReduce生成HFile文件,再使用BulkLoad导入HBase中(完全分布式运行)
分类: HBase学习 Hadoop JAVA开发 2014-05-09 21:16 990人阅读 评论(5) 收藏 举报
声明: 若要转载, 请标明出处.
前提: 在对于大量的数据导入到HBase中, 如果一条一条进行插入, 则太耗时了, 所以可以先采用MapReduce生成HFile文件, 然后使用BulkLoad导入HBase中.
引用:
一、这种方式有很多的优点:
1. 如果我们一次性入库hbase巨量数据,处理速度慢不说,还特别占用Region资源, 一个比较高效便捷的方法就是使用 “Bulk Loading”方法,即HBase提供的HFileOutputFormat类。
2. 它是利用hbase的数据信息按照特定格式存储在hdfs内这一原理,直接生成这种hdfs内存储的数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。配合mapreduce完成,高效便捷,而且不占用region资源,增添负载。
二、这种方式也有很大的限制:
1. 仅适合初次数据导入,即表内数据为空,或者每次入库表内都无数据的情况。
2. HBase集群与Hadoop集群为同一集群,即HBase所基于的HDFS为生成HFile的MR的集群.
本文代码采用Eclipse编辑器(Linux环境下)
一. 网上的大部分代码都是或多或少有问题, 比如他们或者不是运行在集群上,或者运行时有问题, 后面会对产生哪些问题进行说明, 先不说这么多了,先上代码吧.
二. 源代码(注: 作者亲测运行在集群上成功,集群基于Ubuntu12.04, Hadoop-1.2.1与HBase-0.98,使用自带的ZooKeeper)
1. MapReduce生产HFile文件
首先, 需要导入的数据的表格(BigClientEnergyInfo表)有四个列族, 每个列族下面有一些列, 这些信息都使用常量配置类CONSTANT_HADOOP与CONSTANT_HBASE进行说明,如下:
分类: HBase学习 Hadoop JAVA开发 2014-05-09 21:16 990人阅读 评论(5) 收藏 举报
声明: 若要转载, 请标明出处.
前提: 在对于大量的数据导入到HBase中, 如果一条一条进行插入, 则太耗时了, 所以可以先采用MapReduce生成HFile文件, 然后使用BulkLoad导入HBase中.
引用:
一、这种方式有很多的优点:
1. 如果我们一次性入库hbase巨量数据,处理速度慢不说,还特别占用Region资源, 一个比较高效便捷的方法就是使用 “Bulk Loading”方法,即HBase提供的HFileOutputFormat类。
2. 它是利用hbase的数据信息按照特定格式存储在hdfs内这一原理,直接生成这种hdfs内存储的数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。配合mapreduce完成,高效便捷,而且不占用region资源,增添负载。
二、这种方式也有很大的限制:
1. 仅适合初次数据导入,即表内数据为空,或者每次入库表内都无数据的情况。
2. HBase集群与Hadoop集群为同一集群,即HBase所基于的HDFS为生成HFile的MR的集群.
本文代码采用Eclipse编辑器(Linux环境下)
一. 网上的大部分代码都是或多或少有问题, 比如他们或者不是运行在集群上,或者运行时有问题, 后面会对产生哪些问题进行说明, 先不说这么多了,先上代码吧.
二. 源代码(注: 作者亲测运行在集群上成功,集群基于Ubuntu12.04, Hadoop-1.2.1与HBase-0.98,使用自带的ZooKeeper)
1. MapReduce生产HFile文件
首先, 需要导入的数据的表格(BigClientEnergyInfo表)有四个列族, 每个列族下面有一些列, 这些信息都使用常量配置类CONSTANT_HADOOP与CONSTANT_HBASE进行说明,如下:
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
package cn.hey.loaddata2hbase;
/**
*
* @author HeYong
* @version 1
* @time 2014-05-09
*
*/
public class CONSTANT_HADOOP {
//大客户表BigClientEnergyInfo的HFile生成Job名字
public static final String BigClientEnergyInfo_JobName = "BigClientEnergyInfo_HFileGenerator_Job";
//大客户表BigClientEnergyInfo的输入原始文本信息的HDFS路径
public static final String BigClientEnergyInfo_inDir = "hdfs://node1:49000/user/hadoop/input/BigClientEnergyInfo/";
//大客户表BigClientEnergyInfo的HFile文件的输出HDFS路径
public static final String BigClientEnergyInfo_HFile_outDir = "hdfs://node1:49000/user/hadoop/output/BigClientEnergyInfo/";
//说明: 因为在创建HBase表的时候,默认只有一个Region,只有等到这个Region的大小超过一定的阈值之后,才会进行split
//所以为了利用完全分布式加快生成HFile和导入HBase中以及数据负载均衡,所以需要在创建表的时候预先进行分区,
//而进行分区时要利用startKey与endKey进行rowKey区间划分(因为导入HBase中,需要rowKey整体有序),所以在导入之前,自己先写一个MapReduce的Job求最小与最大的rowKey
//即startKey与endKey
//获取最大rowKey与最小rowKey的Job名字
public static final String GetMaxAndMinRowKey_JobName = "GetMaxAndMinRowKey_Job";
//大客户表BigClientEnergyInfo的输入原始文本信息的HDFS路径
public static final String GetMaxAndMinRowKey_inDir = "hdfs://node1:49000/user/hadoop/input/BigClientEnergyInfo/";
//最大rowKey与最小rowKey的输出HDFS路径
public static final String GetMaxAndMinRowKey_outDir = "hdfs://node1:49000/user/hadoop/output/GetMaxAndMinRowKey/";
package cn.hey.loaddata2hbase;
/**
*
* @author HeYong
* @version 1
* @time 2014-05-09
*
*/
public class CONSTANT_HADOOP {
//大客户表BigClientEnergyInfo的HFile生成Job名字
public static final String BigClientEnergyInfo_JobName = "BigClientEnergyInfo_HFileGenerator_Job";
//大客户表BigClientEnergyInfo的输入原始文本信息的HDFS路径
public static final String BigClientEnergyInfo_inDir = "hdfs://node1:49000/user/hadoop/input/BigClientEnergyInfo/";
//大客户表BigClientEnergyInfo的HFile文件的输出HDFS路径
public static final String BigClientEnergyInfo_HFile_outDir = "hdfs://node1:49000/user/hadoop/output/BigClientEnergyInfo/";
//说明: 因为在创建HBase表的时候,默认只有一个Region,只有等到这个Region的大小超过一定的阈值之后,才会进行split
//所以为了利用完全分布式加快生成HFile和导入HBase中以及数据负载均衡,所以需要在创建表的时候预先进行分区,
//而进行分区时要利用startKey与endKey进行rowKey区间划分(因为导入HBase中,需要rowKey整体有序),所以在导入之前,自己先写一个MapReduce的Job求最小与最大的rowKey
//即startKey与endKey
//获取最大rowKey与最小rowKey的Job名字
public static final String GetMaxAndMinRowKey_JobName = "GetMaxAndMinRowKey_Job";
//大客户表BigClientEnergyInfo的输入原始文本信息的HDFS路径
public static final String GetMaxAndMinRowKey_inDir = "hdfs://node1:49000/user/hadoop/input/BigClientEnergyInfo/";
//最大rowKey与最小rowKey的输出HDFS路径
public static final String GetMaxAndMinRowKey_outDir = "hdfs://node1:49000/user/hadoop/output/GetMaxAndMinRowKey/";
剩余21页未读,继续阅读
资源评论
stone_pig
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功