bulk-load 装载HDFS数据到HBase
bulk-load的作用是用mapreduce的方式将hdfs上的文件装载到hbase中,对于海量数据装载入hbase非常有用,参考http://hbase.apache.org/docs/r0.89.20100621/bulk-loads.html:
hbase提供了现成的程序将hdfs上的文件导入hbase,即bulk-load方式。它包括两个步骤(也可以一次完成):
1 将文件包装成hfile,hadoop jar /path/to/hbase.jar importtsv -Dimporttsv.columns=a,b,c <tablename> <inputdir>
比如:
- hadoop dfs -cat test/1
- 1 2
- 3 4
- 5 6
- 7 8
执行
- hadoop jar ~/hbase/hbase-0.90.2.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,f1 t8 test
将会启动mapreduce程序在hdfs上生成t8这张表,它的rowkey分别为1 3 5 7,对应的value为2 4 6 8
注意,源文件默认以"\t"为分割符,如果需要换成其它分割符,在执行时加上-Dimporttsv.separator=",",则变成了以","分割
2 在上一步中,如果设置了输出目录,如
- hadoop jar ~/hbase/hbase-0.90.2.jar importtsv -Dimporttsv.bulk.output=tmp -Dimporttsv.columns=HBASE_ROW_KEY,f1 t8 test
那么t8表还暂时不会生成,只是将hfile输出到tmp文件夹下,我们可以查看tmp:
- hadoop dfs -du tmp
- Found 3 items
- 0 hdfs://namenode:9000/user/test/tmp/_SUCCESS
- 65254 hdfs://namenode:9000/user/test/tmp/_logs
- 462 hdfs://namenode:9000/user/test/tmp/f1
然后执行hadoop jar hbase-VERSION.jar completebulkload /user/todd/myoutput mytable将这个输出目录中的hfile转移到对应的region中,这一步因为只是mv,所以相当快。如:
hadoop jar ~/hbase/hbase-0.90.2.jar completebulkload tmp t8
然后
- hadoop dfs -du /hbase/t8/c408963c084d328490cc2f809ade9428
- Found 4 items
- 124 hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f809ade9428/.oldlogs
- 692 hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f809ade9428/.regioninfo
- 0 hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f809ade9428/.tmp
- 462 hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f809ade9428/f1
此时己经生成了表t8
注意,如果数据特别大,而表中原来就有region,那么会执行切分工作,查找数据对应的region并装载
程序使用中注意:
1 因为是执行hadoop程序,不会自动查找hbase的config路径,也就找不到hbase的环境变量。因此需要将hbase-site.xml加入到hadoop-conf变量中
2 还需要将hbase/lib中的jar包放入classpath中
3 执行以上的步骤2时需要将zookeeper的配置写入core-site.xml中,因为在那一步时甚至不会读取hbase-site.xml,否则会连不上zookeeper
bulk-load 装载HDFS数据到HBase的更多相关文章
- 用mapreduce读取hdfs数据到hbase上
hdfs数据到hbase过程 将HDFS上的文件中的数据导入到hbase中 实现上面的需求也有两种办法,一种是自定义mr,一种是使用hbase提供好的import工具 hbase先创建好表 cre ...
- hdfs数据到hbase过程
需求:将HDFS上的文件中的数据导入到hbase中 实现上面的需求也有两种办法,一种是自定义mr,一种是使用hbase提供好的import工具 一.hdfs中的数据是这样的 hbase创建好表 cre ...
- phoenix将hdfs数据导入hbase
http://phoenix.apache.org/bulk_dataload.html
- 大数据查询——HBase读写设计与实践
导语:本文介绍的项目主要解决 check 和 opinion2 张历史数据表(历史数据是指当业务发生过程中的完整中间流程和结果数据)的在线查询.原实现基于 Oracle 提供存储查询服务,随着数据量的 ...
- 大数据查询——HBase读写设计与实践--转
背景介绍 本项目主要解决 check 和 opinion2 张历史数据表(历史数据是指当业务发生过程中的完整中间流程和结果数据)的在线查询.原实现基于 Oracle 提供存储查询服务,随着数据量的不断 ...
- Bulk Load-HBase数据导入最佳实践
一.概述 HBase本身提供了非常多种数据导入的方式,通常有两种经常使用方式: 1.使用HBase提供的TableOutputFormat,原理是通过一个Mapreduce作业将数据导入HBase 2 ...
- 【hbase】——bulk load导入数据时value=\x00\x00\x00\x01问题解析
一.存入数据类型 Hbase里面,rowkey是按照字典序进行排序.存储的value值,当用filter进行数据筛选的时候,所用的比较算法也是字典序的. 1.当存储的value值是float类型的时候 ...
- 简述HBase的Bulk Load
为什么用Bulk load? 批量加载数据到HBase集群,有很多种方式,比如利用 HBase API 进行批量写入数据.使用Sqoop工具批量导数到HBase集群.使用MapReduce批量导入等等 ...
- 图解JanusGraph系列 - 关于JanusGraph图数据批量快速导入的方案和想法(bulk load data)
大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 整理所有图相关文章,请移步(超链):图数据库系列-文章总目录 源码分析相关可查看github(码文不易,求个sta ...
随机推荐
- Shell脚本生成网页版相册浏览器
今天学到了一招,那就是使用脚本制作一款网页版相册浏览器.先上图吧. 必备基础 操作系统: 以linux为内核的操作系统都行 编程语言:Shell(bash)脚本,相关基础知识即可 下载工具:wget ...
- Hibernate之配置文件
可持久化对象有以下三种状态: 临时状态(Transient):对象在保存进数据库之前为临时状态,这时数据库中没有该对象的信息,如果没有持久化,程序退出后临时状态的对象信息将会丢失.随时可能被垃圾回收器 ...
- memcached实战系列(一)memcached安装
下载并安装Memcached服务器端 我用的是cenos6.5 64位系统. libevent是个程序库,它将Linux的epoll.BSD类操作系统的kqueue等事件处理功能封装成统一的接口,具有 ...
- 剑指Offer——乐视笔试题+知识点总结
剑指Offer--乐视笔试题+知识点总结 情景回顾 时间:2016.9.19 15:10-17:10 地点:山东省网络环境智能计算技术重点实验室 事件:乐视笔试 总体来说,乐视笔试内容体量不算少, ...
- [C++学习历程]基础部分 C++中的指针数组和结构
作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/19938177 一.指针 对学习C++来说,指针是一项重要内容,以前,教 ...
- TCP的流量控制与拥塞控制小结
概述 为了提高信道的利用率TCP协议不使用停止等待协议,而是使用连续ARQ协议,意思就是可以连续发出若干个分组然后等待确认,而不是发送一个分组就停止并等待该分组的确认.其中TCP的流量控制与拥塞控制是 ...
- 管道模式——pipeline与valve
在一个比较复杂的大型系统中,假如存在某个对象或数据流需要被进行繁杂的逻辑处理的话,我们可以选择在一个大的组件中进行这些繁杂的逻辑处理,这种方式确实达到了目的,但却是简单粗暴的.或许在某些情况这种简单粗 ...
- pig的limit无效(返回所有记录)sample有效
pig中,limit可以取样少部分数据,但有很多问题,比如数据不能少于10条,否则返回全部. 今天又遇到另一个问题: group后的数据,limit无效:也就是group后的数据,不能用limit,估 ...
- Linux多线程实践(7) --多线程排序对比
屏障 int pthread_barrier_init(pthread_barrier_t *restrict barrier, const pthread_barrierattr_t *restri ...
- Workflow相关表简单分析
静态定义表(没有ITEM_KEY,因为ITEM_KEY代表一个wf实例) --获取item_type定义. SELECT * FROM wf_item_types t WHEREt.name= 'CU ...