Objetivos
Neste tutorial, mostramos como fazer as seguintes tarefas:
- Crie um cluster do Dataproc, instalando o Apache HBase e o Apache ZooKeeper nele.
- Crie uma tabela do HBase usando o shell do HBase em execução no nó principal do cluster do Dataproc.
- Use o Cloud Shell para enviar um job do Spark em Java ou PySpark ao serviço Dataproc, que grava e lê dados da tabela do HBase.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na sua projeção de uso,
use a calculadora de preços.
Antes de começar
Se ainda não tiver feito, crie um projeto do Google Cloud Platform.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataproc and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataproc and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. Execute o comando a seguir em um terminal de sessão do Cloud Shell para:
- Instale os componentes HBase e ZooKeeper.
- Provisione três nós de trabalho (recomenda-se de três a cinco workers para executar o código neste tutorial).
- Ative o Gateway de componentes.
- Usar a versão de imagem 2.0
- Use a flag
--properties
para adicionar a configuração e a biblioteca do HBase aos caminhos de classe do driver e do executor do Spark.
No console Google Cloud ou em um terminal de sessão do Cloud Shell, execute o SSH no nó mestre do cluster do Dataproc.
Verifique a instalação do conector do Apache HBase Spark no nó mestre:
Exemplo de saída:ls -l /usr/lib/spark/jars | grep hbase-spark
-rw-r--r-- 1 root root size date time hbase-spark-connector.version.jar
Mantenha o terminal da sessão SSH aberto para:
- Criar uma tabela do HBase
- (Usuários do Java): execute comandos no nó mestre do cluster para determinar as versões dos componentes instalados no cluster.
- Faça a leitura da sua tabela do HBase depois de executar o código.
Abra o shell do HBase:
hbase shell
Crie uma tabela "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 Component Gateway do console doGoogle Cloud para abrir a interface do Apache HBase.
my-table
é listado na seção Tabelas da página Início.
- Para confirmar a criação da tabela, no console do Google Cloud , clique em HBase nos links do Component Gateway do console doGoogle Cloud para abrir a interface do Apache HBase.
Abra um terminal de sessão do Cloud Shell.
Clone o repositório GoogleCloudDataproc/cloud-dataproc do GitHub no terminal da sessão do Cloud Shell:
git clone https://github.com/GoogleCloudDataproc/cloud-dataproc.git
Altere para o diretório
cloud-dataproc/spark-hbase
: Exemplo de saída:cd cloud-dataproc/spark-hbase
user-name@cloudshell:~/cloud-dataproc/spark-hbase (project-id)$
Envie o job do Dataproc.
- Defina as versões dos componentes no arquivo
pom.xml
.- A página versões de lançamento do Dataproc 2.0.x lista as versões dos componentes Scala, Spark e HBase instaladas com as quatro últimas versões secundárias da imagem 2.0 e a mais recente.
- Para encontrar a versão subalterna do cluster de versão de imagem 2.0, clique no nome do cluster na página Clusters noGoogle Cloud console para abrir a página Detalhes do cluster, em que a Versão da imagem do cluster está listada.
- Para encontrar a versão subalterna do cluster de versão de imagem 2.0, clique no nome do cluster na página Clusters noGoogle Cloud console para abrir a página Detalhes do cluster, em que a Versão da imagem do cluster está listada.
- Como alternativa, execute os seguintes comandos em um terminal de sessão SSH do nó mestre do cluster para determinar as versões dos componentes:
- Verifique a versão do Scala:
scala -version
- Verifique a versão do Spark (pressione Control+D para sair):
spark-shell
- Verifique a versão do HBase:
hbase version
- Identifique as dependências de versão do Spark, Scala e HBase no Maven
pom.xml
: Observação:<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>
hbase-spark.version
é a versão atual do conector do Spark HBase. Deixe esse número de versão inalterado.
- Verifique a versão do Scala:
- 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 voltar à 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 as mensagens 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:
Exemplo de saída:java -version
openjdk version "1.8..."
- A página versões de lançamento do Dataproc 2.0.x lista as versões dos componentes Scala, Spark e HBase instaladas com as quatro últimas versões secundárias da imagem 2.0 e a mais recente.
- Crie o arquivo
jar
: O arquivomvn clean package
.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 definiu os caminhos de classe do HBase do driver e do executor do Spark ao criar o cluster, defina-os com cada envio de job incluindo a seguinte flag
‑‑properties
no comando de envio:--properties='spark.driver.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*,spark.executor.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*'
Confira 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| +----+----+
Envie o job.
gcloud dataproc jobs submit pyspark scripts/pyspark-hbase.py \ --region=cluster-region \ --cluster=cluster-name
- Se você não definiu os caminhos de classe do HBase do driver e do executor do Spark ao criar o cluster, defina-os com cada envio de job incluindo a seguinte flag
‑‑properties
no comando de envio:--properties='spark.driver.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*,spark.executor.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*'
- Se você não definiu os caminhos de classe do HBase do driver e do executor do Spark ao criar o cluster, defina-os com cada envio de job incluindo a seguinte flag
Confira 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| +----+----+
- Abra o shell do HBase:
hbase shell
- Verificar "my-table":
Exemplo de saída:scan 'my_table'
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:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
excluir o cluster
- Para excluir o cluster:
gcloud dataproc clusters delete cluster-name \ --region=${REGION}
Criar um cluster do Dataproc
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/*'
Verificar a instalação do conector
Criar uma tabela do HBase
Execute os comandos listados nesta seção no terminal da sessão SSH do nó mestre que você abriu na etapa anterior.
Ver o código do Spark
Java
Python
Executar o código
Java
Python
Verificar a tabela do HBase
Para verificar o conteúdo da sua tabela do HBase, execute os seguintes comandos no terminal da sessão SSH do nó principal que você abriu em Verificar a instalação do conector: