开发者指南

该页面是一些面向Alluxio开发者的技巧和手册。

更改Thrift RPC的定义

Alluxio使用Thrift来完成客户端与服务端的RPC通信。.thrift文件定义在common/src/thrift/目录下,其一方面用于自动生成客户端调用RPC的Java代码,另一方面用于实现服务端的RPC。要想更改一个Thrift定义,你首先必须要安装Thrift的编译器。如果你的机器上有brew,你可以通过运行下面的命令来完成。

$ brew install thrift

然后重新生成Java代码,运行

$ bin/alluxio thriftGen

更改Protocol Buffer消息

Alluxio使用Protocol Buffer来读写日志消息。.proto文件被定义在servers/src/proto/journal/目录下,其用于为Protocol Buffer消息自动生成Java定义。要需要修改这些消息,首先要读取更新的消息类型从而保证你的修改不会破坏向后兼容性。然后就是安装protoc。如果你的机器上有brew,你可以通过运行下面的命令来完成。

$ brew install protobuf

然后重新生成Java代码,运行

$ bin/alluxio protoGen

bin/alluxio目录下的命令列表

开发者所用到的大多数命令都在bin/alluxio目录下。下面的表格有对每条命令及其参数的说明。

命令参数介绍
format [-s] 格式化Alluxio的Master和所有Worker。选项[-s]表示这条命令只有在底层文件系统为本地的、且已经不存在的情况下才格式化。
formatWorker None 格式化Alluxio Worker的本地存储。
bootstrapConf <ALLUXIO_MASTER_HOSTNAME> 如果引导程序配置文件alluxio-env.sh不存在,利用ALLUXIO_MASTER_HOSTNAME生成。
fs [fs-commands] 在命令行中与Alluxio进行交互,从而完成基本的文件系统操作。详情见Command Line
loadufs <TachyonPath> <UfsPath> [ExcludePathPrefixes] UfsPath下的文件加载到给定的AlluxioPath中。ExcludePathPrefixes可以是一组用“;”隔开的前缀。ExcludePathPrefixes中每个前缀下的路径都不会被加载。
runTest <Example> <ReadType> <WriteType> 在一个Alluxio集群上运行一个端到端的测试。Example为"Basic"或者"BasicNonByteBuffer"。ReadType为"CACHE_PROMOTE", "CACHE",或者"NO_CACHE"。WriteType为"MUST_CACHE", "CACHE_THROUGH"或"THROUGH"。
runTests None 在一个Alluxio集群上运行所有端到端的测试。该命令等同于运行包含所有参数的runTest命令。
journalCrashTest [-creates <arg>] [-deletes <arg>] [-renames <arg>] [-maxAlive <arg>] [-testDir <arg>] [-totalTime <arg>] [-help] 在崩溃的情形下测试Master日志系统。可以执行alluxio journalCrashTest -help来获取每个参数的详细信息,或者你可以不带任何参数默认执行。
readJournal [-help] [-noTimeout] 从标准输入读取一个Alluxio的日志文件,并且以将其以文字形式写到标准输出上。你可以对一个日志文件执行类似于alluxio readJournal < journal/FileSystemMaster/log.out的命令。
killAll <WORD> 杀死pid或命令中包含WORD的进程,WORD由用户指定。
copyDir <PATH> 将路径为PATH的文件复制到所有节点。
clearCache None 清空机器上的OS缓冲区缓存。这条命令需要管理员权限。
thriftGen None 生成所有thrift代码。详情见Change a Thrift RPC definition
protoGen None 生成所有协议缓冲区代码。详情见Change a Protocol Buffer Message
version None 打印Alluxio版本信息。
validateConf None 验证Alluxio配置。
validateEnv <TARGET> [NAME] 验证Alluxio运行环境。TARGET可以是如下选项:
local 在本地运行所有验证项目
master 在本地运行master验证项目
worker 在本地运行worker验证项目
all 在所有master和worker结点运行相关验证项目
masters 在所有master结点运行相关验证项目
workers 在所有worker结点运行相关验证项目
NAME可以是任何项目名称前缀。
如果给出NAME参数,只有名称前缀和参数值相匹配的项目会运行。 例如,指定NAME参数为"master"或"ma"将运行验证项目 master.rpc.port.availablemaster.web.port.available,而不会运行 worker.rpc.port.available项目。
如果未指定NAME参数,所有TARGET相关的项目将被运行。

此外,这些命令的执行有不同的先决条件。formatformatWorkerjournalCrashTestreadJournalversionvalidateConfvalidateEnv命令的先决条件是你已经构建了Alluxio(见构建Alluxio主分支其介绍了如何手动构建Alluxio)。而fsloadufsrunTestrunTests命令的先决条件是你已经运行了Alluxio系统。

Need help? Ask a Question