# Plataforma de BigData - Índice ###### tags: `bigdata` Esse documento contém os passos com os links de documentação necessários para fazer a implantação da plataforma de BigData. ## O que é a plataforma? A plataforma consiste em diversos elementos, abaixo uma lista reduzida com os principais componentes: * Postgres * Ambari - HDFS - Yarn - Zookeeper - Kafka - Oozie - Ranger - Atlas - Sqoop - Spark * Dremio * Superset * Kubernetes - Jupyter - Presto ## Implantação Toda implantação é feita utilizando containers do Docker, portanto os primeiros passos são para preparar o cluster para que consigamos iniciar os containers e o cluster do kubernetes. ### 1. Preparação do ambiente #### 1.1 Firewall O primeiro passo é desabilitar o firewall, se possível, desabilite apenas para a rede interna caso o seu ambiente não tenha nenhuma outra defesa contra ataques externos. #### 1.2 Docker Instalação e configuração do Docker. [CentOS - Docker](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/rkmIVJFJS) [Ubuntu - Docker] TODO #### 1.3 Kubernetes [CentOS - Kubernetes: preparar ambiente](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/HJ2S9-PZD) --- ### 2. Docker registry O docker registry é utilizado para armazenar as imagens customizadas que criamos para a plataforma. Abaixo está um arquivo de configuração genérico. Para mais informações sobre de configuração veja a [documentação oficial](https://docs.docker.com/registry/configuration). ```yaml= version: 0.1 log: fields: service: registry storage: cache: blobdescriptor: inmemory filesystem: rootdirectory: /data/registry http: addr: :5000 headers: X-Content-Type-Options: [nosniff] health: storagedriver: enabled: true interval: 10s threshold: 3 ``` Salve o arquivo de configuração e execute o comando abaixo a partir do mesmo diretório para iniciar o registry. ```bash= docker run --name registry \ -p 5000:5000 \ -v <diretorio-local-para-armazenar-os-dados>:/data \ -v $PWD/config.yaml:/etc/docker/registry/config.yml \ --restart always \ -dit registry:2.7.1 ``` No exemplo acima, utilizamos a versão `2.7.1` da imagem, acesse essa [página](https://registry.hub.docker.com/_/registry?tab=tags) para verificar se existe alguma versão mais nova. O comando abaixo pode ser executado para validar se o registry foi iniciado corretamente. ```bash= curl -o /dev/null -s -w "%{http_code}\n" http://localhost:5000/v2/_catalog 200 ``` Se imprimir o status 200 é porque está tudo certo. --- ### 3. Banco de dados Utilizamos o Postgres como banco de dados oficial para todas demandas da plataforma de BigData. Diversos componentes o utiliza, para mencionar alguns: ambari, hive, oozie, ranger, jupyter e superset. Abaixo está o comando utilizado para iniciar o Postgres no docker. ```bash= docker run --name postgres \ -p 5432:5432 \ -e PGDATA=/data/postgresql \ -e POSTGRES_PASSWORD=<sua-senha> \ --volume <dir-para-armazenar-os-dados>:/data \ --restart always \ -dit postgres:12.3 -c "max_connections=1000" ``` --- ### 4. Ambari O Ambari é iniciado em containers baseados no Ubuntu 18.04. #### 4.1 Docker imagem [Ambari - Docker Imagem](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/Bk_zZWKkS) #### 4.2 Usuário e banco de dados Vamos criar um usuário e um banco no postgres para que seja utilizado no setup do Ambari. O comando abaixo deve ser executado no servidor em que foi iniciado o Postgres. ```bash= docker exec -it postgres psql -U postgres postgres=> create role ambari with password 'ambari' ; CREATE ROLE postgres=> create database ambari ; CREATE DATABASE postgres=> alter role ambari with login ; ALTER ROLE postgres=> grant all privileges on database ambari to ambari ; GRANT ``` #### 4.3 Setup [Ambari - Servers and agents](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/Bk4GXZKJS) #### 4.4 Manutenção [Ambari - Manutenção](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/BJs6qE6pB) --- ### 5. Instalação dos componentes #### 5.1 HDFS, Yarn, Zookeeper e Kafka Acesse pelo navegador a interface do Ambari e instale os componentes. Comece selecionando apenas os itens básicos para facilitar a configuração. Abaixo uma lista inicial: - HDFS - Yarn - Zookeeper - Kafka - Sqoop - Spark - Hive Alguns outros módulos são selecionados de forma automática pelo próprio Ambari, como por exemplo: Ambari Metrics e Smartsense. #### 5.2 Habilitar Workflow Manager (Oozie) O Apache Oozie é responsável por definir workflows de processamento e executá-los de acordo com o agendamento realizado. Abaixo estão os passos necessários para habilitar a interface gráfica dele pelo Ambari. ![Manage Ambari](https://i.imgur.com/xyYP1Wi.png) ![Create view instance](https://i.imgur.com/YezVr44.png) ![Configure instance](https://i.imgur.com/pDhzFB7.png) A imagem abaixo mostra que você pode ir diretamente para o Oozie após habilitá-lo. ![Go to instance](https://i.imgur.com/65scL14.png) E nessa outra imagem, mostra um link mais rápido para entrar na interface do Oozie. ![Atalho para Oozie](https://i.imgur.com/3FqdQqc.png) #### 5.3 Dependências para o Sqoop no Oozie Siga [esses passos](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/rybnIW9ID) para configurar algumas dependências importantes para executar comandos do Sqoop no Oozie. --- ### 6. Active Directory e Kerberos #### 6.1 Integração [Ambari + Ldap/AD](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/BkjEWASvP) #### 6.2 Atlas [Atlas - Active Directory](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/SJGdVWvPD) #### 6.3 Ranger [Ranger - Active Directory](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/BJwsEMvDD) #### 6.4 Comandos básicos no Kerberos [Kerberos - Comandos básicos](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/Bk4OsOIcP) #### 6.5 Kerberos no Ambari [Ambari + Kerberos](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/SkIBl0rDP) --- ### 7. Kubernetes #### 7.1 Iniciar cluster [Kubernetes - Iniciar cluster](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/BJGUXmvbP) #### 7.2 Helm [Kubernetes - Helm](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/Hy7eB4aFD) #### 7.3 Storage: OpenEBS [Kubernetes - Storage: OpenEBS (v1)](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/HkOFr46tw) #### 7.4 Comandos básicos [Kubernetes - Comandos básicos](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/S1r-5Y89D) #### 7.5 Funcionamento geral [Kubernetes - Funcionamento geral](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/rJdrV61sD) --- ### 8. JupyterHub [JupyterHub no Kubernetes](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/H10ySpIWP) --- ### 9. Verificação do ambiente Nessa seção temos diversos comandos e procedimentos interessantes para verificar se tudo dentro da plataforma está funcionando corretamente. #### 9.1 HDFS, Yarn e Oozie O tutorial [Do Jupyter ao Oozie](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/SJ4gJR9Zw) é um ótimo ponto de partida para verificar os principais componentes da plataforma. #### 9.2 Sqoop no Oozie O tutorial [Importando dados: RDBMS -> HDFS](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/S1IYXlosE) é importante caso o ambiente tenha necessidade de importar dados de bancos de dados relacionais. #### 9.3 Hive Veja o tutorial [Testes básicos com Hive](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/HJ_V6a77w) para verificar se o Hive está funcionando. #### 9.4 Ambari Veja o documento [Ambari - Manutenção](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/BJs6qE6pB). #### 9.5 Kubernetes Veja o documento [Kubernetes - Funcionamento Geral](https://hackmd.io/@oAdhuQJ2T8iByJUEQ5jUuQ/B1U8-Zv-w).