导入指标时遇到 importtsv.bulk.output 目录输出的hfile文件个数超过32个时,需要分为多步操作,
第一步: 先把超过的文件个数(bulk.output的目录下的hfile文件个数保持在32之内)移到别的目录下。
第二步: 执行 hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles output wordcount 把output目录下的hfile文件导入到 "wordcount" hbase表中.
第三步: 把之前移到别的目录下的文件重新移入至 output (bulk.output 该目录仍然不能超过32个hfile, 如果多个,请反复操作该步) 目录, 执行之前 第二步 直到所有文件导入至 "wordcount" hbase表
@黄坤 通过执行 completebulkload 工具的错误日志输出:
----------------------------------------
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.hbase.mapreduce.Driver.main(Driver.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.io.IOException: Trying to load more than 32 hfiles to one family of one region
at org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.doBulkLoad(LoadIncrementalHFiles.java:377)
at org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.run(LoadIncrementalHFiles.java:960)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.main(LoadIncrementalHFiles.java:967)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:71)
at org.apache.hadoop.util.ProgramDriver.run(ProgramDriver.java:144)
at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:152)
... 11 more
------------------------------------------
追踪源码发现如下代码 : this.maxFilesPerRegionPerFamily = conf.getInt("hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily", 32);
通过在执行加载数据时添加如下参数: ” -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=64 (64匹配 bulk.output输出目录下 hfile的文件个数) “ 即可一次导入数据至hbase,无需多次操作
例如执行命令:
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=64 output wordcount
or
sudo -u hbase hadoop jar $HBASE_HOME/hbase-server-1.0.0-cdh5.4.0.jar completebulkload -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=64 output wordcount
测试重现思路:
根据之前的描述,我们更改 "panda"集群的hbase RegionServer 的 hbase.hregion.max.filesize 的值 或在执行 importtvs 生成hfile工具是设定 -Dhbase.hregion.max.filesize=20971520 参数即可. 具体测试验证步骤:
第一步:设置 hbase.hregion.max.filesize 该值由10G 更改为 20MB.
第二步:准备导入hbase的文件大小是 2G (目的执行 importtvs 产生超过 32个hfile ) ( 计算方式: 20MB * 32 ( completebulkload 工具默认的hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily值是32) )
执行 importtvs 命令运行时设置 hbase.hregion.max.filesize 的文件大小,只需添加 -Dhbase.hregion.max.filesize=20971520 (20971520 == 20MB) 参数值即可 也可以通过设置集群中RegionServer 的 hbase.hregion.max.filesize 的值 ,
执行importtvs命令后生成多少个文件通过 读入文件的大小(File Input Format Counters / Bytes Read)/hbase.hregion.max.filesize 设定的值 = 得到hfile文件输出的个数.
hadoop jar $HBASE_HOME/hbase-server-1.0.0-cdh5.4.0.jar importtsv -Dimporttsv.bulk.output=output1 -Dhbase.hregion.max.filesize=20971520 -Dimporttsv.columns=HBASE_ROW_KEY,f:data wordcountexample 2013-09-25.csv
分享到:
相关推荐
NULL 博文链接:https://zhangxiong0301.iteye.com/blog/2222342
由于网上下的不支持最新的hadoop,hbase 版本自己稍微修改了下,支持最新版本HBase的图形化管理工具,目前修改改为hadoop-2.7.1版本,hbase-1.1.2版本,依赖可以自己切换,源代码已经包括再里边了,如想修改直接修改...
hbase+ycsb工具
HBASERegion数量增多问题描述及解决方案.docx
Hbase 可视化客户端工具(非phoenix连接),支持Hbase1.x,配置方便,类似PL/SQL,是一个HBase数据库的客户端数据管理软件。
1、有多个工具可选择使用
hbase表操作工具类.连接hbase数据库,根据rowkey删除单条记录,批量删除记录。获取某个字段的值,判断记录是否存在,向hbase表中插单条数据,批量插入到hbase表。 查询表,获取某个字段的值列表,hbase工具
博客配套文件,详细演示了如何通过MR程序的方式bulkload数据到hbase,代码可直接用于生产环境。
该资源为java客户端连接hbase集群,在windows客户端配置hadoop环境所需要用到的工具类,有需自取
hbase hfile v2 format draft 描述存储结构
hadoop-2.52-hbase-0.14-hadoop2 ha高可用安装,hbase动态添加删除节点,hbase集群正常状态及启动,hbase 问题汇总
hbase监控工具hbtop CDH6.3.2版本,用于监控表、namespace的访问情况,可快速定位问题
python3 使用 thrift 操作hbase 安装hbase-thirft后有一个Hbase报错 使用这个修改完成的Hbase类替换掉原来的Hbase类问题全部解决 主要是因为python版本兼容性带来的问题
说明:使用外部zookeeper3.4.13之hbase2.3.5一键部署工具,支持部署、启动、停止、清除、连接,支持自定义服务端口,数据存储目录等功能,已在生产环境使用。 Options: deploy.sh build single 构建并启动一个hbase...
9.8. Bulk Loading 9.9. HDFS 10. 外部 APIs 10.1. 非Java语言和 JVM交互 10.2. REST 10.3. Thrift 11. 性能调优 11.1. 操作系统 11.2. 网络 11.3. Java 11.4. HBase 配置 11.5. ZooKeeper 11.6. Schema 设计 11.7. ...
支持最新版本HBase的图形化管理工具,如果再有新版本不支持了的话,请给我留言,我会进行更新。本次版本更新时间为2017-04-06
网上的HBase书都比较老了,这是目前为止最新版本的HBase电子书。 Part I: Core Concepts Chapter 1: Fundamental Characteristics Chapter 2: Apache HBase and HDFS Chapter 3: Application Characteristics...
hbase2修复工具jar包,用于hbase的rit等修复服务
这是本人使用hbase shell的部分经验总结,一般的shell使用全部包括了。 版本,压缩,region等需求,以及使用普通shell使用hbase shell