JindoFS是基于阿里云对象存储OSS,为开源大数据生态构建的Hadoop兼容文件系统(Hadoop Compatible File System,HCFS)。JindoFS提供兼容对象存储的纯客户端模式(SDK)和缓存模式(Cache),以支持与优化Hadoop和Spark生态大数据计算对OSS的访问;提供块存储模式(Block),以充分利用OSS的海量存储能力和优化文件系统元数据的操作。

JindoFS纯客户端模式(SDK)

JindoFS纯客户端模式为Hive和Spark等计算框架提供了访问阿里云OSS及其各种操作的优化,类似Hadoop社区的OSS FileSystem或S3A FileSystem。此模式不改变文件或对象在OSS上的组织方式,文件还是保存在OSS上,JindoFS只是提供面向Hadoop生态的客户端连接、扩展、适配和优化访问。您可以使用此模式,上传JindoFS SDK的JAR包至组件的classpath目录,简单易用,无需部署分布式服务。SDK

JindoFS缓存模式(Cache)

JindoFS缓存模式(Cache)兼容JindoFS纯客户端模式(SDK),同时利用Jindo分布式缓存能力在计算侧为OSS提供缓存加速,以满足大规模的分析和训练吞吐需求。在纯客户端模式(SDK)基础上,Cache模式支持可选的元数据缓存和数据分布式缓存,同时保持数据跟OSS兼容和同步。数据缓存可以基于内存、SSD和普通磁盘,以适用不同的计算场景。Cache

JindoFS块存储模式(Block)

JindoFS存储模式(Block),不仅提供缓存加速能力,还可以组织、存储数据和管理文件元数据,类似Apache Hadoop HDFS。在此模式下JindoFS是个独立的存储系统,只是文件块数据存储在OSS上。Block

Cache模式和Block模式对比

两种模式都把数据存储在OSS上,同时根据本地缓存空间剩余情况确定是否在本地也放置一份以用于缓存加速。

两种模式的本质区别在于,块存储模式可以管理目录和文件元数据,文件是分成多个块存储在OSS上,所以写到OSS上的是一个一个的文件块,而缓存模式存储的是整个文件对象。

三种模式对比

以下从多个维度上介绍JindoFS的纯客户端模式(SDK)、缓存模式(Cache)和块存储模式(Block)的差异。

维度 JindoFS SDK JindoFS Cache JindoFS Block
存储成本
  • 全量数据OSS存储。
  • 支持归档。
  • 全量数据OSS存储。
  • 热数据使用缓存(20%)。
  • 支持归档。
  • 全量数据OSS存储。
  • 温数据和热数据(60%)本地缓存1备份。
  • 支持归档。
  • 支持透明压缩。
弹性 较高 支持
吞吐 OSS带宽。 OSS带宽和热数据缓存带宽。 OSS带宽、温数据和热数据缓存带宽。
元数据
  • 模拟HDFS,不支持目录和文件语义。
  • 规模超大,支持EB级别。
  • 模拟HDFS,不支持目录和文件语义,支持文件数据缓存。
  • 规模超大,支持EB级别。
  • 兼容性接近HDFS,性能最高。
  • 规模大,支持10亿以上的文件数。
运维 一般

需要维护缓存系统能力。

较高

需要维护文件系统元数据服务和缓存系统。

安全
  • 支持AccessKey认证。
  • 支持RAM鉴权。
  • 支持OSS访问日志。
  • 支持OSS数据加密。
  • 支持AccessKey认证。
  • 支持RAM鉴权。
  • 支持OSS访问日志。
  • 支持OSS数据加密。
  • 支持AccessKey认证。
  • 支持Unix权限和Ranger权限。
  • 支持审计日志(AuditLog)。
  • 支持数据加密。
使用方式 仅支持oss://<oss_bucket>/<oss_dir>/方式,支持跨产品访问该文件路径。
  • 默认使用方式oss://<oss_bucket>/<oss_dir>/,支持跨产品访问该文件路径,可以打开缓存开关。
  • 支持多Namespace使用方式jfs://<your_namespace>/<path_of_file>,不支持跨产品访问该文件路径,可以打开缓存开关。
说明 Cache模式使用详情请参见各版本下JindoFS Cache模式的内容。
仅支持多Namespace使用方式jfs://<your_namespace>/<path_of_file>,不支持跨产品访问该文件路径,可以打开缓存开关。
说明 Block模式使用详情请参见各版本下JindoFS Block模式的内容。

常见问题

  • Q:针对典型的数据湖场景,建议采用什么模式?

    A:因为JindoFS SDK和Cache模式完全兼容OSS对象存储语义,具有完全的存储分离架构和弹性灵活性,所以,针对典型的数据湖场景,推荐您使用SDK或者Cache模式以支持大数据分析和AI训练加速。

  • Q:为什么Block模式跟HDFS相比,是更好的HDFS?
    A:
    • HDFS的常规限制为4亿,而Block模式元数据规模上支撑10亿以上的文件数,大于HDFS的限制,而且在集群高峰期时性能更为稳定。
    • HDFS有Java onheap限制,而Block模式没有Java onheap和内存限制,可以支持更大的数据规模。
    • Block模式轻运维,不用担心坏盘或坏节点,数据1备份放置在OSS上,支持上下线节点。
    • 支持对冷数据做透明压缩和归档,使用多种手段进行成本优化,对接对象存储,支持EB级数据规模。
    • Block模式支持HDFS的一些重要特性。例如,HDFS AuditLog、Ranger集成和数据加密。
  • Q:Block模式具有哪些特别的优势?
    A:
    • Block模式可以管理文件元数据和组织文件数据,因此可以不局限于OSS对象存储,完全可以满足各种大数据引擎对存储接口的需求。这些接口包括但不限于Rename的原子性和事务性能力、高性能本地写入、透明压缩、truncate、append、flush、sync和snapshot等。这些高阶存储接口对实现完整的POSIX和对接更多的大数据引擎到OSS是不可或缺的,例如,Flink、HBase、Kafka和Kudu。其他两种方式使用OSS也可以对接部分接口,但是能力和优势会有所不足。
    • Block模式在费用上优于其他两种方式使用OSS。Block模式中,因为全部数据中占比60%的温数据和热数据都在本地有缓存备份,大部分读请求都不会通过OSS,所以可以节省一部分费用。