Alguns dos componentes de código aberto predefinidos incluídos nos clusters do Google Dataproc, como o Apache Hadoop e o Apache Spark, oferecem interfaces Web. Estas interfaces podem ser usadas para gerir e monitorizar recursos e instalações de clusters, como o gestor de recursos YARN, o Hadoop Distributed File System (HDFS), o MapReduce e o Spark. O Component Gateway oferece acesso seguro a endpoints Web para o Dataproc predefinido e os componentes opcionais.
Os clusters criados com versões de imagens do Dataproc suportadas podem ativar o acesso a interfaces Web de componentes sem depender de túneis SSH ou modificar regras de firewall para permitir o tráfego de entrada.
Considerações
- Os utilizadores têm de ter a autorização dataproc.clusters.use de gestão de identidades e acessos para acederem às interfaces Web dos componentes ativados. Consulte os papéis do Dataproc.
- O Component Gateway pode ser usado para aceder a APIs REST, como o Apache Hadoop YARN e o Apache Livy, e servidores de histórico.
- Quando o gateway de componentes está ativado, o Dataproc adiciona os seguintes serviços ao primeiro nó principal do cluster:
- Apache Knox. O certificado SSL do Knox Gateway predefinido é válido durante 13 meses a partir da data de criação do cluster. Se expirar, todos os URLs da interface Web do Component Gateway ficam inativos. Para obter um novo certificado, consulte o artigo Volte a gerar o certificado SSL do gateway de componentes.
- Proxy de inversão
- O gateway de componentes não permite o acesso direto às interfaces
node:port
, mas encaminha automaticamente um subconjunto específico de serviços. Se quiser aceder a serviços em nós (node:port
), use um proxy SSH SOCKS.
Crie um cluster com o Component Gateway
Consola
O gateway de componentes do Dataproc é ativado por predefinição quando cria um cluster através da Google Cloud consola. Pode desativar esta definição desmarcando a caixa de verificação Ativar gateway de componentes na secção Componentes do painel Configurar cluster na página Criar um cluster do Dataproc no Compute Engine.

comando gcloud
Execute o comando gcloud dataproc clusters create da CLI gcloud localmente numa 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 um pedido
clusters.create.
Use URLs de gateway de componentes para aceder a interfaces Web
Quando o Component Gateway está ativado num cluster, pode ligar-se a interfaces Web de componentes executadas no primeiro nó principal do cluster clicando nos links fornecidos na Google Cloud consola. O Component Gateway também define endpointConfig.httpPorts com um mapa de nomes de portas para URLs. Em alternativa à utilização da consola, pode usar a ferramenta de linha de comandos gcloud
ou a API REST Dataproc para ver estas informações de mapeamento e, em seguida, copiar e colar o URL no navegador para estabelecer ligação à IU do componente.
Consola
Navegue para o formulário Dataproc Clusters na Google Cloud consola e, de seguida, selecione o cluster para abrir o formulário Detalhes do cluster. Clique no separador Interfaces Web para apresentar uma lista de links do gateway de componentes para as interfaces Web dos componentes predefinidos e opcionais instalados no cluster. Clique num link para abrir a interface Web em execução no nó principal do cluster no seu navegador local.

comando gcloud
Execute o comando da CLI gcloud
gcloud dataproc clusters describe
localmente numa 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 obter o mapa endpointConfig.httpPorts de nomes de portas para URLs.Use o Component Gateway com os VPC-SC
O Component Gateway suporta os VPC Service Controls.
Para a aplicação do perímetro de serviço, os pedidos às interfaces através do Component Gateway são
tratados como parte da superfície da API Dataproc, e quaisquer políticas de acesso que
controlam as autorizações para o dataproc.googleapis.com
também controlam o acesso às
interfaces do utilizador do Component Gateway.
O Component Gateway também suporta configurações do VPC-SC que dependem da
conetividade privada da Google
para clusters do Dataproc sem endereços IP externos, mas tem de
configurar manualmente a sua rede para permitir o acesso da VM principal do Dataproc
ao *.dataproc.cloud.google.com
através do intervalo de IP virtual restrito da Google 199.36.153.4/30
fazendo o seguinte:
- Siga as instruções para configurar a conetividade privada da Google para todas as APIs Google.
- Configure o DNS com o Cloud DNS ou
configure o DNS localmente no nó principal do Dataproc
para permitir o acesso a
*.dataproc.cloud.google.com
.
Configure o DNS com o Cloud DNS
Crie uma zona do Cloud DNS que mapeie o tráfego destinado a *.dataproc.cloud.google.com
para o intervalo de IPs virtuais da API Google restrita.
Crie uma zona privada gerida para a 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 está a criar. Por exemplo,
vpc
. Este nome da zona vai ser usado em cada um dos passos seguintes.PROJECT_ID é o ID do projeto que aloja a sua rede VPC.
NETWORK_NAME é o nome da sua rede VPC.
DESCRIPTION é uma descrição opcional e legível da zona gerida.
Inicie uma transação.
gcloud dns record-sets transaction start --zone=ZONE_NAME
- ZONE_NAME é o nome da sua zona.
Adicione registos 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 sua 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 sua zona.
Execute a transação.
gcloud dns record-sets transaction execute --zone=ZONE_NAME --project=PROJECT_ID
ZONE_NAME é o nome da sua zona.
PROJECT_ID é o ID do projeto que aloja a sua rede VPC.
Configure o DNS localmente no nó principal do Dataproc com uma ação de inicialização
Pode configurar localmente o DNS nos nós principais do Dataproc para permitir a conetividade privada a dataproc.cloud.google.com
. Este procedimento destina-se a testes e desenvolvimento a curto prazo. Não é recomendado
para utilização em cargas de trabalho de produção.
Prepare a ação de inicialização para o 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 contentor do Cloud Storage acessível a partir do cluster do Dataproc.
Crie um cluster do Dataproc com a ação de inicialização preparada e o Component Gateway 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 contentor do Cloud Storage usado no passo 1.
Use APIs HTTP de forma programática através do gateway de componentes
O Component Gateway é um proxy que incorpora o Apache Knox. Os pontos finais expostos pelo
Apache Knox estão disponíveis através de
https://component-gateway-base-url/component-path
.
Para fazer a autenticação por programação com o Component Gateway, transmita o cabeçalho
Proxy-Authorization
com um
símbolo de portador do 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 Component Gateway remove o cabeçalho Proxy-Authorization
antes de encaminhar
pedidos para o Apache Knox.
Para encontrar o URL base do Component Gateway, execute o seguinte:
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 de base é o esquema e as partes de autoridade dos URLs em httpPorts
. Neste exemplo, é https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/
.
Volte a gerar o certificado SSL do gateway de componentes
O certificado SSL do Knox Gateway predefinido do Component Gateway é válido para:
5 anos a partir da data de criação do cluster do Dataproc em clusters criados com as versões de imagens 2.0.93, 2.1.41, 2.2.7 e posteriores.
13 meses a partir da data de criação do cluster do Dataproc em clusters criados com versões de imagens anteriores.
Se o certificado expirar, todos os URLs da interface Web do Component Gateway ficam inativos.
Se a sua organização forneceu o certificado SSL, obtenha um novo certificado da organização e, em seguida, substitua o certificado antigo pelo novo.
Se estiver a usar o certificado SSL autoassinado predefinido, renove-o da seguinte forma:
Use o SSH para estabelecer ligação ao nó principal do cluster do Dataproc com o sufixo do 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 ficheiro
gateway.jks
para um diretório de cópia de segurança.mv /var/lib/knox/security/keystores/gateway.jks /tmp/backup/gateway.jks
Crie um novo certificado autoassinado reiniciando o serviço Knox.
systemctl restart knox
Valide o estado do Component Gateway e do Knox.
systemctl status google-dataproc-component-gateway systemctl status knox
O que se segue?
- Crie um cluster com componentes do Dataproc.