Hadoop官网翻译 【FileSystem概览】

说明

  • 定义FileSystem模型和API,向应用程序提供一致性模型。
  • HDFS的操作系统是基于POSIX文件系统行为基础上建模的,使用POSIX的操作和返回码作为参考。
  • 绑定的S3AFileSystem使得AWS的对象存储库可以通过FileSystem API访问。SwiftFileSystem可以访问OpenStack Swift BlobStore等等,不同的FileSystem可以绑定到不同的存储。具有不同的行为,特别是关于一致性的保证和原子性。还有一些第三方的FileSystem,但是没有保证兼容性。
  • LocalFileSystem可以访问底层文件,它的行为和操作系统有关,可能和HDFS不一致。

FileSystem API的隐式说明

  • 包含文件和目录
  • 文件具有0或者多个Byte数据
  • 文件下面不能包括文件或者目录
  • 目录包含0个或多个文件
  • 目录列表中文件属性与文件的实际属性匹配,与打开文件的文件引用视图一致
  • 安全:如果调用方没有操作权限,那么它将失败并引起错误

和POSIX的文件系统基本上一致,只不过太常见了,理所当然了。

  • 路径
    常见的约束,不能有.,不能有/,不能有不可见字符

Hadoop FileSystem兼容性的核心期望

Hadoop兼容的文件系统需要有这些期望,如果没有的话,可能会产生错误预期。

原子性

  • create
  • delete
  • rename
    这些操作需要具有原子性,HDFS文件系统提供了递归删除目录的原子性保证,但是其他的系统没保证。

一致性

  • create/update
    一旦close()文件流,其他的查看元数据,内容必须可以立即查看
  • delete
    一旦delete操作,所有操作要立马不可见
  • rename
    一旦完成rename,新名称操作必须成功,旧名称必须失败

并行性

独立访问数据时,一个客户机正在交互,另一个修改,修改不保证可见。

操作失败

  • 操作必须是成功或者失败。
  • 完成操作的时间未知
  • IOException
    网络或者远程或者高层的异常抛出IOException而不是RuntieException
  • RuntimeException
  • 异常抛出
    异常需要抛出,不能通过编码报出
  • 如果操作没有定义在类中,抛出UnsupportOperationException
  • 失败的操作可以重试,直到成功

未定义容量限制

  • 最大文件数
  • 最大目录数
  • 最大文件名称长度
  • 最大深度
  • 单个文件最大大小

未定义超时

一些操作未定义超时

  • blocking操作的最大阻塞时间
    比如说s3 rename时间会影响S3FileSystem的rename时间。
  • 读空闲超时时间
  • 写空闲超时时间
    在hdfs中,block操作超时的时间是可以通过参数调整的

Object store VS FileSystem

Hadoop提供了读写s3的客户端,提供了FileSystem类,但是不能直接用s3代替hdfs的原因是上述的底层文件系统的假设。

什么是对象存储

对象存储是一种数据存储服务,通过HTTP/HTTPS访问操作。
对象按照名称存储,可能包含“/”符号,没有目录概念,可以为对象分配任意名称。
对象存储对给定前缀检索效率较高。
HDFS FileSystem让存储假装他们是一个FileSystem,但是实际对象存储并不是。有时候这种错觉会失效。
从几个方面看他们的不同:

  • 一致性
    对象存储一般是最终一致性
  • 原子性
    s3关于rename和delete不是原子的。
  • 持久化
    HDFS和S3的写入不同,HDFS写入是通过flush写入,S3的话,是通过存储到本地文件和close时上传。
  • 授权
    FileSystem的授权和S3不同。FileStatus来进行目录,文件,用户,用户组,其他这样授权授权。s3不支持这种授权方式。

时间戳

FileStatus包含modify和access时间戳

  • HDFS支持
  • 其他文件系统如果底层的FS不支持access time,为了性能,通常禁用。
  • S3的事件更加模糊
    如果是需要用到时间戳的功能,比如说集中式缓存等,一定要进行这方面的测试
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值