Guia Prático de Instalação e Uso do Banco de Dados em Grafo Gaffer

Visão Geral

O Gaffer é uma plataforma de armazenamento e consulta de grafos desenvolvida pelo GCHQ, voltada para cenários de alto volume, como análise de redes complexas e processamento de grandes massas de dados. Este guia apresenta o fluxo completo de preparação do ambiente, compilação, inicialização do serviço REST e execução das primeiras consultas.

Pré-requisitos de Ambiente

Certifique-se de que os seguintes componentes estejam installados antes de prosseguir:

Componente Versão Recomendada Observação
Java 8 ou 11 OpenJDK é suficiente
Maven 3.6 ou superior Necessário para compilar o projeto
Git 2.x Para obter o código-fonte
Sistema Operacional Linux/Unix Ambientes Windows podem apresentar incompatibilidades com o Hadoop

Instalação no Ubuntu/Debian

sudo apt update
sudo apt install -y openjdk-11-jdk maven git

# Validação
java -version
mvn -version
git --version

Instalação no RHEL/CentOS

sudo yum install -y java-11-openjdk-devel maven git

# Validação conjunta
java -version && mvn -version && git --version

Obtenção do Código e Compilação

Clone o repositório oficial e execute a compilação com o perfil rápido, que ignora testes mais pesados:

git clone --depth 1 https://github.com/gchq/Gaffer.git
cd Gaffer

mvn clean install -Pquick -DskipTests

Para compilar uma versão de snapshot com todos os módulos, utilize:

mvn clean install -am

Inicialização do Exemplo de Tráfego Rodoviário

O projeto inclui o exemplo road-traffic, que prepara um ambiente funcional com servidor Tomcat e dados de amostra:

chmod +x example/road-traffic/scripts/start.sh
./example/road-traffic/scripts/start.sh

Durante a execução, o script realiza o download das dependências Maven, configura o Tomcat, publica a API REST e carrega o conjunto de dados de exemplo.

Verificação da API

Após a inicialização, valide o estado do grafo com uma requisição simples:

curl -s http://localhost:8080/rest/graph/info | jq

Uma resposta válida deve conter metadados semelhantes a:

{
  "graphId": "road-traffic",
  "schema": {
    "types": [...],
    "edges": [...],
    "entities": [...]
  },
  "operations": [...]
}

Configuração dos Backends de Armazenamento

O Gaffer permite o uso de diferentes implementações de armazenamento. A escolha depende do cenário de uso:

Backend Caminho do Exemplo de Configuração Cenário de Uso
Accumulo store-implementation/accumulo-store/sample-files/store.properties.sample Produção e clusters de grande porte
MapStore store-implementation/map-store/src/main/resources/store.properties Desenvolvimento e testes em memória
Federated store-implementation/federated-store/src/main/resources/store.properties Consultas unificadas entre múltiplos grafos

Exemplo de Configuração do Accumulo

# Instância
accumulo.instance=meuGaffer
accumulo.zookeep.host=zookeeper1:2181,zookeeper2:2181
accumulo.user=admin
accumulo.password=senhaSegura

# Tabela e cache
gaffer.table=meu_grafo
cache.service.class=uk.gov.gchq.gaffer.cache.impl.HashMapCacheService

Consultas Básicas via REST

As operações são enviadas para o endpoint /rest/graph/operations/execute. Abaixo estão exepmlos representativos de interação com o grafo.

1. Listar IDs dos Grafos Disponíveis

curl -X POST http://localhost:8080/rest/graph/operations/execute \
  -H "Content-Type: application/json" \
  -d @payload_get_graph_ids.json

2. Inserir Elementos no Grafo

curl -X POST http://localhost:8080/rest/graph/operations/execute \
  -H "Content-Type: application/json" \
  -d @payload_add_elements.json

3. Consultar Dados de Uso de Estradas

curl -X POST http://localhost:8080/rest/graph/operations/execute \
  -H "Content-Type: application/json" \
  -d @payload_query_traffic.json

Os arquivos JSON de payload devem conter operações compatíveis com o esquema definido no exemplo. Estruturas típicas incluem AddElements para carga e GetElements para consulta.

Diagnóstico de Problemas Comuns

Sintoma Causa Provável Solução
Falha na compilação por versão do Java Java 12 ou superior em uso Instale o Java 8 ou 11 e configure como padrão
Download de dependências lento Latência com repositórios Maven Configure um mirror Maven regional em ~/.m2/settings.xml
Script de inicialização não executa Permissão negada Execute chmod +x example/road-traffic/scripts/start.sh
Erro de porta em uso Porta 8080 já ocupada Altere a porta do Tomcat ou encerre o processo concorrente
Testes do Hadoop falham Execução em ambiente Windows Utilize Linux ou desative testes relacionados ao Hadoop

Tags: Gaffer Apache Accumulo maven tomcat REST API

Publicado em 6-22 19:07