Pesquisa de site

Como instalar e configurar o Hive com alta disponibilidade – Parte 7


Hive é um modelo de Data Warehouse no ecossistema Hadoop. Ele pode funcionar como uma ferramenta ETL sobre o Hadoop. Habilitar alta disponibilidade (HA) no Hive não é semelhante ao que fazemos em serviços mestre como Namenode e Resource Manager.

O failover automático não acontecerá no Hive (Hiveserver2). Se qualquer Hiveserver2 (HS2) falhar, a execução de tarefas nesse HS2 com falha falhará. Precisamos reenviar o trabalho para que ele possa ser executado em outro HiveServer2. Portanto, ativar o HA no HS2 nada mais é do que aumentar o número de componentes do HS2 no Cluster.

Neste artigo, veremos os passos para instalar e ativar a Alta Disponibilidade do Hive.

Requisitos

  • Melhores práticas para implantação do servidor Hadoop no CentOS/RHEL 7 – Parte 1
  • Configurando pré-requisitos do Hadoop e reforço de segurança – Parte 2
  • Como instalar e configurar o Cloudera Manager no CentOS/RHEL 7 – Parte 3
  • Como instalar o CDH e configurar posicionamentos de serviço no CentOS/RHEL 7 – Parte 4
  • Como configurar alta disponibilidade para Namenode – Parte 5
  • Como configurar alta disponibilidade para Resource Manager – Parte 6

Vamos começar…

Instalação e configuração do Hive

1. Faça login no Cloudera Manager no URL abaixo e navegue até Cloudera Manager –> Adicionar serviço .

http://13.233.129.39:7180/cmf/home

2. Selecione o serviço ‘Hive‘.

3. Atribua os serviços aos nós.

  • Gateway – É o serviço do cliente onde o usuário pode acessar o Hive. Normalmente, este serviço será colocado em nós Edge dedicados aos usuários.
  • Hive Metastore – É um repositório central para armazenar metadados do Hive.
  • WebHCat Server – É uma API Web para HCatalog e outros serviços Hadoop.
  • Hiveserver2 – É uma interface de clientes para execução de consultas no Hive.

Uma vez selecionados os servidores, clique em ‘Continuar‘ para prosseguir.

4. O Hive Metastore precisa de um banco de dados subjacente para armazenar metadados. Aqui estamos usando o banco de dados padrão PostgreSQL que está embutido no CDH.

Os detalhes do banco de dados mencionados abaixo serão inseridos automaticamente, ‘Test Connection’ será ignorado, pois o banco de dados mencionado será criado instantaneamente. Em tempo real, precisamos criar o Banco de Dados no banco de dados externo e testar a conexão para prosseguir. Uma vez feito isso, clique em ‘Continuar’.

5. Configure o diretório Hive Warehouse, /user/hive/warehouse é o caminho do diretório padrão para armazenar tabelas Hive. Clique em ‘Continuar’.

6. A instalação do Hive é iniciada.

7. Após a conclusão da instalação, você poderá obter o status ‘Concluído’. Clique em ‘Continuar’ para prosseguir.

8. A instalação e configuração do Hive foram concluídas com sucesso. Clique em ‘Concluir‘ para concluir o procedimento de instalação.

9. Você pode ver o serviço Hive adicionado no Cluster através do Cloudera Manager Dashboard.

10. Você pode visualizar o Hiveserver2 em Instâncias do Hive. Adicionamos Hiveserver2 em master1.

Cloudera Manager –> Hive –> Instâncias –> Hiveserver2.

Habilitando alta disponibilidade no Hive

11. Em seguida, adicione a função Hive acessando Cloudera Manager –> Hive –> Ações –> Adicione instâncias de função.

12. Selecione os servidores onde deseja colocar Hiveserver2 extra. Você pode adicionar mais de dois, não há limite. Aqui estamos adicionando um Hiveserver2 extra no master2.

13. Uma vez selecionado o servidor, clique em ‘Continuar’.

14. Um Hiverserver2 será adicionado às Instâncias Hive, você precisa iniciá-lo acessando o Cloudera Manager –> Hive –> Instâncias –> (Selecionar Hiveserver2 adicionado recentemente) –> Ação para selecionados –> < forte>Iniciar.

15. Assim que o Hiveserver2 for iniciado no master2, você receberá o status ‘Concluído’. Clique em Fechar.

16. Você pode ver que ambos os Hiveserver2s estão em execução.

Verificando a disponibilidade do Hive

Podemos conectar o Hiveserver2 através do Beeline, que é um thin client e linha de comando. Ele usa o driver JDBC para estabelecer a conexão.

17. Faça login no servidor onde o Hive Gateway está sendo executado.

[tecmint@master1 ~]$ beeline

18. Insira a string de conexão JDBC para conectar o Hiveserver2. Neste contexto, a string que estamos mencionando é o Hiverserver2 (master2) com seu número de porta padrão 10000. Esta string de conexão se conectará apenas ao Hiveserver2 que está sendo executado no master2.

beeline> !connect "jdbc:hive2://master1.linux-console.net:10000"

19. Execute um exemplo de consulta.

0: jdbc:hive2://master1.linux-console.net:10000> show databases;

Este é o banco de dados padrão que vem embutido.

20. Use o comando abaixo para encerrar a sessão do Hive.

0: jdbc:hive2://master1.linux-console.net:10000> !quit

21. Você pode usar o mesmo método para conectar o Hiveserver2 em execução no master2.

beeline> !connect "jdbc:hive2://master2.linux-console.net:10000"

23. Podemos conectar o Hiveserver2 no modo Zookeeper Discovery. Neste método, não precisamos mencionar o Hiveserver2 na string de conexão, em vez disso, usamos o Zookeeper para descobrir o Hiveserver2 disponível.

Aqui podemos usar um balanceador de carga de terceiros para equilibrar a carga entre os Hiverserver2 disponíveis. A configuração abaixo é necessária para ativar o Zookeeper Discovery Mode acessando Cloudera Manager –> Hive –> Configuração.

24. Em seguida, pesquise a propriedade “HiveServer2 Advanced Configuration Snippet ” e clique no símbolo + para adicionar a propriedade abaixo.

Name : hive.server2.support.dynamic.service.discovery
Value : true
Description : <any description>

25. Depois de entrar na propriedade, clique em ‘Salvar alterações’.

26. Conforme fizemos alterações na configuração, é necessário reiniciar os serviços afetados clicando no símbolo laranja para reiniciar os serviços.

27. Clique em ‘Reiniciar obsoletos‘serviços.

28. Existem duas opções disponíveis. Se o cluster estiver em produção ativa, precisamos preferir a reinicialização contínua para minimizar a interrupção. Como estamos instalando recentemente, podemos escolher a segunda opção ‘Reimplementar configuração do cliente’ e clicar em ‘Reiniciar agora’.

29. Assim que a reinicialização for concluída com sucesso, você receberá o status ‘Concluído’. Clique em ‘Concluir’ para concluir o processo.

30. Agora conectaremos o Hiveserver2 usando o modo Zookeeper Discovery. Na conexão JDBC, a string que precisamos para usar os servidores Zookeeper com seu número de porta 2081. Colete os servidores Zookeeper acessando Cloudera Manager –> Zookeeper –> Instâncias –> (Anote os nomes dos servidores).

Estes são os três servidores que possuem Zookeeper, 2181 é o número da porta.

master1.linux-console.net:2181
master2.linux-console.net:2181
worker1.linux-console.net:2181

31. Agora entre em beeline.

[tecmint@master1 ~]$ beeline

32. Insira a string de conexão JDBC conforme mencionado abaixo. Temos que mencionar o Modo de descoberta de serviço e o Namespace Zookeeper. ‘hiveserver2’ é o namespace padrão do Hiveserver2.

beeline>!connect "jdbc:hive2://master1.linux-console.net:2181,master2.linux-console.net:2181,worker1.linux-console.net:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

33. Agora a sessão está conectada ao Hiveserver2 em execução no master1. Execute uma consulta de amostra para validar. Use o comando abaixo para criar um banco de dados.

0: jdbc:hive2://master1.linux-console.net:2181,mast> create database tecmint;

34. Use o comando abaixo para listar o banco de dados.

0: jdbc:hive2://master1.linux-console.net:2181,mast> show databases;

35. Agora validaremos a alta disponibilidade no modo Zookeeper Discovery. Vá para o Cloudera Manager e pare o Hiveserver2 no master1 que testamos acima.

Cloudera Manager –> Hive –> Instâncias –> (selecione Hiveserver2 em master1 ) –> Ação para selecionado –> Parar.

36. Clique em ‘Parar’. Uma vez interrompido, você receberá o status ‘Concluído’. Verifique o Hiveserver2 em master1 navegando em Hive –> Instâncias.

37. Entre no mais curto e conecte o Hiveserver2 usando a mesma string de conexão JDBC com o Zookeeper Discovery Modo como fizemos nas etapas acima.

[tecmint@master1 ~]$ beeline

beeline>!connect "jdbc:hive2://master1.linux-console.net:2181,master2.linux-console.net:2181,worker1.linux-console.net:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

Agora você estará conectado ao Hiveserver2 rodando no master2.

38. Valide com um exemplo de consulta.

0: jdbc:hive2://master1.linux-console.net:2181,mast> show databases;

Conclusão

Neste artigo, percorremos as etapas detalhadas para ter o modelo Hive Data Warehouse em nosso Cluster com Alta disponibilidade. Em um ambiente de produção em tempo real, mais de três Hiveserver2 serão colocados com o Modo de descoberta Zookeeper ativado.

Aqui, todos os Hiveserver2 estão registrados no Zookeeper sob um Namespace comum. Zookeeper dinamicamente descobre o Hiveserver2 disponível e estabelece a sessão do Hive.