搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云-梭伦科技
»
专题
›
交流区
›
技术交流
›
HDFS
›
讨论:改进HDFS支持update和delete操作方法
0
0
0
分享
讨论:改进HDFS支持update和delete操作方法
kaif22
发表于 2013-10-25 10:46:18
[显示全部楼层]
阅读模式
关闭右栏
0
7392
本帖最后由 hadoopor 于 2009-11-27 14:53 编辑
如果允许数据冗余,通过改进HDFS,支持update和delete两个操作并不困难,如果update和delete的操作频率不高且涉及变动的记录数不多,下面介绍的方法也许是值得尝试的。
在现有的实现上,HDFS中的所有block大小是相等的,默认除最后一个block外,都为64M,如果要支持update和delete操作,这个规则得改写,要允许block大小不相等,因此在block的元数据表结构中需要增加block_size一列,用来表示该block的大小,如下图所示:
通过block_size就可以方便地便利和操作文件了,不会影响到原来对文件各类操作的语义。
另外,还必须将存储在HDFS中的数据结构化,每条记录之前增加一个记录头,记录头中包括该条记录的状态,如下图所示:
记录头中的0表示记录未做任何修改,1表示该条记录已经被修改过,2表示该条记录被删除了,3表示新增的记录。其中,1和2在这里都表示记录被删除了。当需要修改或删除该条记录时,只需要修改这个状态位即可。
未修改和删除之前:
发生删除之后:
当读取到八戒这条记录时,直接跳过。
发生修改之后:
当读取到八戒和悟空这两条记录时,均直接跳过。
这里做法关键之处是:在block的元数据表中增加block_size字段,如果没有这个字段,对文件的读、写和seek等操作将无法执行。
限制:
记录不能是有序的,因为修改数据总是往block尾增加。另外,如果状态为1或2的记录数超过指定的数目时,可以考虑重建这个块,将这些冗余的数据从block去掉。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
没找到任何评论,期待你打破沉寂
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
kaif22
中级会员
关注
56
主题
139
帖子
3
粉丝
TA的主题
忘掉平板吧,诺基亚还有一个更大的计划
2013-12-17
MapReduce有哪些应用场景问题
2013-10-26
讨论:改进HDFS支持update和delete操作方法
2013-10-25
HDFS block missing 的问题
2013-10-25
没有安装hadoop的客户端不能运行hdfs的api吗?
2013-10-25
24小时热文
矩阵分析引论罗家洪(第四版)
互联网大厂年终福利曝光:看看别人家老板怎
像高手一样发言:七种常见工作场景的说话之
携程允许员工春节回乡办公2个月
数据治理实施方案
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈