Alluxio
ProductsLanguageHome
  • Alluxio概览
  • 用户指南
    • 快速上手指南
    • 架构
    • FAQ
    • 作业服务器
    • 应用场景
  • 核心功能
    • 缓存
    • 统一命名空间
  • 部署 Alluxio
    • 在Kubernetes上部署Alluxio
    • 本地运行Alluxio
    • 在集群上独立运行Alluxio
    • 在Docker上运行Alluxio
    • 在具有HA的群集上部署Alluxio
    • 使用Docker部署AlluxioFuse加速深度学习训练(试验)
    • 基本要求
  • 云源生
    • Tencent EMR
  • 计算应用
    • Apache Spark
    • Presto
    • Spark on Kubernetes
    • Apache Flink
    • Apache Hadoop MapReduce
    • Presto on Iceberg (Experimental)
    • Trino
    • Apache Hive
    • 深度学习框架
    • Tensorflow
  • 底层存储系统
    • Alluxio集成Amazon AWS S3作为底层存储
    • Alluxio集成GCS作为底层存储
    • Alluxio集成Azure Blob Store作为底层存储
    • Azure Data Lake Storage Gen2
    • Azure 数据湖存储
    • Alluxio集成HDFS作为底层存储
    • Alluxio集成COS作为底层存储
    • Alluxio集成COSN作为底层存储
    • Alluxio集成Ceph Object Storage作为底层存储
    • Alluxio集成NFS作为底层存储
    • Alluxio集成Kodo作为底层存储
    • Alluxio集成Swift作为底层存储
    • Alluxio集成WEB作为底层存储
    • Alluxio集成Minio作为底层存储
    • 阿里云对象存储服务
    • Alluxio集成Ozone作为底层存储
    • Alluxio集成CephFS作为底层存储
  • 安全设置
    • 安全性
  • 运维指南
    • 配置项设置
    • 命令行接口
    • 管理员命令行接口
    • Web界面
    • 日志
    • 度量指标系统
    • 远程记录日志
  • 管理
    • 升级
    • 异常诊断与调试
  • APIs
    • Filesystem API
    • S3 Client
    • POSIX API
    • REST API
    • Python Client
    • 兼容Hadoop的Java
    • Go 客户端
  • 开发者资源
    • 编译Alluxio源代码
    • 开发指南
    • 代码规范
    • 如何开发单元测试
    • 文档规范
  • 参考
    • 配置项列表
    • List of Metrics
  • REST API
    • Master REST API
    • Worker REST API
    • Proxy REST API
    • Job REST API
  • Javadoc
Powered by GitBook
On this page
  • 软件要求
  • 软件要求
  • 帐户准备
  • 配置您的Git电子邮件
  • 分叉Alluxio代码仓库
  • 编译Alluxio
  • 领取一个New Contributor任务
  • 在克隆中创建分支
  • 创建本地提交
  • 提交一个Pull Request (PR)
  • 审阅Pull Request
  • Video
  • 提交新特性
  • 下一步
  • 欢迎来到Alluxio社区!
  1. 开发者资源

开发指南

Last updated 6 months ago

欢迎来到Alluxio社区,我们热烈欢迎你参与到我们的社区并且对社区做贡献。 本页面提供了如何参与到Alluxio开源项目社区并成为其中一员的指导。

软件要求

最基本的需要是一台安装了Mac OS X或Linux的电脑,目前版本的Alluxio尚未对Windows系统提供支持。

我们建议您先按照基于源码编译Alluxio 。

软件要求

  • 所需软件:

    • Java 8

    • Maven 3.3.9+

    • Git

帐户准备

Github帐户

您需要有一个GitHub帐户才能向Alluxio代码仓库贡献代码。

您需要知道您的GitHub电子邮件地址才能进行贡献。 您可以在中找到你的邮件地址。

配置您的Git电子邮件

分叉Alluxio代码仓库

分叉Alluxio代码仓库之后,应创建分叉代码仓库的本地克隆。 这会将您分叉的文件复制到您的计算机上。 您可以使用以下命令克隆您的分叉:

$ git clone https://github.com/YOUR-USERNAME/alluxio.git
$ cd alluxio

这将在alluxio/目录下创建克隆。

要将更改从开源Alluxio原始代码库提取到克隆中,您需要创建一个指向Alluxio原始代码库的新远程代码存储库。 要添加新的远程代码存储库,请在新创建的克隆目录中运行:

$ git remote add upstream https://github.com/Alluxio/alluxio.git

这将创建一个称为upstream的远程代码仓库指向Alluxio原始代码仓库。 您可以用以下命令查看远程代码仓库的URL:

$ git remote -v

这会显示远程代码仓库的URL,包括origin(您的分叉)和upstream(Alluxio原始代码仓库)。

编译Alluxio

您现在可以编译Alluxio!

在本地克隆目录中,使用以下命令编译Alluxio:

$ mvn clean install

这将编译所有的Alluxio,并运行所有测试。取决于您的硬件,这可能需要几分钟到半小时才能完成。

如果您想重新编译而不运行所有检查和测试,运行:

$ mvn -T 2C clean install -DskipTests -Dmaven.javadoc.skip -Dfindbugs.skip \
  -Dcheckstyle.skip -Dlicense.skip

此编译所花时间应少于1分钟。

领取一个New Contributor任务

Alluxio的ticket中有许多不同的等级,它们分别是:New Contributor、Beginner、Intermediate、 Advanced。 新的开发者应该在进行更高级的任务之前先完成两个New Contributor任务。 New Contributor任务非常容易,不需要了解过多的关于代码的细节;Beginner任务通常只需要修改一个文件;Intermediate任务通常需要修改多个文件,但都在同一个package下;Advanced任务通常需要修改多个package下的多个文件。

我们建议所有新的贡献者在执行更高级的任务之前,先解决两个New Contributor任务。这是使自己熟悉为Alluxio项目做贡献的整个过程的好方法。

注意所有Github Issue都有一个对应的数字。当你创建一个Pull Request的时候,请在该Issue的描述中加入如下某一种描述

  • "Fixes Alluxio/new-contributor-tasks#123",

  • "Fixed Alluxio/new-contributor-tasks#123",

  • "Fix Alluxio/new-contributor-tasks#123",

  • "Closes Alluxio/new-contributor-tasks#123",

  • "Closed Alluxio/new-contributor-tasks#123"

  • "Close Alluxio/new-contributor-tasks#123"。

在克隆中创建分支

找到一个任务后,回到终端并转到本地克隆的目录下。 您可以开始解决问题了!

为了提交更改给Alluxio,最佳实践是在一个单独分支中完成对您针对一个问题的所有更改。以下内容介绍如何创建分支。

首先,确保您在您克隆的master分支中。运行以下命令切换到master分支:

$ git checkout master

然后,您应确保您的master分支与不断发展的Alluxio原始代码库中的最新更改保持同步。运行以下命令来提取项目中所有最新更改:

$ git pull upstream master

这将会从upstream仓库的master分支中获取到所有的更新,并合并到你的本地master分支里。

现在,您可以创建一个新分支来处理您之前领取的New Contributor任务。创建分支名称为awesome_features,运行:

$ git checkout -b awesome_feature

这将创建分支,并切换到该分支。您可以修改必要的代码以解决该问题。

创建本地提交

在你处理该任务时,您可以创建代码的本地提交。 当您完成一部分很明确的阶段性修改后,这将很有用。 运行以下命令将一个文件标记为准备提交阶段:

$ git add <file to stage>

在所有合适的文件都准备好提交之后,可以运行以下命令提交包含这些修改的一个commit:

$ git commit -m "<concise but descriptive commit message>"

提交一个Pull Request (PR)

创建所有必要的本地提交后,可以将所有提交推送到你在GitHub中的代码仓库中。针对您的awesome_feature分支,可以使用以下命令推送到GitHub:

$ git push origin awesome_feature

这会将您在本地分支awesome_feature中的所有新commit,推送到您的Alluxio分支中的GitHub中的awesome_feature分支中。

将所有更改推送到分支后,请访问您的Alluxio的GitHub分支。通常,Github会显示您的哪个分支最近已更新,但如果未更新,直接选择要提交Pull Request的分支(在本示例中为awesome_feature),然后按新Pull Request按钮。

在提交新Pull Request页面中,基础分支应为Alluxio/alluxio,基础分支应为master。头分支将是您的分支,而compare分支应是您要提交Pull Request的分支(在此示例中为awesome_feature)。

Pull Request标题

  • 标题不能太长(<〜50个字符),也不能太短(描述清楚)

  • 标题应以祈使动词开头

    • 例子:修复Alluxio UI问题,重构Inode缓存逻辑

    • 错误例子:修复了Alluxio UI错误,~~ Inode缓存重构~~

  • 标题的第一个单词应大写(英文)

  • 标题不应以句号结尾

这些规则有一些例外。 标题开头前可以加前缀。 前缀全大写,并与标题的其余部分用一个空格隔开。 下面是一些可用前缀。

  • [DOCFIX]: 这是为更新文档的PRs

    • 例子:‘**[DOCFIX]更新入门指南’,‘[DOCFIX]**添加GCS文档‘

  • [SMALLFIX]:用于很小不会更改任何逻辑的PRs修改,例如拼写错误

    • 示例:‘**[SMALLFIX]**修复AlluxioProcess中的错字’

Pull Request说明

  • 描述此PR更改的内容以及更改原因

  • 描述应包括此更改的任何正面和负面影响

  • 描述中的各段应以空白行分隔

  • 如果此Pull Request解决一个Github问题,请在描述框的最后一行添加指回该问题的链接。

    • 如果此PR解决了Github问题#1234,则在Pull Request描述的最后包括'Fixes#1234','Fixed#1234','Fix#1234','Closes#1234','Closed#1234'或'Close#1234'。

    • 如果问题来自New Contributor任务,请在版本号#1234之前添加代码仓名称'Alluxio / new-contributor-tasks',例如'Fixes Alluxio / new-contributor-tasks#1234。'

完成所有操作后,单击**"创建Pull Request"**按钮。 恭喜你! 您对Alluxio的第一个Pull Request已提交!

审阅Pull Request

提交后,社区中的其他开发人员将审核您的Pull Request。 其他人可能会在您的Pull Request中添加评论或问题。

在代码审阅期间,请回复审阅者留下的所有评论,以便审阅者知道已解决了哪些评论以及每个评论是如何解决的。

在此过程中,有些人可能会要求修改部分Pull Request。 为此,您只需要在用于该Pull Request的分支中进行更改,创建一个新的本地提交,推送到您的远程分支,该Pull Request将自动更新。 详细步骤:

$ git add <modified files>
$ git commit -m "<another commit message>"
$ git push origin awesome_feature

在Pull Request处理和解决了所有评论和问题后,审阅者将为您的Pull RequestLGTM回复并批准Pull Request。 在至少一个批准后,一个维护人员将把您的Pull Request合并到Alluxio代码库中。

恭喜你! 您已成功为Alluxio做出了贡献! 感谢您加入社区!

Video

提交新特性

如果您有一个非常好的关于新的Alluxio特性想法,我们强烈建议您实施并贡献到Alluxio代码仓库。

  1. 标记您的问题为'type-feature'。 Alluxio成员定期检查所有未解决的问题,并将分配审阅者们来审阅设计文档。社区用户无权在Alluxio代码仓库中分配问题。因此,如果您想启动审阅过程,则可以创建一个占位Pull Request,链接到该问题,附加特性设计文档,并在那里向Alluxio成员请求审阅。

  2. 审阅者(相应的Github问题的责任人或Pull Request的审阅者)将审阅特性设计文档,并提供反馈或迭代修改请求。如果您不确定特定的设计决策,请随时提出问题并寻求审阅者和社区成员的帮助。还请列出该特性的可能选项以及相应的利弊。

  3. 在对设计文档进行几次迭代修改之后,审阅者将为设计文档提供LGTM。此功能就可以进入实施阶段。

  4. 在您的Pull Request被审核且合并后,您已向Alluxio提供了新特性。干杯祝贺!

下一步

新的贡献者可以通过以下一些资源来进一步熟悉Alluxio:

欢迎来到Alluxio社区!

在向Alluxio提交代码之前,您应该确认你的Git电子邮件设置正确。 .

为了向Alluxio贡献代码,您先需要分叉Alluxio代码仓库。 如果您还没分叉代码仓库,您可以访问并按页面右上角的Fork按钮。 之后,您将拥有自己的Alluxio代码仓库分支。

这里有更多 。

看一些在"Open"状态的,然后找一个没分配的任务。为了自我分配或接收调查表,请在问题中留下评论,例如/assign @yourUserName,以表明您正在处理该问题。 在开始解决问题单之前,您应该将问题单分配给自己,以便社区中的其他人知道您正在处理和完成问题单。

请阅读惯例以获取更多详细信息和有关如何更新Alluxio源代码的提示。

如果您想要更多有关创建提交的信息,请访问有关如何创建提交的。

完成所有解决问题所需修改后,您可以向Alluxio项目提交Pull Request了!这是,但是以下是通常做法。

使用有效的Pull Request标题很重要。这里有一些非常好的PR标题的提示和惯例。这些提示和窍门是从现有非常好的

写一个好的PR描述也很重要。 以下是有关非常好的PR描述的一些提示和惯例,这些提示和窍门是从现有非常好的 。

Pull Request提交后,您可以在Alluxio代码仓库的页面上找到它。

在中创建有关您的特性的Github问题。

在Github问题中遵循这个附加特性设计文档。设计文档应遵循模板,并提供有关每个部分的信息。我们建议使用公开的Google文档,以进行更有效的协作和讨论。如果您不希望使用Google文档,则可以选择附加Markdown文件或PDF文件设计文档。

如上一节所述,创建一个Fork Alluxio代码仓库,实现您的特性并创建一个Pull Request。另请在您的Pull Request中链接到问题和设计文档。在Pull Request中,您还应该将有关特性的文档添加到。

读 和

读

分叉存储库,为一个或两个文件添加单元测试或javadoc,提交Pull Request。也欢迎您在我们的Github问题中解决问题。这里是尚未分配的。每个New Contributer请限制在2个任务。然后,尝试一些Beginner/Intermediate任务,或在。相关教程,请参阅有关和。

指南克隆并编译Alluxio源代码
个人资料电子邮件设置
请访问有关设置电子邮件的说明。
Alluxio代码仓库
编译Alluxio源代码的细节
"新的Contributor Alluxio任务"
Alluxio编码
说明
有关提交Pull Request的详细说明
提交信息规则中改编而成的。
标题允许的开始单词列表
提交信息规则中改编而成的
Pull Request
Alluxio代码仓库
模板
Alluxio文档中
本地运行Alluxio
在集群上运行Alluxio
配置设置和命令行界面
命令行界面
代码示例
从源代码编译Alluxio
新贡献者任务的列表
用户邮件论坛中询问
分叉代码仓
发送Pull Request的GitHub指南