【发布时间】:2018-06-08 12:00:01
【问题描述】:
我在 EMR 集群 (emr-5.7.0) 上运行 HBase, 启用>S3。 我们正在使用 'ImportTsv' 和 'CompleteBulkLoad' 实用程序将数据导入 HBase。 在我们的过程中,我们观察到间歇性地出现故障,表明某些导入的文件存在 HFile 损坏。这种情况偶尔会发生,我们无法推断出错误的模式。
经过大量研究和博客中的许多建议,我尝试了以下修复但无济于事,我们仍然面临着差异。
技术栈:
AWS EMR 集群(emr-5.7.0 | r3.8xlarge | 15 个节点)
AWS 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 修复命令,但它似乎也没有帮助。
命令:hbase hbase hbck -repair
错误跟踪如下:
[LoadIncrementalHFiles-17] mapreduce.LoadIncrementalHFiles: 收到一个 来自区域服务器的 CorruptHFileException:表上的行 '00218333246' 'WB_MASTER' 在 区域=WB_MASTER,00218333246,1506304894610.f108f470c00356217d63396aa11cf0bc., 主机名=ip-10-244-8-74.ec2.internal,16020,1507907710216, seqNum=198 org.apache.hadoop.hbase.io.hfile.CorruptHFileException: org.apache.hadoop.hbase.io.hfile.CorruptHFileException:问题 从文件中读取 HFile Trailer s3://wbpoc-landingzone/emrfs_test/wb_hbase_compressed/data/default/WB_MASTER/f108f470c00356217d63396aa11cf0bc/cf/2a9ecdc5c3aa4ad8aca535f56c35a32d_SeqId_200_ 在 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.(StoreFile.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:文件在 S3 上不存在 com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem$NativeS3FsInputStream.read(S3NativeFileSystem.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)
在找出这种差异的根本原因方面的任何建议都会非常有帮助。
感谢您的帮助!谢谢!
【问题讨论】:
标签: hadoop amazon-s3 mapreduce hbase elastic-map-reduce