关于Hadoop以及S3的几个坑

本文分享了在AWS上使用Hadoop时遇到的一些问题,包括S3文件系统URI转换导致的访问问题,分布式缓存文件在不同MR迭代间的重用限制,以及在S3上操作文件系统和本地文件时遇到的检查和访问问题,并提供了相应的解决方案。
摘要由CSDN通过智能技术生成

首先是关于AWS上用distributive cache files的问题,由于AWS用的是S3文件系统,而文件cache以后是HDFS文件系统,那么当我们直接去取URI的时候就会发生一件诡异的事情:原来的s3://被转换成了s3:/,而且这种转换是不可避免的,不论你手工加slash什么的都没用…… 这个问题卡了我一晚上,搜了好多资料,最后才发现最完美的解决方案:

在cache的时候用别名来标记文件,比如

job.addCacheFile(new URI(path[1] + "/data.txt"+"#data.txt"));

这个#就是别名,然后在读取的时候可以用别名读取:

new File("./data.txt")


然后就是关于cache file重用的问题,比如在不同的MR迭代之间传递数据……据我研究又一个晚上的结果,这是不可能的!因为每次去cache同一个file的时候,上一个file也在cache中(而且没法删除掉),这样就会有两个不同的时间戳,系统就会报错。我试着hack时间戳,但是依然没用……所以估计Hadoop的设计就是cache以后就不能更改了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值