Configurando o Alluxio com Amazon S3

Slack Docker Pulls GitHub edit source

Este guia descreve como configurar o Alluxio com Amazon S3 como um sistema de armazenamento inferior.

Configuração Inicial

Primeiro, os binários do Alluxio devem estar na sua máquina. Você pode compilar o Alluxio ou baixar os binários localmente.

Depois, se você ainda não tiver efetuado, crie o arquivo de configuração a partir do modelo:

cp conf/alluxio-env.sh.template conf/alluxio-env.sh

Em preparação para utilizar o S3 com o Alluxio, crie um bucket (ou utilize um bucket existente). Você também pode anotar o diretório que deseja utilizar neste bucket, ou por criar um novo diretório neste bucket ou por escolher um já existente. Pela intenção deste guia, o nome do S3 bucket será chamado de S3_BUCKET e o diretório neste bucket será chamado de S3_DIRECTORY.

Configurando o Alluxio

Para configurar o Alluxio para utilizar o S3 como um sistema de armazenamento inferior, modificações no arquivo conf/alluxio-env.sh devem ser efetuados. A primeira modificação é para especificar um S3 bucket existente e um diretório como um under storage system. Você pode especificar isso modificando o arquivo conf/alluxio-env.sh para incluir:

alluxio.underfs.address=s3n://S3_BUCKET/S3_DIRECTORY

A seguir, você precisa especificar as credenciais AWS para o acesso do S3. Na seção ALLUXIO_JAVA_OPTS do arquivo conf/alluxio-env.sh, adicione:

fs.s3n.awsAccessKeyId=<AWS_ACCESS_KEY_ID>
fs.s3n.awsSecretAccessKey=<AWS_SECRET_ACCESS_KEY>

Aqui, o <AWS_ACCESS_KEY_ID> e <AWS_SECRET_ACCESS_KEY> devem ser substituídos pelas suas atuais chaves de segurança AWS ou outras variáveis de ambiente que contenham suas credenciais.

Depois dessas alterações, o Alluxio deve ser configurado para trabalhar com o S3 como o sistema de armazenamento inferior e você pode tentar Executar o Alluxio localmente com S3.

Acessando S3 através de um Proxy

Para comunicar com o S3 através de um proxy, modifique a seção ALLUXIO_JAVA_OPTS do arquivo conf/alluxio-env.sh para incluir:

alluxio.underfs.s3.proxy.host=<PROXY_HOST>
alluxio.underfs.s3.proxy.port=<PROXY_PORT>

Aqui, o <PROXY_HOST> e <PROXY_PORT> deve ser substituído pelo servidor e porta do seu proxy e o <USE_HTTPS?> deve ser definido para true ou false, dependendo se o seu proxy utiliza comunicação HTTPS.

Configurando Sua Aplicação

Quando estiver montando sua aplicação para utilizar o Alluxio, sua aplicação deverá ter que incluir o módulo alluxio-core-client-fs. Se você estiver utilizando o maven, você pode adicionar a dependência para sua aplicação com:

<!-- Alluxio file system interface -->
<dependency>
  <groupId>org.alluxio</groupId>
  <artifactId>alluxio-core-client-fs</artifactId>
  <version>1.7.1</version>
</dependency>
<!-- HDFS file system interface -->
<dependency>
  <groupId>org.alluxio</groupId>
  <artifactId>alluxio-core-client-hdfs</artifactId>
  <version>1.7.1</version>
</dependency>

Executando o Alluxio Localmente com S3

Depois que tudo estiver configurado, você pode iniciar o Alluxio localmente para ver se tudo funciona.

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

Isto deve iniciar um Alluxio master e um Alluxio worker. Você pode ver a interface de usuário do master em http://localhost:19999.

Em seguida, você pode rodar um simples programa de teste:

./bin/alluxio runTests

Depois que obter sucesso neste teste, você pode acessar o seu diretório S3 em S3_BUCKET/S3_DIRECTORY para verificar se os arquivos e diretórios criados pelo Alluxio existem. Para este teste, você deve ver arquivos nomeados como:

S3_BUCKET/S3_DIRECTORY/alluxio/data/default_tests_files/Basic_CACHE_THROUGH

Para parar o Alluxio, você pode executar:

./bin/alluxio-stop.sh local