Objetivos
Neste tutorial, mostramos como fazer as seguintes tarefas:
- Criar um cluster do Dataproc, instalando o Apache HBase e o Apache ZooKeeper.
- Crie uma tabela do HBase usando o shell do HBase em execução no nó mestre do cluster do Dataproc.
- Usar o Cloud Shell para enviar um job do Spark em Java ou PySpark ao serviço do Dataproc que grava dados e, em seguida, lê dados da tabela do HBase.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Antes de começar
Se ainda não tiver feito, crie um projeto do Google Cloud Platform.
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Dataproc and Compute Engine.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Dataproc and Compute Engine.
Criar um cluster do Dataproc
Execute o comando a seguir em um terminal de sessão do Cloud Shell para:
- Instale os componentes HBase e ZooKeeper (links em inglês)
- Provisione três nós de trabalho. Recomendamos de três a cinco workers para executar o código neste tutorial.
- Ative o Gateway de componentes
- Usar a versão 2.0 da imagem
- Use a sinalização
--properties
para adicionar a configuração e a biblioteca do HBase aos caminhos de classe do driver e do executor do Spark.
gcloud dataproc clusters create cluster-name \ --region=region \ --optional-components=HBASE,ZOOKEEPER \ --num-workers=3 \ --enable-component-gateway \ --image-version=2.0 \ --properties='spark:spark.driver.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*,spark:spark.executor.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*'
Verifique a instalação do conector
No console do Google Cloud ou em um terminal de sessão do Cloud Shell, SSH no nó mestre do cluster do Dataproc.
Verifique a instalação do conector do Apache HBase Spark no nó mestre:
ls -l /usr/lib/spark/jars | grep hbase-spark
Exemplo de resposta:-rw-r--r-- 1 root root size date time hbase-spark-connector.version.jar
Mantenha o terminal da sessão SSH aberto para:
- Crie uma tabela do HBase
- (Usuários do Java): execute comandos no nó mestre do cluster para determinar as versões dos componentes instalados nele.
- Verifique a tabela Hbase depois de executar o código.
Criar uma tabela do HBase
Execute os comandos listados nesta seção no terminal de sessão SSH do nó mestre que você abriu na etapa anterior.
Abra o shell do HBase:
hbase shell
Crie uma "my-table" do HBase com um grupo de colunas "cf":
create 'my_table','cf'
- Para confirmar a criação da tabela, no console do Google Cloud, clique em HBase
nos links do Gateway de componentes do console do Google Cloud
para abrir a interface do Apache HBase.
my-table
está listado na seção Tabelas na Página inicial.
- Para confirmar a criação da tabela, no console do Google Cloud, clique em HBase
nos links do Gateway de componentes do console do Google Cloud
para abrir a interface do Apache HBase.
Acessar o código Spark
Java
Python
Executar o código
Abra um terminal de sessão do Cloud Shell.
Clone o repositório do GitHub GoogleCloudDataproc/cloud-dataproc no terminal de sessão do Cloud Shell:
git clone https://github.com/GoogleCloudDataproc/cloud-dataproc.git
Altere para o diretório
cloud-dataproc/spark-hbase
:cd cloud-dataproc/spark-hbase
Exemplo de resposta:user-name@cloudshell:~/cloud-dataproc/spark-hbase (project-id)$
Envie o job do Dataproc.
Java
- Defina as versões dos componentes no arquivo
pom.xml
.- A página Versões de lançamento 2.0.x do Dataproc lista as versões dos componentes Scala, Spark e HBase instaladas com as últimas quatro versões subsecundárias da imagem 2.0 e a mais recente.
- Para encontrar a versão subsecundária do cluster da versão de imagem 2.0, clique no nome do cluster na página Clusters do Console do Google Cloud para abrir a página Detalhes do cluster, em que a Versão da imagem do cluster está listada.
- Como alternativa, é possível executar os seguintes comandos em um
terminal de sessão SSH
no nó mestre do cluster para determinar as versões dos componentes:
- Verifique a versão de escala:
scala -version
- Verifique a versão do Spark (Control+D para sair):
spark-shell
- Verifique a versão do HBase:
hbase version
- Identifique as dependências de versão do Spark, do Scala e do HBase no
pom.xml
do Maven:<properties> <scala.version>scala full version (for example, 2.12.14)</scala.version> <scala.main.version>scala main version (for example, 2.12)</scala.main.version> <spark.version>spark version (for example, 3.1.2)</spark.version> <hbase.client.version>hbase version (for example, 2.2.7)</hbase.client.version> <hbase-spark.version>1.0.0(the current Apache HBase Spark Connector version)> </properties>
Observação: ohbase-spark.version
é a versão atual do conector HBase do Spark. Não altere esse número.
- Verifique a versão de escala:
- Edite o arquivo
pom.xml
no editor do Cloud Shell para inserir os números de versão corretos do Scala, do Spark e do HBase. Clique em Abrir terminal quando terminar de editar para retornar à linha de comando do terminal do Cloud Shell.cloudshell edit .
- Mude para o Java 8 no Cloud Shell. Essa versão do JDK é necessária para
criar o código. Ignore qualquer mensagem de aviso do plug-in:
sudo update-java-alternatives -s java-1.8.0-openjdk-amd64 && export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
- Verifique a instalação do Java 8:
java -version
Exemplo de resposta:openjdk version "1.8..."
- A página Versões de lançamento 2.0.x do Dataproc lista as versões dos componentes Scala, Spark e HBase instaladas com as últimas quatro versões subsecundárias da imagem 2.0 e a mais recente.
- Crie o arquivo
jar
:mvn clean package
O arquivo.jar
é colocado no subdiretório/target
(por exemplo,target/spark-hbase-1.0-SNAPSHOT.jar
. Envie o job.
gcloud dataproc jobs submit spark \ --class=hbase.SparkHBaseMain \ --jars=target/filename.jar \ --region=cluster-region \ --cluster=cluster-name
--jars
: insira o nome do arquivo.jar
depois de "target/" e antes de ".jar".- Se você não tiver definido o driver do Spark e os caminhos de classe do HBase do executor ao criar o cluster, precisará defini-los a cada envio de job. Para isso, inclua a seguinte sinalização
‑‑properties
no comando de envio do job:--properties='spark.driver.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*,spark.executor.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*'
Veja a saída da tabela do HBase na saída do terminal da sessão do Cloud Shell:
Waiting for job output... ... +----+----+ | key|name| +----+----+ |key1| foo| |key2| bar| +----+----+
Python
Envie o job.
gcloud dataproc jobs submit pyspark scripts/pyspark-hbase.py \ --region=cluster-region \ --cluster=cluster-name
- Se você não tiver definido o driver do Spark e os caminhos de classe do HBase do executor ao criar o cluster, precisará defini-los a cada envio de job. Para isso, inclua a seguinte sinalização
‑‑properties
no comando de envio do job:--properties='spark.driver.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*,spark.executor.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*'
- Se você não tiver definido o driver do Spark e os caminhos de classe do HBase do executor ao criar o cluster, precisará defini-los a cada envio de job. Para isso, inclua a seguinte sinalização
Veja a saída da tabela do HBase na saída do terminal da sessão do Cloud Shell:
Waiting for job output... ... +----+----+ | key|name| +----+----+ |key1| foo| |key2| bar| +----+----+
Verificar a tabela do HBase
Verifique o conteúdo da tabela do HBase executando os seguintes comandos no terminal de sessão SSH do nó mestre que você abriu em Verificar a instalação do conector:
- Abra o shell do HBase:
hbase shell
- Verificar "my-table":
scan 'my_table'
Exemplo de resposta:ROW COLUMN+CELL key1 column=cf:name, timestamp=1647364013561, value=foo key2 column=cf:name, timestamp=1647364012817, value=bar 2 row(s) Took 0.5009 seconds
Limpar
Depois de concluir o tutorial, você pode limpar os recursos que criou para que eles parem de usar a cota e gerar cobranças. Nas seções a seguir, você aprenderá a excluir e desativar esses recursos.
Exclua o projeto
O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.
Para excluir o projeto, faça o seguinte:
- No Console do Google Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
Excluir o cluster
- Para excluir o cluster:
gcloud dataproc clusters delete cluster-name \ --region=${REGION}