
存储分布式文件系统缓存大数据【免费下载链接】alluxioAlluxio, data orchestration for analytics and machine learning in the cloud项目地址https://gitcode.com/gh_mirrors/al/alluxio点击查看免费下载Alluxio 在腾讯云 EMR 中作为开箱即用的可选组件提供用于为大数据与机器学习工作负载提供分布式内存级缓存加速、统一命名空间与简化数据管理能力。本文以腾讯云 EMR 上的 Alluxio 集成为主线覆盖集群创建、默认配置、配置下发、基于 COS 的计算存储分离加速等完整流程并结合当前 Alluxio 仓库中的 EMR 引导脚本与 COS 底层文件系统实现补充源码级的部署细节与参数依据帮助读者在腾讯云 EMR 上快速落地一套可用的 Alluxio 缓存加速环境。概述腾讯云 EMR 上的 Alluxio 服务腾讯云 EMR弹性 MapReduce在自身的大数据集群体系中内置了开箱即用的 Alluxio 服务。对云上用户而言这种集成主要带来三类能力分布式内存级缓存加速计算引擎如 Spark、Hive、Presto/Trino访问远端数据时可由 Alluxio 在内存与本地存储中就近缓存显著缩短数据读取路径配置下发与元数据管理通过腾讯云 EMR 控制台或 API 接口下发配置即可快速调整多层级缓存Tiered Storage与元数据管理策略无需逐节点手工修改配置一站式监控告警Alluxio 服务纳入 EMR 集群的监控体系可获取进程级、指标级的一站式监控与告警能力。从当前仓库的实现来看Alluxio 面向云上 EMR 场景的落地并非孤立的组件安装而是与 Hadoop、Spark、Presto 等生态深度耦合。仓库中的 integration/emr/alluxio-emr.sh 展示了一套完整的 EMR 引导bootstrap部署逻辑安装 Alluxio 到/opt/alluxio、自动生成alluxio-site.properties、将 Alluxio 客户端 jar 软链进 Spark/Presto/Tez/Hadoop 的 classpath、按节点角色启动 master/worker 进程等。虽然该脚本面向 AWS EMR但其存储分层、属性生成、客户端接入等设计思路与腾讯云 EMR 的集成方式高度一致可作为理解EMR 上 Alluxio 如何工作的源码级参考。前置条件在腾讯云 EMR 上启用 Alluxio 服务需要满足以下版本要求腾讯云 EMR 的 Hadoop 标准 2.x 版本需要EMR-v2.3.0及以上腾讯云 EMR 的 Hadoop 标准 3.x 版本需要EMR-v3.2.0及以上不同 EMR 版本所内置的 Alluxio 具体版本以腾讯云 EMR 官方组件版本清单为准在集群创建页面选择组件版本时即可看到对应关系。需要注意的是这里限定的是Hadoop 标准版本系列的 EMR选择集群形态时应确认自己的集群属于该系列再核对对应版本号是否满足下限。创建基于 Alluxio 的 EMR 集群腾讯云 EMR 提供了两种创建开箱即用 Alluxio 集群的方式WEB 购买页创建与API 创建。方式一购买页创建集群登录腾讯云 EMR 购买页buy.cloud.tencent.com/emapreduce/后按以下步骤操作在购买页中选择支持 Alluxio 的发布版本即满足上文前置条件的 EMR 版本在可选组件列表中勾选Alluxio组件其余选项机型、网络、存储、计费方式等根据业务场景个性化配置即可。创建过程中的具体选项含义可参考腾讯云 EMR 购买页的官方指引文档。勾选 Alluxio 组件后集群初始化时会自动完成 Alluxio 的安装、配置与进程拉起用户无需手工介入。方式二API 创建集群腾讯云 EMR 同时开放了 API 接口用于以编程方式构建包含 Alluxio 组件的大数据集群。适用于自动化交付、基础设施即代码IaC等场景在 API 请求的组件列表中显式携带 Alluxio 组件与版本信息即可在集群拉起时一并完成 Alluxio 的部署。API 创建与购买页创建的底层集群配置语义一致区别仅在于交互方式。创建后的默认拓扑创建成功后EMR 集群内会形成典型的 Alluxio 部署拓扑master 节点运行 Alluxio Master负责元数据管理与命名空间、worker 节点运行 Alluxio Worker负责缓存数据读写并通过19998端口暴露 RPC 服务。这一点可以从仓库引导脚本的启动逻辑得到印证integration/emr/alluxio-emr.sh 中master 节点依次启动alluxio-start.sh master、job_master、proxyworker 节点依次启动worker、job_worker、proxy并在fsadmin report就绪后才宣告完成。基础配置默认行为与配置下发创建带 Alluxio 组件的腾讯云 EMR 后系统会应用一组默认配置理解这些默认值有助于后续按业务调整根文件系统Root UFS默认把集群的HDFS 挂载到 Alluxio 根目录即 Alluxio 命名空间的根/对应 HDFS存储层默认使用内存MEM作为单层 level0 存储即alluxio.worker.tieredstore.levels 1缓存数据全部落于内存。这一默认策略与仓库 EMR 引导脚本的自动生成配置一致integration/emr/alluxio-emr.sh 在没有 NVMe 参数时会设置alluxio.worker.tieredstore.level0.aliasMEM、level0.dirs.path/mnt/ramdisk并将内存配额默认设为系统总内存的 1/3get_default_mem_size()中mem_div3configure_alluxio_general_properties 则会设置 HDFS 根挂载、单层存储、ASYNC_THROUGH默认写类型等关键属性。如果默认的内存单层不符合业务特征例如热数据规模超出内存、需要 NVMe 扩展缓存容量可以使用腾讯云 EMR 的配置下发功能完成相关配置核心可调项包括配置项说明典型取值alluxio.worker.tieredstore.levels存储层数1表示单层1、2、3alluxio.worker.tieredstore.level0.aliaslevel0 存储介质别名MEM、SSD、HDDalluxio.worker.tieredstore.level0.dirs.pathlevel0 存储目录路径多目录用逗号分隔/mnt/ramdisk、/data/alluxioalluxio.worker.tieredstore.level0.dirs.quotalevel0 存储配额容量上限512GB、64MB等alluxio.worker.tieredstore.level0.dirs.mediumtypelevel0 多目录的介质类型列表与路径一一对应MEM,SSDalluxio.master.mount.table.root.ufs根 UFS 地址hdfs://namenode:8020/、cosn://bucket/alluxio.master.mount.table.root.option.alluxio.underfs.version根 UFS 为 HDFS 时的版本号3.1.0等alluxio.master.mount.table.root.option.alluxio.underfs.hdfs.configuration根 UFS 为 HDFS 时的core-site.xml:hdfs-site.xml路径/etc/hadoop/conf/core-site.xml:/etc/hadoop/conf/hdfs-site.xmlalluxio.user.file.writetype.default客户端默认写入模式ASYNC_THROUGH异步写穿关于多层级缓存的通用设计原理层级划分、数据驱逐、升降级可进一步阅读仓库文档 docs/cn/core-services/Caching.md关于根挂载与统一命名空间机制可参考 docs/cn/core-services/Unified-Namespace.md。配置下发后的生效与重启配置下发后部分配置需要重启 Alluxio 服务才能生效。实践上应区分两类配置无需重启即可生效部分运行时参数如部分客户端侧参数、监控开关在下发后自动生效必须重启生效涉及 Master 元数据、Worker 存储分层、端口与鉴权等核心属性的变更需要在 EMR 控制台对 Alluxio 服务执行重启操作。在腾讯云 EMR 控制台中配置下发与重启是两步操作先通过配置管理修改组件参数并保存下发再在服务列表中对 Alluxio 执行重启服务使新配置完整加载。仓库引导脚本中的实现也印证了重启的必要性所有属性统一写入alluxio-site.propertiesALLUXIO_SITE_PROPERTIES/opt/alluxio/conf/alluxio-site.properties见 integration/emr/alluxio-emr.sh随后才启动各进程进程启动时一次性读取该文件若在运行期修改文件必须重启对应进程才会重新加载。基于 Alluxio 加速计算存储分离COS腾讯云 EMR 基于腾讯云对象存储COS提供计算存储分离能力计算集群与数据存储分离存储成本低、弹性好但直接访问对象存储时存在两个典型问题没有节点级数据本地性Data Locality每次计算任务都从远端对象存储拉取数据无法感知数据在哪个节点附近没有跨应用程序缓存多个作业重复读取同一份数据时无法复用前序作业已取回的数据。使用 Alluxio 加速可以有效缓解这两个问题首次访问后将 COS 数据缓存到集群内存/本地存储后续作业命中缓存即可获得本地读性能。步骤一授权访问 COS在腾讯云 EMR 集群上COS 作为 UFS 所需的依赖 jar 包默认已经部署无需额外上传。若当前集群未开启对象存储需要在控制台点击Authorize授权进行授权授权后 EMR 节点即可通过临时密钥访问 COS 中的数据。授权完成后建议确认授权状态授权确认弹窗/页面中显示已授权再继续后续挂载操作。步骤二将 COS 挂载到 Alluxio授权完成后即可将 COS 挂载到 Alluxio 命名空间。在 Alluxio 命令行中执行类似如下挂载命令alluxio fs mount --option fs.cos.access.keyAccessKey \ --option fs.cos.secret.keySecretKey \ --option fs.cos.regionRegion \ --option fs.cos.app.idAppId \ /cos-bucket cosn://bucket/挂载完成后即可通过 Alluxio 路径/cos-bucket透明访问 COS 数据并自动获得缓存加速。COS 底层实现与必要参数从当前仓库源码可以确认 COS UFS 接入所必需的配置键。在 core/common/src/main/java/alluxio/conf/PropertyKey.java 中定义了fs.cos.access.key腾讯云 API 密钥 SecretIdfs.cos.secret.key腾讯云 API 密钥 SecretKeyfs.cos.regionCOS 存储桶所在地域fs.cos.app.id腾讯云账号 AppIdAPPID。在 underfs/cos/src/main/java/alluxio/underfs/cos/COSUnderFileSystem.java 的createInstance中以上四个属性缺一不可缺失任一都会触发Preconditions.checkArgument断言失败同时 COSUnderFileSystemFactory 只有在 access key、secret key、region 全部存在时才会创建 COS UFS 实例其supportsPath仅识别cos://前缀。腾讯云 EMR 的默认部署中COS 依赖 jar 与相关配置已就绪因此用户通常只需完成授权与挂载两步即可。另外当前仓库还支持腾讯云 Hadoop-COS 生态的cosn://协议相关实现见 underfs/cosn其supportsPath匹配cosn://前缀并支持通过alluxio.underfs.version精确指定 UFS 版本。两类 COS 接入的详细参数说明可参考仓库文档 docs/cn/ufs/COS.md 与 docs/cn/ufs/COSN.md。加速效果的关键机制COS 场景下 Alluxio 的加速来自两个层面读写缓存Cache默认写类型为ASYNC_THROUGH见 integration/emr/alluxio-emr.sh数据异步写穿到 COS同时写入本地缓存层后续读直接从缓存层命中元数据主动同步Active Sync对于 UFS 上由外部写入/更新的数据可通过alluxio fs startSync path对指定路径开启主动同步周期性同步元数据避免 Alluxio 命名空间与 COS 之间出现元数据不一致引导脚本同样暴露了-l参数用于传入同步路径列表。源码视角EMR 引导脚本揭示的部署与调优细节当前仓库的 integration/emr/alluxio-emr.sh 完整展示了在 EMR 中引导部署 Alluxio的实现细节虽然面向 AWS EMR但其内容对理解腾讯云 EMR 的集成原理具有直接参考价值属性注入机制脚本提供-p参数支持以;分隔的键值对批量写入alluxio-site.propertiesset_alluxio_property会先查重再覆盖见 integration/emr/alluxio-emr.sh-f参数可将远程core-site.xml、hdfs-site.xml等文件下载到ALLUXIO_HOME/conf/并自动纳入 HDFS 根挂载的配置路径见 configure_alluxio_hdfs_root_mount。这对应了腾讯云 EMR 控制台配置下发能力的底层原理存储自动分层-n 百分比参数可自动探测挂载的 NVMe 盘将其配置为 level0 SSD 层目录配额按磁盘容量 × 百分比计算见 configure_nvme无 NVMe 时回退为 MEM 层——这为多层级缓存配置提供了可直接复用的参考策略计算引擎接入脚本将 Alluxio 客户端 jar 软链到 Spark、Presto、Tez、Hadoop 的 lib 目录expose_alluxio_client_jar并为 Presto 生成connector.namehive-hadoop2、hive.metastorealluxio、hive.metastore.alluxio.master.addressmaster:19998的 catalog 配置见 integration/emr/alluxio-emr.sh。这也解释了为什么在 EMR 上创建 Alluxio 集群后Spark/Presto 等组件可以开箱即用地访问 Alluxio 路径故障恢复与备份脚本通过alluxio fsadmin backup --local在集群关停时备份 Journal并通过-i参数在下次启动时恢复register_backup_on_shutdown。腾讯云 EMR 用户若需要跨集群迁移 Alluxio 元数据可参考这一思路使用alluxio fsadmin backup与alluxio fsadmin restore命令。常见调优建议在腾讯云 EMR 上落地 Alluxio 后可按以下方向做针对性调优按数据规模选择存储层默认内存单层适合热数据量小、追求极致延迟的场景数据量超出内存时建议通过配置下发增加 SSD/NVMe 层形成MEM SSD多级缓存合理设置缓存配额Worker 内存配额不宜过高需为操作系统与计算框架预留内存。仓库脚本默认按系统内存 1/3 估算get_default_mem_size可作参考基线写入策略选择ASYNC_THROUGH兼顾性能与一致性若要求数据写入必须同步落盘到 UFS可调整为THROUGH详见 docs/_data/table/cn/WriteType.yml 中各类写入模式的语义说明开启元数据主动同步对由外部进程持续写入 COS 的目录使用alluxio fs startSync保持元数据一致监控告警利用 EMR 控制台的一站式监控能力观察 Alluxio 的缓存命中率、读写吞吐、内存使用等指标据此迭代缓存策略。相关资源围绕本文主题可在当前仓库中继续深入阅读docs/cn/overview/Architecture.mdAlluxio 整体架构Master/Worker/Client 职责docs/cn/core-services/Caching.md缓存机制与多级存储原理docs/cn/core-services/Unified-Namespace.md统一命名空间与挂载mount机制docs/cn/ufs/COS.md、docs/cn/ufs/COSN.mdCOS UFS 参数与配置integration/emr/alluxio-emr.shEMR 引导部署脚本部署、属性注入、存储分层、引擎接入的完整实现integration/emr/alluxio-emr.jsonEMR 组件分类配置示例Hive/Presto/Hadoop 与 Alluxio 客户端 jar 的集成underfs/cos/src/main/java/alluxio/underfs/cos/COSUnderFileSystem.javaCOS 底层文件系统实现。至此你已经可以在腾讯云 EMR 上完成创建 Alluxio 集群 → 按业务下发多级缓存配置 → 授权并挂载 COS → 让计算引擎获得本地化缓存加速的完整闭环。后续建议结合集群实际负载围绕缓存命中率与存储水位持续迭代配置。赞分享存储分布式文件系统缓存大数据【免费下载链接】alluxioAlluxio, data orchestration for analytics and machine learning in the cloud项目地址https://gitcode.com/gh_mirrors/al/alluxio点击查看免费下载相关推荐BPMN Process Designer 二次开发手册自定义物料面板与工具栏终极指南BPMN Process Designer 二次开发手册自定义物料面板与工具栏终极指南 BPMN Process Designer 是一个基于 bpmn js前端UI组件Presto 数据缓存实战指南Alluxio SDK 本地缓存与 Alluxio Cache Service 分布式缓存Presto 数据缓存实战指南Alluxio SDK 本地缓存与 Alluxio Cache Service 分布式缓存 Presto 作为分布式 SQL 查大数据数据库后端边缘计算加速实战Memcached CDN节点缓存部署指南边缘计算加速实战Memcached CDN节点缓存部署指南 你是否遇到过这些问题用户投诉静态资源加载缓慢、动态内容响应延迟超过300ms、高并发场景下CDN缓存后端高可用上一篇es-toolkit range 函数完全指南用一行代码生成等差数值数组下一篇Rerun GraphEdge 组件详解图数据边定义的 Arrow 编码与跨语言使用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考