Dicas de Desenvolvedor

Slack Docker Pulls GitHub edit source

Esta página possui uma coleção de dicas e howtos construídos pelos desenvolvedores do Alluxio.

Alterar a definição de um Thrift RPC

O Alluxio utiliza o thrift para comunicação RPC entre os clients e servidores. Os arquivos .thrift, que estão definidos em common/src/thrift/, são utilizados na geração automática de códigos Java para efetuarem chamadas RPCs em clients e implementar os RPCs nos servidores. Para mudar uma definição Thrift, primeiramente, você precisa instalar o compilador Thrift. Se você possuir o brew, você pode fazer isso, executando:

brew install thrift

Então para regenerar o código Java, execute:

bin/alluxio thriftGen

Alterar o Protocol Buffer Message

O Alluxio utiliza protocol buffers para ler e escrever mensagens journal. Os arquivos .proto, que estão definidos em servers/src/proto/journal/, são utilizados na geração automática de definições Java para as mensagens protocol buffer. Para modificar essas mensagens, primeiro leia sobre atualizar um tipo de mensagem para ter certeza que a sua alteração não danifique a compatibilidade com versões anteriores. Em seguida, instale o protocol. Se você possuir o brew, você pode fazer isso, executando:

brew install protobuf

Então para regenerar o código Java, execute:

bin/alluxio protoGen

Lista completa dos comandos em bin/alluxio

A maioria dos comandos em bin/alluxio são para desenvolvedores. A tabela a seguir explica a descrição e a sintaxe de cada comando.

</tr>
CommandArgsDescription
format [-s] Format Alluxio Master and all Workers. The option [-s] indicates that the command should only format when the underfs is local and doesn't already exist.
formatWorker None Format Alluxio Worker storage on this local node.
bootstrapConf <ALLUXIO_MASTER_HOSTNAME> Generate the bootstrap config file alluxio-env.sh with the specified ALLUXIO_MASTER_HOSTNAME, if the config file doesn't exist.
fs [fs-commands] Interact with Alluxio in command line style for basic file system operations. See Command Line for more information.
loadufs <AlluxioPath> <UfsPath> [ExcludePathPrefixes] Loads files under UfsPath to the given AlluxioPath. ExcludePathPrefixes can be a set of prefixes which are separated by ';'. The paths with a prefix in ExcludePathPrefixes will not be loaded.
logLevel [--level <arg>] --logName <arg> [--target <arg>] Dynamically changes the log level of a class on the running Alluxio server. Try alluxio logLevel -help to see the meaning of each argument in detail.
runTest <Example> <ReadType> <WriteType> Run an end-to-end test on a Alluxio cluster. Example should be "Basic" or "BasicNonByteBuffer". ReadType should be "CACHE_PROMOTE", "CACHE", or "NO_CACHE". WriteType should be "MUST_CACHE", "CACHE_THROUGH" or "THROUGH".
runTests None Run all end-to-end tests on a Alluxio cluster. That is, execute the runTest command with all the possible args.
journalCrashTest [-creates <arg>] [-deletes <arg>] [-renames <arg>] [-maxAlive <arg>] [-testDir <arg>] [-totalTime <arg>] [-help] Test the Master Journal System in a crash scenario. Try alluxio journalCrashTest -help to see the meanings of each argument in detail, or you can run it without args by default.
readJournal [-help] [-noTimeout] Read a Alluxio journal file from stdin and write a human-readable version of it to stdout. You can run this on the journal file as alluxio readJournal < journal/FileSystemMaster/log.out.
killAll <WORD> Kill processes whose pid or command contains the WORD specified by the user.
copyDir <PATH> Copy the PATH to all worker nodes.
clearCache None Clear OS buffer cache of the machine. This command needs the root permission.
thriftGen None Generate all thrift code. See Change a Thrift RPC definition.
protoGen None Generate all protocol buffer code. See Change a Protocol Buffer Message.
version None Print Alluxio version.
validateConf None Validate Alluxio configuration.
validateEnv <TARGET> [NAME] Validate environment for Alluxio. TARGET can be one of the following values:
local run all validation tasks on local
master run master validation tasks on local
worker run worker validation tasks on local
all run corresponding validation tasks on all master nodes and worker nodes
masters run master validation tasks on all master nodes
workers run worker validation tasks on all worker nodes
NAME can be any task full name or prefix.
When NAME is given, only tasks with name starts with the prefix will run. For example, specifying NAME "master" or "ma" will run both tasks named master.rpc.port.available and master.web.port.available but not worker.rpc.port.available.
If NAME is not given, all tasks for the given TARGET will run.

Estes comandos possuem pré-requisitos diferentes. O pré-requisito para os comandos format, formatWorker, journalCrashTest, readJournal, version, validateConf e validateEnv é que você tenha configurado o Alluxio (veja o Construindo o Alluxio Master Branch para saber como configurar o Alluxio manualmente). Além disso, o pré-requisito para os comandos fs, loadufs, runTest e runTests é que você possua o sistema do Alluxio em execução.