Falando um pouco da instalação do Hadoop, nós temos alguns modos de execução, dentre eles, o local ou pseudodistribuído, que são ambientes onde nós não colocamos em produção, utilizamos apenas para estudo ou teste de alguma coisa. Nós temos o ambiente produtivo, que geralmente é um cluster, e esse cluster pode ser local ou você pode simplesmente instalar na nuvem também, é permitido. Mas vamos trabalhar no sistema local, on-premise, e nós também temos a opção de trabalhar com o Hadoop em modo Docker, e aí nós temos um gerenciador de Docker, um Kubernetes, por exemplo, que faz toda a parte de simulação de máquina, de gerenciamento de máquinas em ambiente Docker. Falando um pouco mais do cluster, o cluster é o nosso ambiente produtivo. Então, nós temos várias máquinas, duas, três, dez, vinte, mil máquinas. Existem clusters de dez mil máquinas. Então, quando eu falo de dez mil máquinas, eu estou falando de máquinas físicas, máquinas onde eu tenho um hardware e vários discos dentro dessa máquina, que compõe os nossos famosos DataNodes. A arquitetura do Hadoop, ou, do HDFS, mais especificamente, é uma arquitetura master/worker, onde eu tenho um controlador e nós que obedecem a esse controlador. No caso do HDFS, o nó master é o NameNode. O NameNode simplesmente regula acesso e sabe aonde os registros estão em cada DataNode. Ele tem um catálogo de metadados que permite identificar todos os blocos armazenados em todos os DataNodes. Falando um pouco dos DataNodes, eles realmente são as máquinas físicas. Então, nós temos as máquinas locais, com os discos locais, e o NameNode pode ser simplesmente uma VM porque ele não precisa dessa configuração, os muitos discos. Falando um pouco da instalação do Hadoop, nós temos alguns modos de execução. O modo mais simples é o modo local, ou, pseudo distribuído, onde eu tenho o Hadoop instalado em um único servidor. Esse tipo de execução, local e pseudo distribuído, não é utilizada em ambiente produtivo. Ela é simplesmente instalada numa máquina para teste ou estudo. Em ambiente produtivo, nós temos o Hadoop instalado em cluster. Então, nós temos vários nós ligados por rede que compartilham recursos. Nós temos uma rede complexa, bem grande de computadores, com cinco, dez, vinte, mil, dez mil computadores ligados em rede que compartilham recursos, memória, disco e CPU. E também temos a opção de instalar com Docker. Que aí, já é uma outra tecnologia, que funciona basicamente igual a um cluster, porém, ele cria um cluster lógico e não cria um cluster local, com máquinas físicas. Então, nós temos um gerenciador de containers, um Kubernetes, por exemplo, que faz todo esse gerenciamento. Falando um pouco mais do Hadoop produção, que tem um cluster Hadoop, nós falamos de um cluster Hadoop, temos aí uma arquitetura master/worker tanto para o HDFS quanto para o YARN. O HDFS tem os dois componentes principais que controlam e armazenam os dados. Na arquitetura master/worker do HDFS, quem faz o papel do master é o NameNode. O NameNode regula todo o acesso que você faz no HDFS e ele tem um catálogo de metadados de todos os dados armazenados nos DataNodes. Então, o NameNode sabe exatamente aonde os dados estão. O DataNode, por sua vez, simplesmente armazena o dado e recebe requisições de acesso, ou criação ou exclusão de dados, vindas do NameNode. Na arquitetura do YARN, quem faz o papel de master é o Resourcing Manager. O Resourcing Manager tem o controle, ou, ele visualiza todos os recursos do cluster. Se eu tiver dez máquinas com dez CPUs e dez gigas de memória, o YARN simplesmente vai enxergar cem gigas de memória e cem cores onde ele pode processar os dados dos jobs que nós estamos executando. Então, o YARN simplesmente lança os jobs que serão executados no cluster e o Node Manager é onde esse job, especificamente, vai ser executado em pequenos pedacinhos dentro do nosso cluster, em cima de cada DataNode. Quando nós falamos de instalação e configuração do Hadoop, eu posso simplesmente entrar no site do Hadoop, no apachehadoop.org, e fazer download do Hadoop. E aí eu tenho toda a parte de configuração, de como eu instalo, se eu instalo de forma pseudo ou local ou se instalo dentro de um cluster, ou também se você tiver muitas máquinas executando o Hadoop, se tiver uns nós, um cluster com dez, vinte, trinta mil nós, fica muito complicado você fazer a instalação manual. E, para isso, existem ferramentas onde podemos automatizar essa instalação e deixá-la de forma mais user framelly, consegue utilizar muito tempo de instalação e configuração do nosso cluster. Dentro do ecossistema Hadoop, quem faz esse papel de automatizar a instalação e configuração, bem como o monitoramento, é o OneBody. O OneBody é um software também open source, que está dentro da família Hadoop, que faz esse trabalho de instalar de forma automática, e você conseguir gerenciar todo o cluster a partir de uma interface web. E aí tudo fica mais fácil. Aqui, eu tenho uma instalação utilizando OneBody, onde está numa máquina local, eu não tenho cluster. Então, por isso, eu tenho um DataNode, eu consigo visualizar meu DataNode aqui, e estamos rodando numa Sandbox. Então, eu tenho uma única máquina onde eu tenho a instalação do Hadoop, eu tenho um pseudo distribuído. Se eu fosse executar um cluster, eu teria aqui várias máquinas trabalhando de forma conjunta a compor o meu cluster Hadoop. E no OneBody aqui eu tenho a instalação no HDFS. Então, eu tenho aqui o papel do NameNode, do DataNode e também outros componentes que tem a sua participação dentro desse componente. Eu tenho algumas métricas de quanto de disco eu estou utilizando, quanto de memória. O Hadoop tem dois arquivos principais de configuração, que é o hdfs-site.xml e o core-site.xml. Esses arquivos compõem todas as configurações que o Hadoop vai utilizar em sua execução. Eles são compostos de parâmetros, onde configuramos, por exemplo, tamanho de memória, tamanho de bloco de arquivo, qual vai ser o meu fator de replicação. E todas essas configurações também podem ser alteradas na interface gráfica do OneBody. Aqui, por exemplo, eu posso mudar questões de permissão, questões de memória. Eu simplesmente mudo a configuração aqui e salvo. Na próxima execução, a hora que eu reiniciar o meu Hadoop, reiniciar o meu HDFS, ele vai respeitar a configuração que eu colocar, os parâmetros especificados. Eu também tenho a instalação do YARN dentro do OneBody, onde eu tenho o papel do master pelo Resource Manager. E eu também tenho o papel do Node Manager, que é o nosso worker. Então, eu tenho aqui a configuração tanto de um quanto de outro. E, aqui, eu tenho alguns KPIs voltados a métricas de execução, quantos jobs estão executando, qual o tamanho da minha fila, qual o tanto de memória que eu tenho para executar. E eu também posso mudar configurações na instalação do meu YARN do mesmo modo que eu faço com o HDFS. Então, eu consigo mexer em memória, o tanto de CPU alocada para ele, se eu vou usar GPU ou não. Enfim, tenho várias configurações que eu posso parametrizar ou customizar de acordo com a minha necessidade. O OneBody também possui a instalação do MapReduce, porém, diferentemente do HDFS e do YARN, eu não tenho aí tantas configurações possíveis já que ele tem um papel mais simples. Ele simplesmente vai processar o nosso dado utilizando o HDFS e a estrutura de memória e CPU do YARN. Então, nós temos aí algumas configurações que também são possíveis, é lógico, configurações defaults, porém, eu tenho mais configurações dentro do HDFS e dentro do YARN. Dentro do YARN, eu também consigo aumentar o meu cluster, eu consigo adicionar mais nós. Eu não preciso, por exemplo, já criar de imediato um cluster com mil nós. Eu posso começar pequeno com dez, vinte máquinas, por exemplo, e ir crescendo de acordo com a minha demanda. Com o passar do tempo, com mais dados ou mais processamentos, eu consigo adicionar mais máquinas e ter mais poder de armazenamento e processamento de memória e CPU. Então, nós temos a opção de ter uma escalabilidade horizontal com o Hadoop, e o OneBody é quem faz essa gerência de adicionar ou remover nós dentro de um cluster. Você pode fazer isso de forma manual, lógico, porém, com o YARN é muito mais simples. Eu simplesmente venho em Hosts, e eu tenho todas as máquinas disponíveis aqui dentro do meu cluster. Caso eu queira adicionar mais máquinas, eu posso vir em Actions aqui e adicionar novos hosts, onde eu coloco o nome do meu host, como por exemplo, "maquina1", e tenho mais algumas configurações. Então, todas as máquinas que executam Hadoop são baseadas em Linux, então eu tenho uma chave SSH que eu tenho que compartilhar e tudo mais, tenho usuário e senha das máquinas, a porta que eu vou utilizar, e, depois, eu simplesmente escolho quais serviços que eu quero instalar na naquele host. Eu quero instalar o HDFS? Eu quero instalar o YARN? Eu quero instalar o Spark? Então, nós temos aí a possibilidade de customizar a instalação de um host e adicionar novas máquinas de forma muito fácil, muito dinâmica, com o OneBody. Quando eu falo de gerenciamento de recursos dentro do OneBody, eu posso, por exemplo, como eu já mostrei para vocês, alterar as configurações, e eu simplesmente posso pegar um serviço específico, nesse caso, o HDFS, e iniciar, parar, reiniciar esse serviço. E se eu tiver um cluster com dez, vinte, trinta máquinas, eu consigo fazer isso de forma automática para todas as máquinas de uma vez, ou simplesmente de determinado host. Eu posso chegar na máquina dez, por exemplo, e quero reiniciar somente o HDFS naquela máquina. Eu também consigo fazer isso. Então, nós temos aí uma forma muito fácil de controle de gerência do nosso cluster com o OneBody. O OneBody otimiza muito o trabalho de quem for administrar um cluster, seja para configurar serviços, adicionar novos hosts, parar, reiniciar aplicações. Temos aí uma ferramenta muito bacana onde nós podemos ter ganhos significativos de tempo, de gerência, e facilitar a nossa vida na parte de configuração e manutenção de todo o cluster. Dentro do HDFS, nós temos ainda uma interface web conhecida como Hadoop User Interface, onde eu tenho todas as configurações do meu cluster. Então, dentro do OneBody eu tenho o NameNode UI. Eu tenho aqui, por exemplo, quando ele foi iniciado, qual é a versão do meu Hadoop, qual é a compilação, o ID do meu cluster, o nome do meu cluster. Eu tenho a opção de visualizar se está em modo seguro ou não, quanto de capacidade de armazenamento eu tenho, quanto eu já estou utilizando, quantos arquivos, por exemplo, existem lá dentro do meu HDFS. Aqui, ele tem 2907 arquivos e diretórios. Eu tenho um total de blocos armazenados dentro do meu HDFS, e, nesse caso, eu tenho 1840 blocos, o total de objeto, quanto de memória ele está utilizando. Então, visualizamos todas as configurações que nós temos dentro do Hadoop, inclusive, os DataNodes. Nese caso, eu tenho um DataNode só, então vai aparecer uma máquina só. Porém, se eu tivesse cem máquinas, apareceria cem máquinas aqui, e eu conseguiria ver uma lista com as cem máquinas separadamente. E aí eu tenho qual a capacidade de armazenamento, quantos blocos existem em cada máquina, qual a porcentagem de utilização que eu tenho dentro dela. Eu posso saber, por exemplo, se ele está em execução, quanto tempo ele está em execução. Eu tenho aí um overview de todo o meu ambiente com o Hadoop User Interface. Falando um pouco de gerenciamento e acesso às aplicações de forma web, o YARN também possui uma interface gráfica que é o Research Manager User Interface, onde nós temos uma visão de um todo, de todas as aplicações que estão sendo executadas no nosso cluster. Então, eu tenho aqui a capacidade total do meu cluster, em memória, por exemplo. O meu, como é uma máquina local, muito reduzida, eu tenho aqui quatro gigas de memória e quatro cores onde eu posso executar os meus jobs. Quando nós temos um ambiente de produção, ele é muito maior que isso. Nós temos terabytes de memória, temos centenas, milhares de cores, de frações de CPU, onde eu posso executar os meus jobs. E aí eu tenho quantos por centos ele está sendo utilizado. Nesse caso aqui, ele está 100% disponível. Então, eu não estou executando nenhuma aplicação. Então, nós temos uma opção de visualização de todas as aplicações rodando em cima do YARN. Eu consigo, por exemplo, entrar no histórico de execução de cada aplicação, eu consigo ver o que está sendo executado ou o que foi finalizado. Por exemplo: esses jobs aqui são os jobs do Hive e eles já foram executados, está com o status "Finished". Se ele estivesse em execução, eu teria o status como "Running". Então, eu consigo identificar cada um deles, entrar em cada um deles e ver quanto tempo está sendo executado, ver log, enfim, ver quem é o usuário responsável por aquele processo. Então, eu consigo administrar minha fila de recursos de forma muito eficiente. E, para cada job executado, eu tenho, por exemplo, quais recursos que ele está usando daquele cluster. E isso é bacana, porque se você tiver, por exemplo, um job que está consumindo muito recurso e atrapalhando o andamento das suas outras tarefas, você pode simplesmente matar esse job de forma muito fácil, muito dinâmica, e liberar recurso para as outras aplicações. Então, as ferramentas web que nós temos dentro de todo o ecossistema nos permitem uma gerência muito fácil não só para a configuração, mas para a operação do dia a dia, seja ela com o Hadoop UI ou o NameNode User Interface, onde temos o controle de todos os jobs, de todas as execuções existentes dentro do YARN. Com isso, nós finalizamos toda a parte de gerência do Hadoop, tanto com o HDFS ou com o YARN. Então, nós vimos aí que o OneBody é um componente muito importante dentro do cluster porque ele automatiza a instalação e configuração de todo o nosso ambiente. Não só para o HDFS, YARN ou MapReduce, mas para todo software, todo framework que compõe o nosso cluster Hadoop.