Alguns dos componentes de código aberto padrão incluídos nos clusters do Google Dataproc, como Apache Hadoop e Apache Spark, fornecem interfaces da Web. Elas podem ser usadas para gerenciar e monitorar diferentes recursos e instalações do cluster, como o gerenciador de recursos YARN, o Sistema de arquivos distribuídos Hadoop (HDFS, na sigla em inglês), o MapReduce e o Spark. O Gateway de componentes fornece acesso seguro a endpoints da Web para componentes padrão e opcionais do Dataproc.
Os clusters criados com versões de imagem do Dataproc com suporte podem ativar o acesso a interfaces da Web de componentes sem depender de túneis SSH ou de modificação de regras de firewall para permitir o tráfego de entrada.
Considerações
- As interfaces de componentes na Web podem ser acessadas por usuários com permissão do IAM dataproc.clusters.use. Consulte Papéis do Dataproc.
- O Gateway de componentes pode ser usado para acessar APIs REST, como o Apache Hadoop YARN e o Apache Livy (ambos em inglês), além de servidores de histórico.
- Quando o Gateway de componentes está ativado, o Dataproc adiciona os seguintes
serviços ao primeiro nó mestre do cluster:
- Apache Knox. O certificado SSL padrão do Knox Gateway é válido por 13 meses a partir da data de criação do cluster. Se ele expirar, todos os URLs da interface da Web do gateway de componentes ficarão inativos. Para conseguir um novo certificado, consulte Como regenerar o certificado SSL do gateway de componentes.
- Inverting Proxy (em inglês)
- O Gateway de componentes não permite acesso direto a interfaces
node:port
, mas faz proxy de um subconjunto específico de serviços automaticamente. Se você quer acessar serviços em nós (node:port
), use um proxy SSH SOCKS.
Criar um cluster com o Gateway de componentes
Console
O gateway de componentes do Dataproc é ativado por padrão quando você cria um cluster usando o console do Google Cloud. Para desativar essa configuração, desmarque a caixa de seleção Ativar gateway de componentes na seção Componentes do painel Configurar cluster na página Criar um cluster do Dataproc no Compute Engine do Dataproc.
Comando gcloud
Execute o comando da CLI gcloud gcloud dataproc clusters create localmente em uma janela de terminal ou no Cloud Shell.
gcloud dataproc clusters create cluster-name \ --enable-component-gateway \ --region=region \ other args ...
API REST
Defina a propriedade EndpointConfig.enableHttpPortAccess como true
como parte de uma solicitação clusters.create.
Usar URLs do gateway de componentes para acessar interfaces da Web
Quando o Gateway de componentes está ativado em um cluster, é possível se conectar a interfaces da Web do componente em execução no primeiro nó mestre do cluster clicando nos links fornecidos no console do Google Cloud. O Gateway de componentes também define endpointConfig.httpPorts com um mapa de nomes de portas para URLs. Como alternativa ao uso do console, você pode usar a ferramenta de linha de comando gcloud
ou a API REST do Dataproc para visualizar essas informações de mapeamento e copiar e colar o URL no navegador para se conectar à IU do componente.
Console
Acesse o formulário Clusters do Dataproc no console do Google Cloud e selecione o cluster para abrir o formulário Detalhes do cluster. Clique na guia Interfaces da Web para exibir uma lista de links do Gateway de componentes para as interfaces da Web dos componentes padrão e opcionais instalados no cluster. Clique em um link para abrir a interface da Web em execução no nó principal do cluster em seu navegador local.
Comando gcloud
Execute o comando gcloud dataproc clusters describe da CLI gcloud localmente em uma janela de terminal ou no Cloud Shell.
gcloud dataproc clusters describe cluster-name \ --region=region
Exemplo de saída
... config: endpointConfig: enableHttpPortAccess: true httpPorts: HDFS NameNode:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/hdfs/ MapReduce Job History:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/jobhistory/ Spark HistoryServer:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/sparkhistory/ YARN ResourceManager:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/yarn/ YARN Application Timeline:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/apphistory/ ...
API REST
Chame clusters.get para receber o mapa endpointConfig.httpPorts de nomes de portas para URLs.Como usar o Gateway de componentes com o VPC-SC
O Gateway de componentes é compatível com o VPC Service Controls.
Para a aplicação do perímetro de serviço, as solicitações a interfaces por meio do Gateway de componentes são tratadas como parte da superfície de API do Dataproc, e qualquer política de acesso que controle permissões para dataproc.googleapis.com
também controlará o acesso às interfaces de usuário do Gateway de componentes.
O gateway de componentes também oferece suporte a configurações de VPC-SC que dependem de
conexão privada do Google
para clusters do Dataproc sem endereços IP externo. No entanto, é necessário configurar manualmente
sua rede para permitir o acesso da VM mestre do Dataproc a *.dataproc.cloud.google.com
pelo intervalo de IP virtual restrito do Google 199.36.153.4/30
fazendo o seguinte:
- Siga as instruções para configurar a conectividade privada do Google para todas as APIs do Google.
- Configure o DNS com o Cloud DNS ou configure o DNS localmente no nó mestre do Dataproc para permitir o acesso a
*.dataproc.cloud.google.com
.
Configurar DNS com o Cloud DNS
Crie uma zona do Cloud DNS que mapeie o tráfego destinado a *.dataproc.cloud.google.com
ao intervalo de IP virtual restrito de API do Google.
Crie uma zona privada gerenciada para sua rede VPC.
gcloud dns managed-zones create ZONE_NAME \ --visibility=private \ --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \ --description=DESCRIPTION \ --dns-name=dataproc.cloud.google.com \ --project=PROJECT_ID
ZONE_NAME é um nome para a zona que você está criando. Por exemplo,
vpc
. Esse nome será utilizado em todas as etapas a seguir.PROJECT_ID é o código do projeto que hospeda sua rede VPC.
NETWORK_NAME é o nome da sua rede VPC.
DESCRIPTION é uma descrição opcional, legível por humanos, da zona gerenciada.
Inicie uma transação.
gcloud dns record-sets transaction start --zone=ZONE_NAME
- ZONE_NAME é o nome da zona.
Adicione registros de DNS.
gcloud dns record-sets transaction add --name=*.dataproc.cloud.google.com. \ --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \ --zone=ZONE_NAME \ --ttl=300
- ZONE_NAME é o nome da zona.
gcloud dns record-sets transaction add --name=dataproc.cloud.google.com. \ --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \ --zone=ZONE_NAME \ --ttl=300
- ZONE_NAME é o nome da zona.
Execute a transação.
gcloud dns record-sets transaction execute --zone=ZONE_NAME --project=PROJECT_ID
ZONE_NAME é o nome da zona.
PROJECT_ID é o código do projeto que hospeda sua rede VPC.
Configurar o DNS localmente no nó mestre do Dataproc com uma ação de inicialização
Você pode configurar o DNS localmente nos nós mestres do Dataproc para permitir conectividade privada a dataproc.cloud.google.com
. Esse procedimento destina-se a testes e desenvolvimento de curto prazo. Ele não é recomendado para uso em cargas de trabalho de produção.
Estabeleça a ação de inicialização no Cloud Storage.
cat <<EOF >component-gateway-vpc-sc-dns-init-action.sh #!/bin/bash readonly ROLE="$(/usr/share/google/get_metadata_value attributes/dataproc-role)" if [[ "${ROLE}" == 'Master' ]]; then readonly PROXY_ENDPOINT=$(grep "^dataproc.proxy.agent.endpoint=" \ "/etc/google-dataproc/dataproc.properties" | \ tail -n 1 | cut -d '=' -f 2- | sed -r 's/\\([#!=:])/\1/g') readonly HOSTNAME=$(echo ${PROXY_ENDPOINT} | \ sed -n -E 's;^https://([^/?#]*).*;\1;p') echo "199.36.153.4 ${HOSTNAME} # Component Gateway VPC-SC" >> "/etc/hosts" fi EOF gcloud storage cp component-gateway-vpc-sc-dns-init-action.sh gs://BUCKET/
- BUCKET é um bucket do Cloud Storage acessível a partir do cluster do Dataproc.
Crie um cluster do Dataproc com a ação de inicialização estabelecida e o Gateway de componentes ativado.
gcloud dataproc clusters create cluster-name \ --region=region \ --initialization-actions=gs://BUCKET/component-gateway-vpc-sc-dns-init-action.sh \ --enable-component-gateway \ other args ...
- BUCKET é o bucket do Cloud Storage usado na etapa 1 acima.
Programaticamente, usando APIs HTTP por meio do Gateway de componentes
O Gateway de componentes é um proxy que incorpora o Apache Knox. Os endpoints expostos pelo Apache Knox estão disponíveis por meio do https://component-gateway-base-url/component-path
.
Para autenticar de maneira programática com o Gateway de componentes, passe o cabeçalho Proxy-Authorization
com um token do portador OAuth 2.0.
$ ACCESS_TOKEN="$(gcloud auth print-access-token)"
$ curl -H "Proxy-Authorization: Bearer ${ACCESS_TOKEN}" "https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/yarn/jmx"
{
"beans" : [ {
"name" : "Hadoop:service=ResourceManager,name=RpcActivityForPort8031",
"modelerType" : "RpcActivityForPort8031",
"tag.port" : "8031",
"tag.Context" : "rpc",
"tag.NumOpenConnectionsPerUser" : "{\"yarn\":2}",
"tag.Hostname" : "demo-cluster-m",
"ReceivedBytes" : 1928581096,
"SentBytes" : 316939850,
"RpcQueueTimeNumOps" : 7230574,
"RpcQueueTimeAvgTime" : 0.09090909090909091,
"RpcProcessingTimeNumOps" : 7230574,
"RpcProcessingTimeAvgTime" : 0.045454545454545456,
...
O Gateway de componentes remove o cabeçalho Proxy-Authorization
antes de encaminhar solicitações para o Apache Knox.
Para encontrar o URL base do Gateway de componentes, execute:
gcloud dataproc clusters describe
:
$ gcloud dataproc clusters describe <var>cluster-name</var> \
--region=<var>region</var>
...
endpointConfig:
enableHttpPortAccess: true
httpPorts:
HDFS NameNode: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/hdfs/dfshealth.html
MapReduce Job History: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/jobhistory/
Spark History Server: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/sparkhistory/
Tez: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/apphistory/tez-ui/
YARN Application Timeline: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/apphistory/
YARN ResourceManager: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/yarn/
...
O URL base é as partes do esquema e da autoridade dos URLs em httpPorts
. Neste exemplo, é https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/
.
Como regenerar o certificado SSL do gateway de componentes
O certificado SSL padrão do Gateway Knox do gateway de componentes é válido para:
5 anos a partir da data de criação do cluster do Dataproc em clusters criados com as versões 2.0.93, 2.1.41, 2.2.7 e mais recentes.
13 meses a partir da data de criação do cluster do Dataproc em clusters criados usando versões de imagem anteriores.
Se o certificado expirar, todos os URLs da interface da Web do gateway de componentes vão ficar inativos.
Se a sua organização forneceu o certificado SSL, receba um novo certificado da organização e substitua o antigo pelo novo.
Se você estiver usando o certificado SSL autoassinado padrão, renove-o da seguinte maneira:
Use o SSH para se conectar ao nó mestre do cluster do Dataproc com o sufixo de nome
m-0
.Localize
gateway.jks
no caminho/var/lib/knox/security/keystores/gateway.jks
.keytool -list -v -keystore /var/lib/knox/security/keystores/gateway.jks
Mova o arquivo
gateway.jks
para um diretório de backup.mv /var/lib/knox/security/keystores/gateway.jks /tmp/backup/gateway.jks
Reinicie o serviço Knox para criar um novo certificado autoassinado.
systemctl restart knox
Verifique o status do gateway de componentes e do Knox.
systemctl status google-dataproc-component-gateway systemctl status knox
A seguir
- Crie um cluster com componentes Dataproc.