
存储分布式文件系统缓存大数据【免费下载链接】alluxioAlluxio, data orchestration for analytics and machine learning in the cloud项目地址https://gitcode.com/gh_mirrors/al/alluxio点击查看免费下载本文以 Alluxio 官方中文快速上手指南为主体带你在一台本地机器Mac OS X 或 Linux上完成 Alluxio 的下载、配置、环境验证、启动与关闭全流程并通过 Alluxio Shell 完成文件拷贝、查看、持久化、S3 挂载与缓存加速等核心操作。读完本文你将掌握 Alluxio 单机模式的完整运行链路理解内存加速 统一命名空间两大核心能力的具体用法并能以此为基础扩展到集群、Docker 与云存储集成场景。本指南要完成的任务快速上手指南包括以下任务下载和配置 Alluxio验证 Alluxio 运行环境本地启动 Alluxio通过 Alluxio Shell 进行基本的文件操作[加分项]挂载一个公开的 Amazon S3 bucket 到 Alluxio 上关闭 Alluxio其中标注为[加分项]的章节需要使用 AWS 账户的 access key id 和 secret access key仅当你希望体验 S3 挂载与跨存储访问时才需要准备。本指南旨在用最小化的配置在本机启动一套 Alluxio 系统Alluxio 的真正优势体现在运行大数据工作负载的分布式环境中本地的快速上手主要用于体验交互流程。前期准备环境与依赖在开始之前请确认你的环境满足以下条件操作系统Mac OS X 或 LinuxJavaJava 8 或更新版本Alluxio 运行依赖 JVM[加分项]AWS 账户和密钥access key id 与 secret access key在 Mac OS X 上开启 SSH 远程登录如果你使用 Mac OS X必须能够通过 SSH 连接到 localhost。开启方法打开系统偏好设置进入共享确保远程登录已开启。该步骤与 Alluxio 自身的运行没有直接关系但本地启动脚本在部分场景下会依赖本机 SSH 通道提前配置可以避免后续报错macOS 11/Big Sur 及以后版本的异常处理见文末常见问题。第一步下载并解压 Alluxio 发行包从 Alluxio 官网的下载页面获取与你目标版本对应的二进制发行包选择为默认 Hadoop 构建的发行版即可然后解压$ tar -xzf alluxio-ALLUXIO_VERSION-bin.tar.gz $ cd alluxio-ALLUXIO_VERSION说明ALLUXIO_VERSION为发行版本号占位符请替换为你实际下载的版本。当前仓库对应的版本为 2.10.0-SNAPSHOT见根目录 pom.xml。解压后会创建一个包含所有 Alluxio 源码文件和 Java 二进制的目录alluxio-ALLUXIO_VERSION本教程中称其为${ALLUXIO_HOME}。后续所有命令均在该目录下执行。第二步配置 Alluxio创建 alluxio-env.sh 并设置 JAVA_HOME在${ALLUXIO_HOME}/conf目录下根据模板文件创建conf/alluxio-env.sh配置文件$ cp conf/alluxio-env.sh.template conf/alluxio-env.sh然后在conf/alluxio-env.sh中为JAVA_HOME添加配置例如$ echo JAVA_HOME/path/to/java/home conf/alluxio-env.sh从 conf/alluxio-env.sh.template 的源码注释可以看到该文件是可选的系统级配置方式主要管理各进程的 JVM 参数与调试选项JAVA_HOME/JAVA指定 JVM 路径二者只需设置其一对应模板第 29-31 行ALLUXIO_LOGS_DIR日志目录默认${ALLUXIO_HOME}/logsALLUXIO_MASTER_JAVA_OPTS/ALLUXIO_WORKER_JAVA_OPTS/ALLUXIO_USER_JAVA_OPTS分别为 master、worker 与 shell 进程追加 JVM 与配置参数例如-Dalluxio.master.rpc.port39999可调整 master RPC 端口ALLUXIO_*_ATTACH_OPTS为各进程开启远程调试例如-agentlib:jdwptransportdt_socket,servery,suspendn,address60001。注意模板中明确指出设置alluxio-env.sh不会影响把 Alluxio client 当库使用的外部作业如 Spark 或 MapReduce 作业推荐在alluxio-site.properties中配置属性它对外部作业、Alluxio 服务端和 Shell 均生效。创建 alluxio-site.properties 并设置 master hostname在${ALLUXIO_HOME}/conf目录下根据模板文件创建conf/alluxio-site.properties配置文件$ cp conf/alluxio-site.properties.template conf/alluxio-site.properties然后在conf/alluxio-site.properties中将alluxio.master.hostname设置为localhost$ echo alluxio.master.hostnamelocalhost conf/alluxio-site.propertiesconf/alluxio-site.properties.template 中给出了更多可以按需启用的配置项与本指南相关的重要几项包括alluxio.master.mount.table.root.ufs${alluxio.work.dir}/underFSStorage根挂载点对应的底层文件系统UFS路径默认即为${ALLUXIO_HOME}/underFSStorage本指南后续的持久化演示正是围绕它展开alluxio.user.file.writetype.defaultASYNC_THROUGH默认写类型写数据时先写入 Alluxio再异步持久化到 UFSalluxio.worker.ramdisk.size1GB与alluxio.worker.tieredstore.*worker 内存缓存RAMDisk大小与分层存储配置alluxio.security.authentication.typeSIMPLE等安全相关属性。[加分项] 配置 AWS 凭据以访问 S3为了配置 Alluxio 与 Amazon S3 交互请在conf/alluxio-site.properties文件中添加 AWS 访问信息。以下命令将更新该配置$ echo s3a.accessKeyIdAWS_ACCESS_KEY_ID conf/alluxio-site.properties $ echo s3a.secretKeyAWS_SECRET_ACCESS_KEY conf/alluxio-site.properties请务必将AWS_ACCESS_KEY_ID替换为你的 AWS access key id将AWS_SECRET_ACCESS_KEY替换为你的 AWS secret access key。这两项配置的作用与underfs/s3a模块的AlluxioS3AFileSystem实现对应见 underfs/s3a/src/main/java更完整的 S3 参数说明可参阅 Alluxio 使用 S3。第三步验证运行环境在启动 Alluxio 之前先确认当前系统环境下 Alluxio 可以正常运行。运行如下命令验证本地运行环境$ ./bin/alluxio validateEnv local该命令会逐项检查本地环境Java 版本、SSH、内存等并汇报可能阻止 Alluxio 在本机启动的问题。validateEnv是 Alluxio Shell 提供的环境校验命令更详细的使用方法见 User-CLI 文档。Alluxio 的 Shell 命令框架由 core/common/src/main/java/alluxio/cli/AbstractShell.java 提供fs、fsadmin等具体命令集合则分别实现在 shell/src/main/java/alluxio/cli/fs/FileSystemShell.java 与 shell/src/main/java/alluxio/cli/fsadmin/FileSystemAdminShell.java。第四步格式化并启动 Alluxio格式化日志与存储目录Alluxio 在启动进程前需要进行格式化。如下命令会格式化 Alluxio 的日志和 worker 存储目录$ ./bin/alluxio format提示如果该命令返回与ValidateHdfsVersion相关的失败信息而你暂时不打算把 HDFS 作为底层存储接入可以先忽略此失败。启动本地 Alluxio一个 master 一个 worker默认配置下本地运行 Alluxio 会启动一个 master 和一个 worker。在 localhost 上启动 Alluxio$ ./bin/alluxio-start.sh local SudoMount第二个参数SudoMount属于脚本定义的 MOPTMount Option。查看 bin/alluxio-start.sh 的用法说明可以看到三种模式Mount若配置的 RamFS 尚未挂载则挂载它SudoMount使用sudo挂载配置的 RamFS推荐无需预先手动挂载NoMount不挂载 RamFS若在 Linux 上希望避免 sudo 需求并使用 tmpFS可将ALLUXIO_RAM_FOLDER设为/dev/shm并配合NoMount脚本会检查对应目录是否确实以 tmpfs/ramfs 挂载对应check_mount_mode实现见 bin/alluxio-start.sh。脚本的local动作会依次启动 master及 UFS journal 类型下的 secondary master、job master、worker、job worker 与 proxy并在alluxio.master.hostname未设置或未指向本机时自动补写alluxio.master.hostnamelocalhost到配置文件见 bin/alluxio-start.sh。恭喜Alluxio 已经启动并运行了你可以访问http://localhost:19999 —— Alluxio master 运行状态http://localhost:30000 —— Alluxio worker 运行状态第五步通过 Alluxio Shell 进行文件操作Alluxio Shell 提供多种与 Alluxio 交互的命令行操作。要查看文件系统操作命令列表运行$ ./bin/alluxio fs列出根目录文件使用ls命令列出 Alluxio 里的文件例如列出根目录下所有文件$ ./bin/alluxio fs ls /此时 Alluxio 中还没有任何文件。拷贝本地文件到 AlluxiocopyFromLocal命令可以把本地文件拷贝到 Alluxio 中$ ./bin/alluxio fs copyFromLocal ${ALLUXIO_HOME}/LICENSE /LICENSE Copied LICENSE to /LICENSE查看文件元信息再次列出 Alluxio 里的文件可以看到刚刚拷贝的LICENSE文件$ ./bin/alluxio fs ls / -rw-r--r-- staff staff 26847 NOT_PERSISTED 01-09-2018 15:24:37:088 100% /LICENSE输出显示 LICENSE 文件存在于 Alluxio 中并包含其他有用信息文件大小26847 字节、创建日期、文件的所有者和组以及 Alluxio 中该文件的缓存占比100%。其中NOT_PERSISTED表示该文件尚未持久化到底层文件系统PERSISTED则表示已经持久化下一节将演示如何手动触发持久化。查看文件内容cat命令可以打印文件的内容$ ./bin/alluxio fs cat /LICENSE Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION ...理解 UFS 与手动持久化persist 命令默认设置中Alluxio 使用本地文件系统作为底层文件系统UFS默认 UFS 路径为${ALLUXIO_HOME}/underFSStorage对应配置项alluxio.master.mount.table.root.ufs见 conf/alluxio-site.properties.template。检查 UFS 中的内容$ ls ./underFSStorage/此时该目录可能并不存在因为默认行为下数据先写入 Alluxio 空间而不会立刻写入 UFS。我们可以用 Shell 的persist命令将文件从 Alluxio 空间持久化到 UFS$ ./bin/alluxio fs persist /LICENSE persisted file /LICENSE with size 26847再次检查 UFS文件就会出现$ ls ./underFSStorage LICENSE提示是否自动持久化取决于写类型配置。若在alluxio-site.properties中设置alluxio.user.file.writetype.defaultASYNC_THROUGH写入会异步持久化到 UFS而CACHE_THROUGH等模式的行为不同。理解这一点有助于解释文件是否出现在 UFS 中这一现象。查看与回收内存占用Alluxio 用内存缓存数据可通过getUsedBytes查看当前被数据占用的内存量用free释放指定文件占用的缓存空间注意free只是把数据从 Alluxio 缓存中移除并不会删除 Alluxio 文件系统中的文件也不会从 UFS 中删除$ ./bin/alluxio fs getUsedBytes Used Bytes: 27040 $ ./bin/alluxio fs free /LICENSE /LICENSE was successfully freed from Alluxio space. $ ./bin/alluxio fs getUsedBytes Used Bytes: 0 $ ./bin/alluxio fs ls / -rw-r--r-- staff staff 27040 PERSISTED 02-17-2021 16:21:11:061 0% /LICENSE $ ls ${ALLUXIO_HOME}/underFSStorage/ LICENSE释放后再次访问该文件Alluxio 会从 UFS 取回数据并重新放入缓存缓存占比随之恢复为100%$ ./bin/alluxio fs copyToLocal /LICENSE ~/LICENSE.bak Copied /LICENSE to file:///home/staff/LICENSE.bak $ ./bin/alluxio fs getUsedBytes Used Bytes: 27040 $ ./bin/alluxio fs ls / -rw-r--r-- staff staff 27040 PERSISTED 02-17-2021 16:21:11:061 100% /LICENSE $ rm ~/LICENSE.bak在 master Web UI 中浏览文件系统访问 http://localhost:19999/browse 浏览 Alluxio 文件系统可以看到 LICENSE 文件及其元信息。其中Persistence State持久化状态列显示该文件为PERSISTED。[加分项] 挂载 S3体验统一命名空间Alluxio 通过**统一命名空间Unified Namespace**特性统一了对存储系统的访问允许用户把不同的存储系统挂载进 Alluxio 命名空间并通过 Alluxio 命名空间无缝地跨存储系统访问文件。详细原理可阅读 统一命名空间文档。首先在 Alluxio 中创建一个目录作为挂载点$ ./bin/alluxio fs mkdir /mnt Successfully created directory /mnt接着挂载一个已有的 S3 bucket 到 Alluxio。本指南使用公开的alluxio-quick-startS3 bucket$ ./bin/alluxio fs mount --readonly alluxio://localhost:19998/mnt/s3 s3://alluxio-quick-start/data Mounted s3://alluxio-quick-start/data at alluxio://localhost:19998/mnt/s3说明--readonly表示只读挂载alluxio://localhost:19998/mnt/s3是 Alluxio 命名空间中的挂载点19998 为默认 master RPC 端口s3://alluxio-quick-start/data是 S3 上的源路径。现在可以通过 Alluxio 命名空间列出 S3 中的文件。使用熟悉的ls命令列出 S3 挂载目录下的文件$ ./bin/alluxio fs ls /mnt/s3 -r-x------ staff staff 955610 PERSISTED 01-09-2018 16:35:00:882 0% /mnt/s3/sample_tweets_1m.csv -r-x------ staff staff 10077271 PERSISTED 01-09-2018 16:35:00:910 0% /mnt/s3/sample_tweets_10m.csv -r-x------ staff staff 89964 PERSISTED 01-09-2018 16:35:00:972 0% /mnt/s3/sample_tweets_100k.csv -r-x------ staff staff 157046046 PERSISTED 01-09-2018 16:35:01:002 0% /mnt/s3/sample_tweets_150m.csv新挂载的文件和目录同样可以在 Alluxio Web UI 中看到。借助统一命名空间你可以在一个视图中跨存储系统查看数据。使用ls -R递归列举根目录下所有文件$ ./bin/alluxio fs ls -R / -rw-r--r-- staff staff 26847 PERSISTED 01-09-2018 15:24:37:088 100% /LICENSE drwxr-xr-x staff staff 1 PERSISTED 01-09-2018 16:05:59:547 DIR /mnt dr-x------ staff staff 4 PERSISTED 01-09-2018 16:34:55:362 DIR /mnt/s3 -r-x------ staff staff 955610 PERSISTED 01-09-2018 16:35:00:882 0% /mnt/s3/sample_tweets_1m.csv -r-x------ staff staff 10077271 PERSISTED 01-09-2018 16:35:00:910 0% /mnt/s3/sample_tweets_10m.csv -r-x------ staff staff 89964 PERSISTED 01-09-2018 16:35:00:972 0% /mnt/s3/sample_tweets_100k.csv -r-x------ staff staff 157046046 PERSISTED 01-09-2018 16:35:01:002 0% /mnt/s3/sample_tweets_150m.csv输出显示了 Alluxio 文件系统根目录下所有来源的文件/LICENSE来自本地文件系统/mnt/s3/目录及其中的文件来自 S3。[加分项] 用 Alluxio 加速数据访问由于 Alluxio 利用内存存储数据它可以显著加速数据的访问。首先查看之前从 S3 挂载到 Alluxio 的一个文件的状态$ ./bin/alluxio fs ls /mnt/s3/sample_tweets_150m.csv -r-x------ staff staff 157046046 PERSISTED 01-09-2018 16:35:01:002 0% /mnt/s3/sample_tweets_150m.csv输出末尾的0%表示文件Not In Memory不在内存中。该文件是推文的样本数据约 150MB。统计有多少推文提到了单词 kitten并计时$ time ./bin/alluxio fs cat /mnt/s3/sample_tweets_150m.csv | grep -c kitten 889 real 0m22.857s user 0m7.557s sys 0m1.181s取决于你的网络连接状况该操作可能超过 20 秒。如果读取时间过长可以选择该目录下更小的数据集如sample_tweets_100k.csv。在通过cat读取文件后再次用ls查看文件状态$ ./bin/alluxio fs ls /mnt/s3/sample_tweets_150m.csv -r-x------ staff staff 157046046 PERSISTED 01-09-2018 16:35:01:002 100% /mnt/s3/sample_tweets_150m.csv输出显示文件已经 100% 加载到 Alluxio 内存中后续访问该文件的速度会大幅提升。现在统计提到 puppy 的推文数目$ time ./bin/alluxio fs cat /mnt/s3/sample_tweets_150m.csv | grep -c puppy 1553 real 0m1.917s user 0m2.306s sys 0m0.243s如你所见因为数据已经存放在 Alluxio 内存中再次读取同一文件的速度非常快约 2 秒。再统计包含 bunny 的推文数目$ time ./bin/alluxio fs cat /mnt/s3/sample_tweets_150m.csv | grep -c bunny 907 real 0m1.983s user 0m2.362s sys 0m0.240s对比首次读取22.857s与后续读取约 2s可以直观感受到读一次、缓存、再读即命中内存的加速效果。这正是 Alluxio 数据编排的核心价值把热数据保持在内存或本地高速存储中为上层计算框架提供低延迟访问。关闭 Alluxio实验结束后使用如下命令关闭 Alluxio$ ./bin/alluxio-stop.sh local常见问题macOS 11Big Sur及以后版本报 Operation not permitted在 macOS 11 或更高版本上运行./bin/alluxio format时可能遇到如下报错alluxio-ALLUXIO_VERSION/bin/alluxio: Operation not permitted这通常由 macOS 新增的系统设置选项导致。修复方法打开系统偏好设置→共享在左侧勾选远程登录Remote Login如果存在允许完全访问的远程用户Allow full access to remote users选项也一并勾选另外点击按钮将你自己添加到允许远程登录的用户列表中如果尚未在列表中。总结与后续学习路径恭喜你完成了 Alluxio 的快速上手指南你已经成功在本地下载、配置并启动了 Alluxio通过 Alluxio Shell 完成了文件操作与持久化体验了统一命名空间的 S3 挂载并直观感受了内存缓存带来的访问加速。这是一个上手 Alluxio 的完整起点接下来可以从以下方向继续深入部署 AlluxioAlluxio 可以部署在很多不同的环境下本地运行 Alluxio在集群上独立运行 Alluxio在 Docker 上运行 Alluxio在 Kubernetes 上运行 Alluxio底层存储系统有很多可以通过 Alluxio 访问的底层存储系统Alluxio 使用 Azure Blob StoreAlluxio 使用 S3Alluxio 使用 GCSAlluxio 使用 HDFSAlluxio 使用 NFS计算框架和应用不同计算框架和应用可以与 Alluxio 集成Apache Spark 使用 AlluxioApache Hive 使用 AlluxioPresto 使用 Alluxio此外Admin-CLI 文档 与 User-CLI 文档 提供了完整的命令行参考适合在深入使用 Alluxio 时随时查阅。赞分享存储分布式文件系统缓存大数据【免费下载链接】alluxioAlluxio, data orchestration for analytics and machine learning in the cloud项目地址https://gitcode.com/gh_mirrors/al/alluxio点击查看免费下载相关推荐5分钟上手Alluxio on KubernetesHelm一键部署与持久化存储实战5分钟上手Alluxio on KubernetesHelm一键部署与持久化存储实战 你还在为分布式存储系统部署繁琐、存储配置复杂而烦恼吗本文将带你5分钟内存储分布式文件系统缓存大数据Alluxio在Kubernetes上的部署与运维指南Alluxio在Kubernetes上的部署与运维指南 概述 Alluxio作为内存加速的虚拟分布式文件系统可以很好地运行在Kubernetes集群中。本文将存储分布式文件系统缓存大数据Alluxio Java API 深度解析文件系统操作与最佳实践Alluxio Java API 深度解析文件系统操作与最佳实践 概述 Alluxio作为内存加速的虚拟分布式文件系统提供了多种客户端API供应用程序访问。存储分布式文件系统缓存大数据上一篇7个实用技巧快速掌握SillyTavern终极配置打造沉浸式AI聊天体验下一篇终极Flash浏览器CefFlashBrowser让你重温经典Flash游戏和网页应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考