Construindo o Alluxio Master Branch

Slack Docker Pulls GitHub edit source

Este guia descreve os passos para compilar o Alluxio do início.

O pré-requisito para este guia é que você tenha Java 7 (or above), Maven e Thrift 0.9.2 (Optional) instalados.

Confira o Alluxio master branch a partir do Github e empacote-o:

git clone git://github.com/alluxio/alluxio.git
cd alluxio
mvn install -DskipTests

Se você estiver vendo o java.lang.OutOfMemoryError: Java heap space, por favor execute:

export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"

Se você quer construir alguma versão particular do Alluxio, por exemplo 1.7.1, por favor execute git checkout v1.7.1 depois de cd alluxio.

O sistema de construção Maven busca dependências, compila códigos fonte, roda unidades de teste e empacota o sistema. Se esta é a primeira vez que você está construindo o projeto, pode demorar um tempo para baixar todas as dependências. Entretanto, as construções subsequentes serão mais rápidas.

Assim que o Alluxio estiver pronto, você pode iniciar este com:

./bin/alluxio format
./bin/alluxio-start.sh local

Para verificar se o Alluxio está rodando, você pode acessar http://localhost:19999 ou checar os logs dentro do diretório alluxio/logs. Você também pode executar um simples programa de teste:

./bin/alluxio runTests

Você deverá estar apto para ver os resultados, semelhantes aos resultados seguintes:

/default_tests_files/BasicFile_STORE_SYNC_PERSIST has been removed
2015-10-20 23:02:54,403 INFO   (ClientBase.java:connect) - Alluxio client (version 1.0.0) is trying to connect with FileSystemMaster master @ localhost/127.0.0.1:19998
2015-10-20 23:02:54,422 INFO   (ClientBase.java:connect) - Client registered with FileSystemMaster master @ localhost/127.0.0.1:19998
2015-10-20 23:02:54,460 INFO   (BasicOperations.java:createFile) - createFile with fileId 1476395007 took 65 ms.
2015-10-20 23:02:54,557 INFO   (ClientBase.java:connect) - Alluxio client (version 1.0.0) is trying to connect with BlockMaster master @ localhost/127.0.0.1:19998
2015-10-20 23:02:54,558 INFO   (ClientBase.java:connect) - Client registered with BlockMaster master @ localhost/127.0.0.1:19998
2015-10-20 23:02:54,590 INFO   (WorkerClient.java:connect) - Connecting local worker @ /192.168.31.242:29998
2015-10-20 23:02:54,654 INFO   (FileUtils.java:createStorageDirPath) - Folder /Volumes/ramdisk/alluxioworker/6601007274872912185 was created!
2015-10-20 23:02:54,657 INFO   (LocalBlockOutStream.java:<init>) - LocalBlockOutStream created new file block, block path: /Volumes/ramdisk/alluxioworker/6601007274872912185/1459617792
2015-10-20 23:02:54,658 INFO   (WorkerClient.java:connect) - Connecting local worker @ /192.168.31.242:29998
2015-10-20 23:02:54,754 INFO   (BasicOperations.java:writeFile) - writeFile to file /default_tests_files/BasicFile_STORE_SYNC_PERSIST took 294 ms.
2015-10-20 23:02:54,803 INFO   (BasicOperations.java:readFile) - readFile file /default_tests_files/BasicFile_STORE_SYNC_PERSIST took 47 ms.
Passed the test!

Você pode parar o sistema executando:

./bin/alluxio-stop.sh local

Unidades de Teste

Para rodar todas as unidades de testes:

mvn test

Para rodar todas as unidades de teste com um armazenamento inferior (under storage) diferente do filesystem local, execute:

mvn test [ -Dhadoop.version=x.x.x ] [ -P<under-storage-profile> ]

Atualmente, os valores suportados para <under-storage-profile> são:

Not Specified # [Default] Tests against local file system
swiftTest     # Tests against a simulated Swift cluster
hdfsTest      # Tests against HDFS minicluster
glusterfsTest # Tests against GlusterFS
s3Test        # Tests against Amazon S3 (requires a real S3 bucket)
ossTest       # Tests against Aliyun OSS (requires a real OSS bucket)
gcsTest       # Tests against Google Cloud Storage (requires a real GCS bucket)

Para ter a saída dos logs direcionados para o STDOUT, adicione a instrução a seguir para o commando mvn:

-Dtest.output.redirect=false -Dalluxio.root.logger=DEBUG,CONSOLE

Suporte de Distribuições

Para construir o Alluxio sobre qualquer versão diferente do hadoop, você apenas precisa mudar o hadoop.version.

Apache

Todas as construções principais são do Apache portanto todas as versões Apache podem ser utilizadas diretamente:

-Dhadoop.version=2.2.0
-Dhadoop.version=2.3.0
-Dhadoop.version=2.4.0

Cloudera

Para construir sobre uma versão do Cloudera, apenas mencione a versão como $apacheRelease-cdh$cdhRelease:

-Dhadoop.version=2.3.0-cdh5.1.0
-Dhadoop.version=2.0.0-cdh4.7.0

MapR

Para construir sobre uma versão MapR:

-Dhadoop.version=2.7.0-mapr-1607
-Dhadoop.version=2.7.0-mapr-1602
-Dhadoop.version=2.7.0-mapr-1506
-Dhadoop.version=2.3.0-mapr-4.0.0-FCS

Pivotal

Para construir sobre uma versão Pivotal release, apenas mencione a versão como $apacheRelease-gphd-$pivotalRelease:

-Dhadoop.version=2.0.5-alpha-gphd-2.1.1.0
-Dhadoop.version=2.2.0-gphd-3.0.1.0

Hortonworks

Para construir sobre uma versão Hortonworks, apenas mencione a versão como $apacheRelease.$hortonRelease:

-Dhadoop.version=2.1.0.2.0.5.0-67
-Dhadoop.version=2.2.0.2.1.0.0-92
-Dhadoop.version=2.4.0.2.1.3.0-563

Configurações de Sistema

Algumas vezes, você precisará tratar com pequenas configurações de sistemas para poder garantir que as unidades de teste concluam Uma configuração comum que pode ser necessário é de configurar o ulimit.

Mac

Para aumentar a quantidade de arquivos e processos permitidos, execute o passo a seguir:

sudo launchctl limit maxfiles 32768 32768
sudo launchctl limit maxproc 32768 32768

Também é recomendado que exclua o clone local do Alluxio a partir da indexação do Spotlight. Caso contrário, o seu Mac pode travar constantemente tentando re-indexar o file system durante as unidades de teste. Para efetuar esta alteração, vá para Preferências do Sistema > Spotlight > Privacidade, clique no botão +, navegue para o diretório que contém o seu clone do Alluxio e clique em Escolher para adicionar isso na lista de exclusão.