aws s3上的hbase hfile损坏

3lxsmp7m  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(557)

我正在s3上启用的emr群集(emr-5.7.0)上运行hbase。我们使用“importtsv”和“completebulkload”实用程序将数据导入hbase。在我们的过程中,我们观察到有间歇性的失败,说明有一些导入文件的hfile损坏。这种情况偶尔发生,我们无法推断错误的模式。
经过大量的研究和博客上的许多建议,我尝试了下面的修复方法,但没有效果,我们仍然面临着差异。
技术堆栈:
aws emr群集(emr-5.7.0 | r3.8x15节点)
美国焊接学会s3
hbase 1.3.1版
数据量:
~960000行(待升级)~7gb tsv文件
按顺序使用的命令:

1) hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="|"  -Dimporttsv.columns="<Column Names (472 Columns)>" -Dimporttsv.bulk.output="<HFiles Path on HDFS>" <Table Name> <TSV file path on HDFS> 
 2) hadoop fs -chmod 777 <HFiles Path on HDFS>
 3) hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles <HFiles Path on HDFS> <Table Name>

尝试的修复程序:
增加s3最大连接数:
我们增加了以下财产,但似乎没有解决问题。fs.s3.maxconnections:尝试的值--10000、20000、50000、100000。
hbase修复:
另一种方法是执行hbase repair命令,但似乎也没有什么帮助。
命令:hbase hbase hbck-repair
错误跟踪如下:
[loadincrementalhfiles-17]mapreduce.loadincrementalhfiles:从区域服务器接收到损坏的文件异常:region=wb\u master的表“wb\u master”上的行“00218333246”,00218333246106304894610.f108f470c00356217d63396aa11cf0bc.,hostname=ip-10-244-8-74.ec2.internal,160201507907710216,seqnum=198 org.apache.hadoop.hbase.io.hfile.corrupthfileexception:org.apache.hadoop.hbase.io.hfile.corrupthfileexception:从文件s3://wbpoc landingzone/emrfs\u test/wb\u hbase\u compressed/data/default/wb\u master/f108f470c00356217d63396aa11cf0bc/cf/2a9ecdc5c3aa4ad8aca535c56c35a32d\u seqid\u 200\读取hfile尾文件时出现问题org.apache.hadoop.hbase.io.hfile.hfile.pickreaderversion(hfile。java:497)在org.apache.hadoop.hbase.io.hfile.hfile.createreader(hfile。java:525)在org.apache.hadoop.hbase.regionserver.storefile$reader。java:1170)在org.apache.hadoop.hbase.regionserver.storefileinfo.open(storefileinfo。java:259)在org.apache.hadoop.hbase.regionserver.storefile.open(storefile。java:427)在org.apache.hadoop.hbase.regionserver.storefile.createreader(storefile。java:528)在org.apache.hadoop.hbase.regionserver.storefile.createreader(storefile。java:518)在org.apache.hadoop.hbase.regionserver.hstore.createstorefileandreader(hstore。java:667)在org.apache.hadoop.hbase.regionserver.hstore.createstorefileandreader(hstore。java:659)在org.apache.hadoop.hbase.regionserver.hstore.bulkloadhfile(hstore。java:799)在org.apache.hadoop.hbase.regionserver.hregion.bulkloadhfiles(hregion。java:5574)位于org.apache.hadoop.hbase.regionserver.rsrpcservices.bulkloadhfile(rsrpcservices)。java:2034)在org.apache.hadoop.hbase.protobuf.generated.clientprotos$clientservice$2.callblockingmethod(clientprotos。java:34952)在org.apache.hadoop.hbase.ipc.rpcserver.call(rpcserver。java:2339)在org.apache.hadoop.hbase.ipc.callrunner.run(callrunner。java:123)在org.apache.hadoop.hbase.ipc.rpcexecutor$handler.run(rpcexecutor。java:188)在org.apache.hadoop.hbase.ipc.rpcexecutor$handler.run(rpcexecutor。java:168)原因:java.io.filenotfoundexception:com.amazon.ws.emr.hadoop.fs.s3n.s3nativefilesystem$natives3fsinputstream.read(s3nativefilesystem)的s3上不存在文件。java:203)在java.io.bufferedinputstream.fill(bufferedinputstream。java:246)在java.io.bufferedinputstream.read1(bufferedinputstream。java:286)在java.io.bufferedinputstream.read(bufferedinputstream。java:345)在java.io.datainputstream.readfully(datainputstream。java:195)位于org.apache.hadoop.hbase.io.hfile.fixedfiletrailer.readfromstream(fixedfiletrailer)。java:391)在org.apache.hadoop.hbase.io.hfile.hfile.pickreaderversion(hfile。java:482)
任何关于找出这种差异的根本原因的建议都会很有帮助。
谢谢你的帮助!谢谢您!

eni9jsuy

eni9jsuy1#

经过大量的研究和尝试和错误,我终于能够找到解决这个问题的办法,感谢aws的支持人员。这个问题似乎是s3最终一致性的结果。aws团队建议使用下面的属性,它非常有效,到目前为止,我们还没有触及hfile腐败问题。如果有人面临同样的问题,希望这能有所帮助!
属性(hbase site.xml):hbase.bulkload.retries.retryonioexception:true

相关问题