Todos os produtos
Search
Central de documentação

E-MapReduce:Balanceamento de carga do HiveServer2

Última atualização: Jun 27, 2026

Quando um cluster E-MapReduce (EMR) executa vários serviços HiveServer2, é possível utilizar o ZooKeeper e o Server Load Balancer (SLB) para implementar o balanceamento de carga e distribuir a demanda entre múltiplos nós. Este tópico descreve como configurar e utilizar o balanceamento de carga do HiveServer2 em clusters padrão e com Kerberos ativado.

Limitações

Este tópico se aplica apenas a clusters com a opção High Service Availability ativada.

É necessário criar primeiro um cluster de alta disponibilidade. Para mais informações, consulte Criar um cluster. O recurso High Service Availability deve estar habilitado. Após a ativação, o E-MapReduce distribui os nós mestres por hardwares subjacentes diferentes para reduzir o risco de falhas.

Clusters padrão do E-MapReduce

Os métodos a seguir aplicam-se a clusters nos quais a Kerberos Authentication está desativada.

Balanceamento de carga via ZooKeeper

O ZooKeeper vem instalado por padrão em clusters de alta disponibilidade. Utilize o método abaixo para permitir que o ZooKeeper selecione uma instância do HiveServer2 para sua conexão, garantindo assim o balanceamento de carga.

  1. Conecte-se ao cluster via SSH. Para mais informações, consulte Fazer login em um cluster.

  2. Execute o comando a seguir. O ZooKeeper selecionará uma instância disponível do HiveServer2 para a conexão.

    beeline -u 'jdbc:hive2://master-1-1:2181,master-1-2:2181,master-1-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2'
    Nota

    No comando, master-1-1:2181,master-1-2:2181,master-1-3:2181 representa a string de conexão do ZooKeeper.

    Para permitir que o Hue se conecte à instância do HiveServer2 com balanceamento de carga, adicione os três parâmetros personalizados abaixo na aba hue da configuração do Hue.

    Parâmetro

    Descrição

    zookeeper.clusters.default.hostports

    String de conexão do ZooKeeper. Substitua o exemplo pelo seu valor real. Exemplo: master-1-1:2181,master-1-2:2181,master-1-3:2181.

    beeswax.hive_discovery_hs2

    Defina o valor como true.

    beeswax.hive_discovery_hiveserver2_znode

    Defina o valor como /hiveserver2.

Balanceamento de carga via SLB

  1. Crie uma instância do Server Load Balancer (SLB). Para mais informações, consulte Criar e gerenciar uma instância CLB.

  2. Adicione as instâncias ECS que executam o serviço HiveServer2 ao default server group. Configure o peso de cada instância ECS conforme necessário.

    Para mais informações, consulte Gerenciar um grupo de servidores padrão.

  3. Configure um listener TCP. É possível personalizar a porta de frontend. Defina o Backend Protocol/Port como TCP:10000.

    Escolha um algoritmo de agendamento de acordo com suas necessidades. Para mais informações, consulte Adicionar um listener TCP.

  4. Conecte-se ao HiveServer2.

    1. Acesse o cluster via SSH. Para mais detalhes, veja Fazer login em um cluster.

    2. Execute o comando abaixo para se conectar aos serviços HiveServer2 por meio do balanceador de carga.

      beeline -u 'jdbc:hive2://<slb_ip_or_host>:<slb_port>'

      Substitua os parâmetros a seguir pelos seus valores reais:

      1. <slb_ip_or_host>: Endereço IP da instância SLB ou seu hostname vinculado.

      2. <slb_port>: Porta do listener de frontend da instância SLB.

    Para configurar o Hue de modo que ele se comunique com o HiveServer2 através deste balanceador de carga, modifique os parâmetros abaixo na aba hue da configuração do Hue.

    Parâmetro

    Descrição

    hive_server2_host

    Endereço IP da instância SLB ou seu hostname vinculado.

    hive_server2_port

    Porta do listener de frontend da instância SLB.

Clusters E-MapReduce com Kerberos ativado

As instruções abaixo destinam-se a clusters com a Kerberos Authentication habilitada.

Balanceamento de carga via ZooKeeper

  1. Execute o comando kinit para autenticar via Kerberos e obter um ticket-granting ticket. Para mais informações, consulte Usar autenticação Kerberos.

  2. Estabeleça a conexão com o HiveServer2.

    1. Conecte-se ao cluster via SSH. Para mais informações, consulte Fazer login em um cluster.

    2. Execute o seguinte comando. O ZooKeeper escolherá uma instância disponível do HiveServer2 para a conexão.

      beeline -u 'jdbc:hive2://master-1-1:2181,master-1-2:2181,master-1-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2'
      Nota

      Neste comando, master-1-1:2181,master-1-2:2181,master-1-3:2181 corresponde à string de conexão do ZooKeeper.

      O Hue não oferece suporte à conexão com um HiveServer2 balanceado via ZooKeeper em clusters E-MapReduce com Kerberos ativado. Portanto, utilize o método SLB para conexões originadas do Hue.

Balanceamento de carga via SLB

Crie e configure a instância SLB conforme descrito na seção Clusters padrão do E-MapReduce. Em clusters com Kerberos ativado, também é necessário configurar o principal Kerberos usado pelo HiveServer2 para garantir uma conexão bem-sucedida.

Este exemplo considera que o endereço IP do SLB é 121,40.. e a porta do listener de frontend é 10000. Substitua esses valores pelos seus dados reais.

  1. Execute o comando kinit para realizar a autenticação Kerberos e obter um ticket-granting ticket. Para mais detalhes, veja Usar autenticação Kerberos.

  2. Crie um principal do Hive para o endereço 121,40.. e exporte o keytab.

    1. Faça login no nó master-1-1 do cluster. Para mais informações, consulte Fazer login em um cluster.

    2. Execute o comando a seguir para acessar a ferramenta de administração do Kerberos:

      kadmin.local
    3. Execute os comandos abaixo para criar o principal e exportá-lo para /tmp/slb.keytab:

      addprinc -randkey hive/121.40..
      xst -k /tmp/slb.keytab hive/121.40.**.**
      exit

      Caso seu cluster Kerberos do E-MapReduce esteja integrado a uma instância externa do MIT Kerberos, use kadmin.local ou kadmin para conectar-se ao KDC e executar os comandos addprinc e xst.

      Importante

      Exportar um keytab Kerberos várias vezes pode invalidar arquivos keytab anteriores. Certifique-se de que o arquivo slb.keytab contenha apenas o principal exportado mais recentemente. Se precisar exportar o principal novamente, exclua primeiro o arquivo keytab gerado anteriormente.

  3. Transfira o arquivo slb.keytab para todos os nós que executam o serviço HiveServer2. Em seguida, em cada um desses nós, utilize a ferramenta ktutil para mesclar o conteúdo de slb.keytab no arquivo /etc/taihao-apps/hive-conf/keytab/hive.keytab executando os seguintes comandos:

    ktutil
    rkt /tmp/slb.keytab
    wkt /etc/taihao-apps/hive-conf/keytab/hive.keytab
    quit
  4. Execute o comando abaixo para visualizar o conteúdo do arquivo hive.keytab:

    klist -kt /etc/taihao-apps/hive-conf/keytab/hive.keytab
    [root@master-1-1(172.16.xxx) ~]# klist -kt /etc/taihao-apps/hive-conf/keytab/hive.keytab
    Keytab name: FILE:/etc/taihao-apps/hive-conf/keytab/hive.keytab
    KVNO Timestamp              Principal
    ---- ------------------- ------------------------------------------------------
       2 10/30/2024 14:12:05 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:12:05 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:12:06 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:12:06 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:12:06 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:12:06 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E77xxx.COM
  5. Modifique a configuração do Hive para o cluster.

    No console EMR, acesse a aba Configure do serviço Hive. Pesquise o parâmetro hive.server2.authentication.kerberos.principal e altere seu valor para hive/121.40..@EMR...COM, que corresponde ao principal criado na etapa anterior. Em seguida, salve e aplique a configuração.

  6. Reinicie o serviço HiveServer2.

    1. No console EMR, vá até a aba Status do serviço Hive. Na linha referente ao HiveServer2, clique em Restart na coluna Actions.

    2. Insira um motivo para a execução e clique em OK.

    3. Na caixa de diálogo Confirm, clique em OK.

  7. No nó master-1-1, execute o comando a seguir para conectar-se ao HiveServer2:

    beeline -u 'jdbc:hive2://121.40.**.**:10000/default;principal=hive/121.40.**.**@EMR.**.COM'