Uploaded image for project: 'Hadoop HDFS'
  1. Hadoop HDFS
  2. HDFS-9803

Proactively refresh ShortCircuitCache entries to avoid latency spikes

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None
    • None

    Description

      我的区域服务器日志中充斥着诸如“SecretManager$InvalidToken:尝试设置对 <hdfs-file-path> 的短路访问时访问控制错误...已过期”之类的消息。这些日志与来自区域服务器的 responseTooSlow WARNings 相对应。

      2016-01-19 22:10:14,432 INFO [B.defaultRpcServer.handler=4,queue=1,port=16020] 短路。ShortCircuitCache:ShortCircuitCache(0x71bdc547):无法加载 10740376333_BP6016-1034500000000000000000000000000000000000000例外。
      org.apache.hadoop.security.token.SecretManager$InvalidToken:尝试使用 block_token_identifier 设置对 <hfile path> 令牌的短路访问时出现访问控制错误(expiryDate=1453194430724,keyId=1508822027,userId=hbase,blockPoolId=BP -1145309065-XXX-1448053136416,blockId=1074037633,访问模式=[READ])已过期。
      	在 org.apache.hadoop.hdfs.BlockReaderFactory.requestFileDescriptors(BlockReaderFactory.java:591)
      	在 org.apache.hadoop.hdfs.BlockReaderFactory.createShortCircuitReplicaInfo(BlockReaderFactory.java:490)
      	在 org.apache.hadoop.hdfs.shortcircuit.ShortCircuitCache.create(ShortCircuitCache.java:782)
      	在 org.apache.hadoop.hdfs.shortcircuit.ShortCircuitCache.fetchOrCreate(ShortCircuitCache.java:716)
      	在 org.apache.hadoop.hdfs.BlockReaderFactory.getBlockReaderLocal(BlockReaderFactory.java:422)
      	在 org.apache.hadoop.hdfs.BlockReaderFactory.build(BlockReaderFactory.java:333)
      	在 org.apache.hadoop.hdfs.DFSInputStream.blockSeekTo(DFSInputStream.java:618)
      	在 org.apache.hadoop.hdfs.DFSInputStream.readWithStrategy(DFSInputStream.java:844)
      	在 org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:896)
      	在 java.io.DataInputStream.read(DataInputStream.java:149)
      	在 org.apache.hadoop.hbase.io.hfile.HFileBlock.readWithExtra(HFileBlock.java:678)
      	在 org.apache.hadoop.hbase.io.hfile.HFileBlock$AbstractFSReader.readAtOffset(HFileBlock.java:1372)
      	在 org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl.readBlockDataInternal(HFileBlock.java:1591)
      	在 org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl.readBlockData(HFileBlock.java:1470)
      	在 org.apache.hadoop.hbase.io.hfile.HFileReaderV2.readBlock(HFileReaderV2.java:437)
      ...
      

      一个潜在的解决方案可能是拥有一个后台线程,尽最大努力在令牌过期之前主动刷新缓存中的令牌,以最大限度地减少对关键路径的延迟影响。

      感谢cnauroth用户列表上提供解释并建议解决方案。

      Attachments

        Activity

          People

            Unassigned Unassigned
            ndimiduk Nick Dimiduk
            Votes:
            0 Vote for this issue
            Watchers:
            18 Start watching this issue

            Dates

              Created:
              Updated: