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 Apache Hadoop YARN (link em inglês) e Apache Livy, e servidores de histórico.
- Quando o Gateway de componentes é ativado, o Dataproc adiciona o seguinte
os serviços ao primeiro nó mestre do cluster:
- Apache Knox (em inglês). O padrão O certificado SSL do Knox Gateway é válido por 13 meses a partir da a data de criação do cluster. Se ele expirar, todos os URLs da interface da Web do gateway de componentes ficarão inativos. Para obter um novo certificado, consulte Como gerar novamente 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
Executar a CLI gcloud gcloud dataproc clusters create localmente em uma janela de terminal ou 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 Dataproc Clusters formulário no console do Google Cloud e selecione seu cluster para abrir a 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 do 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 dá suporte a configurações de VPC-SC que dependem
conectividade particular do Google
clusters do Dataproc sem endereços IP externo, mas é preciso
configure 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 gerar novamente o certificado SSL do Gateway de Componentes
O certificado SSL padrão do Gateway Knox do gateway de componentes é válido para:
Cinco anos a partir da data de criação do cluster do Dataproc nos clusters criados com imagens versões 2.0.93, 2.1.41, 2.2.7 e posteriores.
13 meses a partir da data de criação do cluster do Dataproc nos clusters criado usando versões de imagem anteriores.
Se o certificado expirar, todos os URls de interface da web do Gateway de componentes se tornarão inativo.
Caso sua organização tenha fornecido o certificado SSL, consiga um novo no organização e substitua o certificado 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 nome
m-0
sufixo.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
Crie um novo certificado autoassinado reiniciando o serviço Knox.
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.