我正在一个在S3上启用的EMR集群 (emr-5.7.0)上运行HBase。我们使用'ImportTsv‘和实用程序将数据导入HBase。在我们的过程中,我们观察到断断续续地出现了一些故障,指出一些导入的文件存在HFile损坏。这是偶然发生的,我们无法推断出错误的模式。
经过大量的研究,并在博客中浏览了许多建议,我尝试了下面的修正,但没有效果,我们仍然面临着差异。
技术栈:
数据卷:
按顺序使用的命令: ( 1) hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=“-Dimporttsv.columns=”<列名(472列)>“-Dimporttsv.bulk.output=”( 2) hadoop fs -chmod 777 3)
修复尝试:
- We increased the below property but it did not seem to resolve the issue. _**fs.s3.maxConnections**_ : Values tried -- 10000, 20000, 50000, 100000.
- Another approach was to execute the HBase repair command but it didn't seem to help either.命令:hbase hbck -repair
错误跟踪如下:
LoadIncrementalHFiles-17 region=WB_MASTER,00218333246,1506304894610.f108f470c00356217d63396aa11cf0bc.,hostname=ip-10-244-8-74.ec2.internal,16020,1507907710216,:从区域服务器接收CorruptHFileException :表WB_MASTER上的“00218333246”行org.apache.hadoop.hbase.io.hfile.CorruptHFileException: org.apache.hadoop.hbase.io.hfile.CorruptHFileException:在从org.apache.hadoop.hbase.io.hfile.HFile.createReader的org.apache.hadoop.hbase.io.hfile.HFile.pickReaderVersion(HFile.java:497)文件中读取HFile拖车时遇到的问题( org.apache.hadoop.hbase.regionserver.StoreFile$Reader.(StoreFile.java:1170) at org.apache.hadoop.hbase.regionserver.StoreFileInfo.open(StoreFileInfo.java:259) at org.apache.hadoop.hbase.regionserver.StoreFile.open(StoreFile.java:427) at org.apache.hadoop.hbase.regionserver.StoreFile.createReader(StoreFile.java:528) at org.apache.hadoop.hbase.regionserver.StoreFile.createReader( )( org.apache.hadoop.hbase.regionserver.HStore.createStoreFileAndReader(HStore.java:667) at org.apache.hadoop.hbase.regionserver.HStore.createStoreFileAndReader(HStore.java:659) at org.apache.hadoop.hbase.regionserver.HStore.bulkLoadHFile(HStore.java:799) at org.apache.hadoop.hbase.regionserver.HRegion.bulkLoadHFiles(HRegion.java:5574) at org.apache.hadoop.hbase.regionserver.RSRpcServices.bulkLoadHFile( )( org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:34952) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2339) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:123) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:188) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run( )( com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem$NativeS3FsInputStream.read(S3NativeFileSystem.java:203) at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) at java.io.BufferedInputStream.read1(BufferedInputStream.java:286) at java.io.BufferedInputStream.read(BufferedInputStream.java:345) at java.io.DataInputStream.readFully(DataInputStream.java:195) at org ).apache.hadoop.hbase.io.hfile.FixedFileTrailer.readFromStream(FixedFileTrailer.java:391) at org.apache.hadoop.hbase.io.hfile.HFile.pickReaderVersion(HFile.java:482)
任何找出造成这一差异的根本原因的建议都是很有帮助的。
感谢你的帮助!谢谢!
发布于 2018-02-12 16:25:22
经过大量的研究和尝试&错误之后,多亏了AWS支持人员,我终于找到了解决这个问题的方法。这个问题似乎是S3最终一致性的结果。AWS团队建议使用下面的属性,它很有魅力,到目前为止我们还没有触及HFile的腐败问题。希望这会有帮助,如果有人正面临同样的问题!
属性(hbase-site.xml):hbase.bulkload.retries.retryOnIOException :真
https://stackoverflow.com/questions/47998979
复制相似问题