Alguns dos principais componentes de código aberto incluídos com os clusters do Dataproc, como o Apache Hadoop e o Apache Spark, fornecem interfaces da Web. Essas interfaces podem ser usadas para gerenciar e monitorar recursos de cluster e instalações, como o gerenciador de recursos YARN, o Hadoop Distributed File System (HDFS), o MapReduce e o Spark. Outros componentes ou aplicativos instalados no cluster também podem fornecer interfaces da Web. Consulte, por exemplo, Instalar e executar um notebook do Jupyter em um cluster do Dataproc.
Interfaces disponíveis
As interfaces a seguir estão disponíveis em um nó mestre do
cluster do Dataproc. Substitua master-host-name
pelo nome do nó mestre.
IU da Web | Porta | URL |
---|---|---|
YARN ResourceManager | 80881 | http://master-host-name:8088 |
HDFS NameNode | 98702,3 | http://master-host-name:9870 |
1 Em clusters com o Kerberos ativado, a porta da IU da Web do YARN ResourceManager é 8090 e é executada em HTTPS.
2 Em clusters com o Kerberos ativado, a porta da IU da Web Namenode HDFS é 9871 e é executada em HTTPS.
3 Em versões anteriores do Dataproc (anteriores à 1.2), a porta da IU da Web do HDFS Namenode era 50070.
O YARN ResourceManager tem links para todas as interfaces da Web MapReduce e Spark Applications atualmente em execução e concluídas na coluna "IU de rastreamento".
Permitir APIs REST do YARN ResourceManager
Ao criar um cluster, o Dataproc
define a propriedade
do yarn-site.xml yarn.resourcemanager.webapp.methods-allowed
para "GET,HEAD". Isso que restringe os métodos HTTP que podem ser chamados na
IU da Web do Yarn Resource Manager e
APIs REST
para os métodos GET
e HEAD
. Essa configuração padrão também
desativa o envio e as modificações do job por meio da API REST do YARN.
Você pode substituir os valores padrão para ativar métodos HTTP específicos
na porta 8088 definindo essa propriedade como um ou mais nomes de métodos HTTP
separados por vírgula. Um valor ALL
permitirá todos os métodos HTTP na porta.
Exemplo:
gcloud dataproc clusters create cluster-name \ --properties=^#^yarn:yarn.resourcemanager.webapp.methods-allowed=GET,POST,DELETE \ --region=region \
Recomendação: se você definir essa propriedade para permitir métodos HTTP não padrão, configure regras de firewall e outras configurações de segurança para restringir o acesso à porta 8088.
Como se conectar a interfaces da Web
Você pode se conectar a interfaces da Web em execução em um cluster do Dataproc usando o Gateway de componentes do Dataproc, o Cloud Shell do projeto ou a ferramenta de linha de comando gcloud da Google Cloud CLI:
Gateway de componentes: conecte-se a um clique do Hadoop, Spark e outras interfaces da IU da Web de componentes no console do Google Cloud. O Gateway de componentes é ativado ao criar o cluster.
Cloud Shell: o Cloud Shell no console do Google Cloud tem os comandos e os utilitários da CLI gcloud pré-instalados e fornece um recurso de visualização da Web que permite conectar-se por meio de um túnel SSH a uma porta da interface da Web em um cluster. No entanto, uma conexão com o cluster do Cloud Shell usa o encaminhamento de portas local, que abre uma conexão com apenas uma porta em uma interface da Web do cluster. Vários comandos são necessários para se conectar a diversas portas. Além disso, as sessões do Cloud Shell serão encerradas automaticamente depois de um período de inatividade (30 minutos).
Google Cloud CLI: o comando
gcloud compute ssh
com encaminhamento de porta dinâmico permite estabelecer um túnel SSH e executar um servidor proxy SOCKS sobre o túnel. Depois de emitir esse comando, configure o navegador local para usar o proxy SOCKS. Esse método de conexão permite se conectar a várias portas em uma interface da Web do cluster. Consulte Posso usar o encaminhamento de portas local em vez de um proxy SOCKS? para mais informações.
Definir variáveis de comando mais usadas
Para criar exemplos de linha de comando de cópia e execução na máquina local
ou no Cloud Shell mais facilmente,
defina variáveis de comando gcloud dataproc
. As variáveis adicionais podem precisar ser definidas para alguns dos exemplos de comando mostrados nesta página.
Linux/mac/shell
export PROJECT=project;export HOSTNAME=hostname;export ZONE=zone
Windows
set PROJECT=project && set HOSTNAME=hostname && set ZONE=zone
- Defina PROJECT para seu ID do projeto do Google Cloud
- Definir HOSTNAME como o nome do
nó mestre no cluster do
Dataproc (o nome do mestre termina com um sufixo
-m
) - Definir ZONE como a zona das VMs no cluster do Dataproc (por exemplo, "us-central1-b")
Criar um túnel SSH
Comando gcloud
Execute o seguinte comando gcloud
na máquina local para
configurar um túnel SSH de uma porta aberta na máquina local para a
instância mestre do cluster e executar um servidor proxy SOCKS local
que escuta a porta.
Antes de executar o comando, na máquina local, siga estas etapas:
- Definir variáveis de comando mais usadas
- Defina uma variável PORT como uma porta aberta na máquina local.
A porta
1080
é uma escolha arbitrária, mas típica, porque provavelmente está aberta.PORT=number
Linux/macOS
gcloud compute ssh ${HOSTNAME} \ --project=${PROJECT} --zone=${ZONE} -- \ -D ${PORT} -N
Windows
gcloud compute ssh %HOSTNAME% ^ --project=%PROJECT% --zone=%ZONE% -- ^ -D %PORT% -N
O separador --
permite adicionar
argumentos SSH
ao comando gcloud compute ssh
da seguinte maneira:
-D
especifica o encaminhamento de porta dinâmico no nível do aplicativo.-N
instruigcloud
a não abrir um shell remoto.
Esse comando gcloud
cria um túnel SSH que funciona
independentemente de outras sessões do shell SSH, mantém erros relacionados ao túnel fora
da saída do shell e ajuda a evitar fechamentos acidentais do túnel.
Se o comando ssh falhar com a mensagem de erro
bind: Cannot assign requested address
, uma causa provável é que a
porta solicitada está em uso. Tente executar o comando com um valor de variável
PORT diferente.
O comando acima é executado em primeiro plano e precisa continuar em execução para manter o túnel ativo. O comando será encerrado automaticamente quando você excluir o cluster.
Cloud Shell
- Abra o Cloud Shell do Google Cloud.
-
Execute o comando
gcloud
abaixo no Cloud Shell para configurar um túnel SSH de uma porta de visualização do Cloud Shell para uma porta de interface da Web no nó mestre do cluster. Antes de executar o comando, realize estas etapas no Cloud Shell:- Definir variáveis de comando mais usadas
- Defina uma variável PORT1 como uma porta
do Cloud Shell no intervalo de portas 8080 - 8084 e defina uma variável PORT2
como a porta da interface da Web no nó mestre do
cluster do Dataproc.
PORT1=number PORT2=number
gcloud compute ssh ${HOSTNAME} \ --project=${PROJECT} --zone=${ZONE} -- \ -4 -N -L ${PORT1}:${HOSTNAME}:${PORT2}
O separador
--
permite adicionar argumentos SSH ao comandogcloud compute ssh
da seguinte maneira:-4
instrui o SSH a usar apenas o IPv4.-N
instruigcloud
a não abrir um shell remoto.-L ${PORT1}:${HOSTNAME}:${PORT2}
especifica o encaminhamento de portas local de PORT1 do Cloud Shell especificado para HOSTNAME:PORT2 do cluster.
Esse comando
gcloud
cria um túnel SSH que funciona independentemente de outras sessões do shell SSH, mantém erros relacionados ao túnel fora da saída do shell e ajuda a evitar fechamentos acidentais do túnel.
Configurar o navegador
Comando gcloud
O túnel SSH é compatível com o proxy de tráfego que usa o protocolo SOCKS.
Para configurar o navegador para usar o proxy, inicie uma nova sessão do navegador com os parâmetros do servidor proxy. Aqui está um exemplo que usa o navegador Google Chrome:
HOSTNAME
é o nome do nó mestre do cluster. Consulte
Definir variáveis de comando mais usadas.
Linux
/usr/bin/google-chrome \ --proxy-server="socks5://localhost:${PORT}" \ --user-data-dir=/tmp/${HOSTNAME}
macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \ --proxy-server="socks5://localhost:${PORT}" \ --user-data-dir=/tmp/${HOSTNAME}
Windows
"%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe" ^ --proxy-server="socks5://localhost:%PORT%" ^ --user-data-dir="%Temp%\%HOSTNAME%"
Esse comando usa as seguintes sinalizações do navegador Chrome:
-proxy-server="socks5://localhost:1080"
informa ao Chrome para enviar todas as solicitações de URLhttp://
ehttps://
por meio do servidor proxy SOCKSlocalhost:${PORT}
, usando a versão 5 do protocolo SOCKS. ${PORT} é a variável de porta definida em Criar um túnel SSH. Os nomes do host desses URLs são resolvidos pelo servidor proxy, e não localmente pelo Chrome.--user-data-dir=/tmp/${HOSTNAME}
força o Chrome a abrir uma nova janela que não esteja relacionada a uma sessão atual do Chrome. Sem essa sinalização, o Chrome pode abrir uma nova janela anexada a uma sessão atual do Chrome, ignorando a configuração--proxy-server
. O valor definido para--user-data-dir
pode ser qualquer caminho inexistente.
Cloud Shell
Você não precisa configurar o navegador local ao usar o Cloud Shell. Depois de criar um túnel SSH, use a visualização da Web do Cloud Shell para se conectar à interface do cluster.
Conectar-se à interface do cluster
Comando gcloud
Depois que o navegador local estiver configurado para usar o proxy, navegue até o
URL da interface da Web no cluster do Dataproc. Consulte
Interfaces disponíveis.
O URL do navegador tem o seguinte formato e conteúdo:
http://cluster-name-m:port
(porta da interface do cluster)
Cloud Shell
Clique no botão Visualização da Web do Cloud Shell e selecione uma destas opções:
- "Visualizar na porta 8080", ou
- "Alterar porta", inserindo o número da porta na caixa de diálogo
gcloud compute ssh
em
Criar um túnel SSH.
Uma janela do navegador aberta se conecta à porta da interface da Web no nó mestre do cluster.
Perguntas frequentes e dicas de depuração
E se eu não vejo a IU no navegador?
Se você não vê as IUs no navegador, veja abaixo os dois motivos mais comuns:
Há um problema de conectividade de rede, possivelmente devido a um firewall. Execute o comando a seguir (depois de configurar variáveis locais) para ver se é possível executar SSH na instância mestre. Se não conseguir, há um problema de conectividade.
Linux/MacOS
gcloud compute ssh ${HOSTNAME}-m \ --project=${PROJECT}
Windows
gcloud compute ssh %HOSTNAME%-m ^ --project=%PROJECT%
Outro proxy está interferindo no proxy SOCKS. Para verificar o proxy, execute o seguinte comando
curl
(disponível no Linux e no macOS):Linux/macOS
curl -Is --socks5-hostname localhost:1080 http://cluster-name-m:8088
Windows
curl.exe -Is --socks5-hostname localhost:1080 http://cluster-name-m:8088
Posso usar o encaminhamento de portas local em vez de um proxy SOCKS?
Em vez do proxy SOCKS, é possível acessar IUs de aplicativos da Web em execução na instância mestre com o encaminhamento de portas local SSH, que encaminha a porta do mestre para uma porta local. Por exemplo, o comando a seguir permite
acessar localhost:1080
para alcançar cluster-name-m:8088
sem SOCKS.
Consulte Definir variáveis de comando mais usadas:
Linux/macOS
gcloud compute ssh ${HOSTNAME}-m \ --project=${PROJECT} -- \ -L 1080:${HOSTNAME}-m:8088 -N -n
Windows
gcloud compute ssh %HOSTNAME%-m ^ --project=%PROJECT% -- ^ -L 1080:%HOSTNAME%-m:8088 -N -n
Usar um proxy SOCKS pode ser preferível a usar o encaminhamento de portas local, porque o proxy:
- permite acessar todas as portas de aplicativo da Web sem precisar configurar um túnel de encaminhamento de cada porta da IU;
- permita que as IUs da Web Spark e Hadoop solucionem corretamente os hosts DNS.