设为首页 收藏本站
查看: 1423|回复: 0

[经验分享] hadoop io Sequence, Map, Set, Array, BloomMap Files(译文)

[复制链接]

尚未签到

发表于 2018-11-1 09:13:20 | 显示全部楼层 |阅读模式
  hadoop 的 sequenceFile 文件为二进制的 K-V 对提供了可持久的数据结构。与其他的数据结构,像 B 树索引是有区别的, sequenceFile 不支持对特定的 key 进行修改,插入,删除操作,仅仅支持 append 操作。
  SequenceFile 有三种格式:非压缩,行压缩,块压缩。他们都会共用一个文件头信息。这个文件头信息包括: k,v类名字,版本号,格式化信息(是否压缩,是否是块压缩,如果是压缩格式,还包括压缩算法名字)。
  非压缩与记录压缩比较相似,每次调用 append 方法就会将记录增加到 sequence 文件中,内容有整个记录的大小(key 的长度 +value 的长度 ) , key 的长度, key,value 的原始数据。二者的不同点就是 value 的原始数据,一个是压缩的,一个是非压缩。
  而对于块压缩格式,当数据的大小达到某个阀值,比如数据块大小 64M ,这些才会将数据写入文件,而且此时到目前为止的所有 key 放在一起进行,所有 value 放在一起,然后再加上每个 k,v 所占的长度列表。
  块记录 : 记录长度 + 所有 key 数据,所有 value 的数据,所有 key 的长度列表,所有 value 的长度列表,同时每个块之间会有写下 sync 标记。
  基于 sequencefile 之上,还有一些其他文件格式,如 MapFile,SetFile,ArrayFile,BloomMapFile 。
  MapFile 是由二个 sequenceFile 组成的 : 数据文件和索引文件。数据文件是有按从小到大的顺序插入,如果再append 时,违反了这种关系,将会抛出异常。索引文件包括 key, 以及该条记录在数据文件的起始位置,索引文件不会包括所有的 key ,只是一部分 key 值。一般索引会全部读入内存,如果索引很大,可以设置每次读入内存的索引条数。
  SetFile 和 ArrayFile 是基于 MapFile 的, SetFile 用 append(key) 来替换 append(key,value) 的,因为 value 总是null 。 ArrayFile 则是用 append(value) ,而 key 则是 long 类型,代表是每几条记录,一直递增的。
  BloomMapFile 是在 MapFile 之上增加了一个文件,名叫 /bloom ,该文件将记录着新增记录后的布隆值,当 close()操作时,就将布隆值写入到这个 bloom 文件中。
  在 hadoop 之上,也还有其他的一些文件格式,如 tfile,hbase 的 hfile 等,具体的实现见 :org.apache.hadoop.io 包中的相关类。
  另外,记录由于 maven 库无法访问而使得无法 build 的解决方法:
  在编译 hadoop 时由于 maven 需要访问国外 maven 库网站,但由于该网站被墙,会抛出 socket.net 的异常错误,遇到此类问题,方法有二个:一是找一个能访问的 maven 库网站,如 : http://mirrors.ibiblio.org/pub/mirrors/maven2 。将mavens 用到的 build.xml , ivysetting.xml 二个文件中的 http://repo2.maven.org/maven2 都用上面的网站替换,另外一种方法是,对 ant 设置代理访问,在 ivy-download 任务前加上的一个 proxy 任务,然后先打开代理,如***,然后进行build 工作。
  
  
  
  
  
  
  
  
  


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629198-1-1.html 上篇帖子: 快速搭建 Hadoop 环境 下篇帖子: hadoop 之 FAILED Too many fetch-failures 错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表