开发者指南
该页面是一些面向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 | <AlluxioPath> <UfsPath> [ExcludePathPrefixes] | 将UfsPath 下的文件加载到给定的AlluxioPath 中。ExcludePathPrefixes 可以是一组用“;”隔开的前缀。ExcludePathPrefixes 中每个前缀下的路径都不会被加载。 |
logLevel | [--level <arg>] --logName <arg> [--target <arg>] | |
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.available 和master.web.port.available ,而不会运行 worker.rpc.port.available 项目。如果未指定 NAME 参数,所有TARGET 相关的项目将被运行。 |
此外,这些命令的执行有不同的先决条件。format
,formatWorker
,journalCrashTest
,readJournal
,version
,validateConf
和validateEnv
命令的先决条件是你已经构建了Alluxio(见构建Alluxio主分支其介绍了如何手动构建Alluxio)。而fs
,loadufs
,logLevel
, runTest
和runTests
命令的先决条件是你已经运行了Alluxio系统。