首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hadoop SequenceFile二进制文件安全吗?

Hadoop SequenceFile二进制文件安全吗?
EN

Stack Overflow用户
提问于 2013-04-27 18:41:18
回答 1查看 396关注 0票数 1

我阅读了hadoop-1.0.4源代码中的SequenceFile.java。我还发现了sync(long)方法,该方法用于在SequenceFile中将SequenceFile拆分为文件拆分时,在MapReduce中查找“同步标记”(在文件创建时生成的16字节MapReduce)。

代码语言:javascript
复制
/** Seek to the next sync mark past a given position.*/
public synchronized void sync(long position) throws IOException {
  if (position+SYNC_SIZE >= end) {
    seek(end);
    return;
  }

  try {
    seek(position+4);                         // skip escape
    in.readFully(syncCheck);
    int syncLen = sync.length;
    for (int i = 0; in.getPos() < end; i++) {
      int j = 0;
      for (; j < syncLen; j++) {
        if (sync[j] != syncCheck[(i+j)%syncLen])
          break;
      }
      if (j == syncLen) {
        in.seek(in.getPos() - SYNC_SIZE);     // position before sync
        return;
      }
      syncCheck[i%syncLen] = in.readByte();
    }
  } catch (ChecksumException e) {             // checksum failure
    handleChecksumException(e);
  }
}

这些代码只是查找包含与“同步标记”相同数据的数据序列。

我的疑问是:

考虑这样一种情况,SequenceFile中的数据恰好包含与“同步标记”相同的16字节数据序列,上面的代码将错误地将该16字节数据视为“同步标记”,然后SequenceFile将无法正确解析?

我没有发现任何关于数据或同步标记的“转义”操作。SequenceFile如何才能是二进制安全的?我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-17 23:39:34

冲突在技术上是可能的,但在现实中却是难以置信的不可能。

来自http://search-hadoop.com/m/VYVra2krg5t1

给定的随机16字节字符串出现在23(均匀分布)数据中的概率约为10^-23。更有可能的是你的数据中心被一颗陨石(http://preshing.com/20110504/hash-collision-probabilities)摧毁了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16251110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档