ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Alluxio 集成腾讯云 COS(COSN)UFS 实战指南:从根挂载到嵌套挂载与源码级原理

Alluxio 集成腾讯云 COS(COSN)UFS 实战指南:从根挂载到嵌套挂载与源码级原理 存储分布式文件系统缓存大数据【免费下载链接】alluxioAlluxio, data orchestration for analytics and machine learning in the cloud项目地址https://gitcode.com/gh_mirrors/al/alluxio点击查看免费下载导读本文围绕 docs/en/ufs/COSN.md 所讲解的官方集成方案完整介绍如何将 Alluxio 配置为以腾讯云对象存储 COSCloud Object StorageCOSN UFS作为底层存储系统包括根挂载与嵌套挂载两种接入方式、alluxio-site.properties与core-site.xml的完整参数说明、本地启动验证流程并结合仓库中underfs/cosn模块的源码与测试深入剖析 COSN UFS 的加载原理、版本匹配机制和 Hadoop COS 客户端依赖。读完本文你将能够在自己的 Alluxio 集群上独立完成腾讯云 COS 的接入与验证。背景COS 与 Alluxio 的统一命名空间腾讯云对象存储COS是腾讯云提供的一种面向非结构化数据的分布式存储服务通过 HTTP/HTTPS 协议访问支持海量数据存储并具备近乎无感知的带宽与容量扩展能力非常适合作为大数据计算与分析的数据池。在 Alluxio 中COS 通过COSN UFScosn://协议接入底层存储。Alluxio 通过统一命名空间特性将不同存储系统统一起来一个 COS 位置既可以挂载到 Alluxio 命名空间的根目录Root Mount Point也可以挂载为嵌套目录Nested Mount从而与 HDFS、S3、OSS 等其他 UFS 共存于同一命名空间。从源码看仓库中的core/common/src/main/java/alluxio/Constants.java源码链接定义了 COSN 协议头public static final String HEADER_COSN cosn://;也就是说所有cosn://开头的路径都会交由 COSN UFS 模块处理。underfs/cosn模块就是这一能力的完整实现其 Maven 坐标为alluxio-underfs-cosn模块描述为 Tencent Cloud cosn Under File System implementation见 underfs/cosn/pom.xml。准备工作Alluxio 在集群模式下运行于多台机器上因此需要先将 Alluxio 二进制包部署到各台机器。有两种方式获取发行包从源码编译Building Alluxio From Source下载预编译二进制包Running Alluxio Locally。同时需要在腾讯云侧准备创建新 Bucket 或使用已有 Bucket确定要在 Bucket 中使用的目录新建或使用已有目录记录 Bucket 所属地域Region。为便于说明官方文档约定如下占位符占位符含义COSN_ALLUXIO_BUCKETCOS Bucket 名称COSN_DATABucket 内使用的目录名COSN_REGIONBucket 所在地域如ap-guangzhou、ap-beijing等方式一根挂载Root Mount Point1. 创建配置文件若conf/alluxio-site.properties与conf/core-site.xml不存在先基于模板复制$ cp conf/alluxio-site.properties.template conf/alluxio-site.properties $ cp conf/core-site.xml.template conf/core-site.xml两个模板文件均位于仓库 conf 目录下可直接查看模板中的注释与默认项。2. 指定底层存储系统编辑conf/alluxio-site.properties将根挂载点指向 COS 中的既有 Bucket 与目录alluxio.master.mount.table.root.ufscosn://COSN_ALLUXIO_BUCKET/COSN_DATA/alluxio.master.mount.table.root.ufs是 Alluxio 根挂载点的 UFS 地址对应模板中的alluxio.master.mount.table.root.ufs${alluxio.work.dir}/underFSStorage见 conf/alluxio-site.properties.template。这里将其从默认本地目录替换为cosn://协议地址即可。3. 配置 COS 访问凭证与实现类编辑conf/core-site.xml加入以下配置property namefs.cosn.impl/name valueorg.apache.hadoop.fs.CosFileSystem/value /property property namefs.AbstractFileSystem.cosn.impl/name valueorg.apache.hadoop.fs.CosN/value /property property namefs.cosn.userinfo.secretKey/name valuexxxx/value /property property namefs.cosn.userinfo.secretId/name valuexxxx/value /property property namefs.cosn.bucket.region/name valuexx/value /property各参数含义如下参数作用说明fs.cosn.impl指定cosn://协议对应的 Hadoop FileSystem 实现类必须为org.apache.hadoop.fs.CosFileSystemfs.AbstractFileSystem.cosn.impl指定 HadoopAbstractFileSystem实现类必须为org.apache.hadoop.fs.CosNfs.cosn.userinfo.secretKeyCOS 访问密钥 SecretKey替换xxxx为你的真实密钥fs.cosn.userinfo.secretIdCOS 访问密钥 SecretId替换xxxx为你的真实密钥fs.cosn.bucket.regionBucket 所在地域替换xx为你 Bucket 的 Region注意core-site.xml中这两对impl配置本质上是 Hadoop COS 文件系统hadoop-cos的标准注册项。之所以需要显式声明是因为 COSN UFS 在 Alluxio 中实际经由 Hadoop FileSystem 抽象层访问 COS详见下文源码剖析。这也是为什么 Alluxio 官方文档指出上述配置属于最基础配置更多调优参数可参考 Hadoop COS 官方文档如分块上传大小、连接超时等。完成以上配置后Alluxio 即以 COSN 作为底层存储系统就绪可继续执行下文本地运行验证。方式二嵌套挂载Nested Mount当需要在一个 Alluxio 命名空间内同时访问多个底层存储系统时可以使用mount命令将 COS 位置挂载为嵌套目录。mount命令的完整用法见 User-CLI 文档其--option keyval参数可为该挂载点单独传递属性。示例将 COS 挂载到 Alluxio 命名空间的/cosn目录$ ./bin/alluxio fs mount --option fs.cosn.userinfo.secretIdCOSN_SECRET_ID \ --option fs.cosn.userinfo.secretKeyCOSN_SECRET_KEY \ --option fs.cosn.bucket.regionCOSN_REGION \ --option fs.cosn.implorg.apache.hadoop.fs.CosFileSystem \ --option fs.AbstractFileSystem.cosn.implorg.apache.hadoop.fs.CosN \ /cosn cosn://COSN_ALLUXIO_BUCKET/COSN_DATA/与根挂载方式的关键区别在于根挂载把 COS 凭证写入全局conf/core-site.xml集群内所有挂载默认生效嵌套挂载通过--option将 COS 凭证按挂载点传入适合在同一集群中挂载多个不同账号/Bucket 的 COS或与其他 UFS 混合使用的场景mount命令支持--readonly只读挂载与--shared共享挂载等修饰参数可按需组合。源码级原理COSN UFS 是如何工作的underfs/cosn模块虽然只有两个核心实现类但其实现方式与版本约束非常值得了解有助于排查接入问题。1. 工厂类路径识别与版本匹配CosNUnderFileSystemFactory.java 实现了UnderFileSystemFactory接口核心逻辑有三点supportsPath(String path)判断路径是否以Constants.HEADER_COSN即cosn://开头以此决定该路径是否由 COSN UFS 接管supportsPath(String path, UnderFileSystemConfiguration conf)在路径前缀匹配的基础上若用户显式设置了alluxio.underfs.version则要求版本号与 COSN UFS 内置版本完全一致否则拒绝匹配getVersion()返回 COSN UFS 版本取自编译期生成的常量CosnUfsConstants.UFS_COSN_VERSION。2. 实现类基于 HDFS UFS 的复用CosnUnderFileSystem.java 是整个模块最核心的复用设计它直接继承自HdfsUnderFileSystem。这意味着 Alluxio 对 COSN 的所有操作list、mkdir、rename、delete、open、create 等都复用了 HDFS UFS 的通用实现而具体文件系统行为由 Hadoop COS 客户端hadoop-cos实现org.apache.hadoop.fs.CosFileSystem提供。类中getUnderFSType()返回cosn用于 Alluxio 内部标识该 UFS 类型。从 underfs/cosn/pom.xml 的依赖声明可以印证这一点com.qcloud.cos:hadoop-cosHadoop 的 COS 文件系统实现版本由ufs.cosn.version属性控制当前仓库为3.1.0-5.8.5com.qcloud:cos_api-bundleCOS Java SDK 的 bundle 包org.alluxio:alluxio-underfs-hdfs被继承的 HDFS UFS 模块构建时使用maven-shade-plugin打胖包并排除 HDFS UFS 的UnderFileSystemFactory服务注册文件避免服务冲突见 underfs/cosn/pom.xml 的 shade 配置。3. 版本常量编译期注入CosnUfsConstants.java 是一个 Maven 模板文件UFS_COSN_VERSION在构建时由templating-maven-plugin将${ufs.cosn.version}替换为真实版本号即 pom 中定义的3.1.0-5.8.5。这也是supportsPath做版本精确匹配时的参照值。4. 测试验证CosNUnderFileSystemFactoryTest.java 包含两个单元测试分别验证factory()对cosn://test-bucket/path路径UnderFileSystemFactoryRegistry.find()能正确找到 COSN 工厂version()当alluxio.underfs.version设置为正确的3.1.0-5.8.5时工厂可命中设置为错误版本如error-version时工厂不会被选中。这从测试层面印证了路径前缀 可选版本精确匹配的加载规则。本地运行验证Running Alluxio Locally with COSN完成配置后可在本地启动 Alluxio 验证 COSN 接入是否正常。1. 格式化并启动$ ./bin/alluxio format $ ./bin/alluxio-start.sh local这会启动一个 Alluxio Master 和一个 Alluxio Worker。Master 的 Web UI 地址为 http://localhost:19999可在此查看文件系统状态、挂载点与运行日志。2. 运行测试程序$ ./bin/alluxio runTestsrunTests会在 Alluxio 命名空间中创建测试文件并执行读写操作。执行完毕后登录腾讯云控制台进入COSN_ALLUXIO_BUCKET/COSN_DATA目录检查应能看到由 Alluxio 写入 COS 的真实文件例如COSN_ALLUXIO_BUCKET/COSN_DATA/default_tests_files/BASIC_CACHE_THROUGH该文件名说明 Alluxio 已成功将数据以Cache Through模式写入底层 COSdefault_tests_files是runTests的默认测试目录BASIC_CACHE_THROUGH是基础读写测试文件。3. 停止 Alluxio$ ./bin/alluxio-stop.sh local常见问题与排障提示结合上文源码分析接入 COSN 时最容易踩坑的点如下cosn://路径前缀不可写错Alluxio 依据HEADER_COSN cosn://前缀识别 COSN UFS见 Constants.java。拼写错误如写成cos://将导致找不到对应 UFS 工厂挂载直接失败。core-site.xml中的实现类必须与 Hadoop COS 客户端匹配fs.cosn.impl与fs.AbstractFileSystem.cosn.impl两个类的完整限定名必须与文档一致否则 Hadoop 文件系统抽象层无法实例化 COS 客户端。凭证与 Region 必须正确fs.cosn.userinfo.secretId/fs.cosn.userinfo.secretKey/fs.cosn.bucket.region三者缺一不可Region 填错会导致客户端解析 endpoint 失败。嵌套挂载的凭证以--option为准嵌套挂载场景下凭证需要逐条通过--option传入若混用根挂载的全局core-site.xml配置需注意同名属性在挂载点的覆盖关系。alluxio.underfs.version需精确匹配若显式设置了alluxio.underfs.version其值必须与 COSN UFS 内置版本当前仓库为3.1.0-5.8.5见 underfs/cosn/pom.xml完全一致否则工厂不会接管该路径这一点已被 CosNUnderFileSystemFactoryTest.java 的version()用例证实。排障入口本地启动后可通过 Master UIhttp://localhost:19999查看日志与挂载状态集群模式下可结合 Troubleshooting 文档 定位 UFS 访问异常。总结本文完整覆盖了 docs/en/ufs/COSN.md 的全部要点根挂载与嵌套挂载两种 COS 接入方式、alluxio-site.properties与core-site.xml的完整参数说明、本地启动与runTests验证流程。同时通过 CosNUnderFileSystemFactory.java、CosnUnderFileSystem.java、underfs/cosn/pom.xml 等源码揭示了 COSN UFS 的加载机制与 Hadoop COS 客户端依赖关系。按照本文步骤操作即可让 Alluxio 以腾讯云 COS 为底层存储享受统一命名空间带来的多存储系统统一接入能力。赞分享存储分布式文件系统缓存大数据【免费下载链接】alluxioAlluxio, data orchestration for analytics and machine learning in the cloud项目地址https://gitcode.com/gh_mirrors/al/alluxio点击查看免费下载相关推荐Alluxio 集成腾讯云对象存储 COSN从配置、挂载到本地运行验证的完整指南Alluxio 集成腾讯云对象存储 COSN从配置、挂载到本地运行验证的完整指南 导读 本文基于 Alluxio 仓库中的 COSN 集成文档完整讲解如何将存储分布式文件系统缓存大数据Alluxio 接入 Azure Data Lake Storage Gen2ABFS实战指南三种认证方式的根挂载与嵌套挂载配置Alluxio 接入 Azure Data Lake Storage Gen2ABFS实战指南三种认证方式的根挂载与嵌套挂载配置 导读 本文讲解如何将 A存储分布式文件系统缓存大数据Alluxio 集成腾讯云 COS 作为底层存储完整配置指南与源码原理解析Alluxio 集成腾讯云 COS 作为底层存储完整配置指南与源码原理解析 本篇指南基于当前仓库中的官方文档 docs/cn/ufs/COS.md http存储分布式文件系统缓存大数据上一篇TanStack Start Selective SSR 完全指南按路由精准控制服务端渲染下一篇AssppWeb如何在浏览器中直接侧载安装iOS应用绕过App Store的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表