A biblioteca Java de código aberto do conector do Cloud Storage permite executar jobs do Apache Hadoop ou Apache Spark diretamente nos dados do Cloud Storage.
Benefícios do conector do Cloud Storage
- Acesso direto a dados: armazene seus dados no Cloud Storage e acesse-os diretamente. Não é necessário transferi-los para o HDFS.
- Compatibilidade com HDFS: você pode acessar seus dados no
Cloud Storage usando o prefixo
gs://em vez dehdfs://. - Interoperabilidade: armazenar dados no Cloud Storage permite interoperabilidade ininterrupta entre os serviços do Spark, do Hadoop e outros do Google.
- Acessibilidade de dados: ao encerrar um cluster do Hadoop, ao contrário do HDFS, você continua tendo acesso aos seus dados no Cloud Storage.
- Alta disponibilidade de dados: dados armazenados no Cloud Storage estão amplamente disponíveis e são replicados globalmente sem perda de desempenho.
- Não há sobrecarga de gerenciamento de armazenamento: diferentemente do HDFS, o Cloud Storage não exige uma rotina de manutenção, como verificação do sistema de arquivos, ou upgrade ou downgrade para versões anteriores do sistema de arquivos.
- Inicialização rápida: no HDFS, um job do MapReduce não pode iniciar até que o
NameNodeesteja fora do modo de segurança, um processo que pode levar de alguns segundos ou muitos minutos, dependendo do tamanho e do estado dos seus dados. Com o Cloud Storage, inicie o job assim que os nós de tarefa começarem, o que gera uma economia significativa no longo prazo.
Configuração do conector em clusters do Dataproc
O conector do Cloud Storage é instalado por padrão em todos os
nós do cluster do Dataproc no
/usr/local/share/google/dataproc/lib/ diretório. As subseções a seguir
descrevem as etapas que você pode seguir para concluir a configuração do
conector em clusters do Dataproc.
Conta de serviço da VM
Ao executar o conector em nós de cluster do Dataproc e outras VMs do Compute Engine, a propriedade é definida como por padrão. Isso significa que não é necessário configurar as credenciais da conta de serviço da VM para o conector. As credenciais da conta de serviço da VM são fornecidas pelo servidor de metadados da VM.google.cloud.auth.service.account.enablefalse
A conta de serviço da VM do Dataproc precisa ter permissão para acessar o bucket do Cloud Storage.
Versões de conector selecionadas pelo usuário
As versões padrão do conector do Cloud Storage usadas nas imagens mais recentes instaladas em clusters do Dataproc estão listadas nas páginas de versão da imagem. Se o aplicativo depender de uma versão de conector não padrão implantada no seu cluster, você poderá realizar uma das seguintes ações para usar a versão do conector selecionada:
- Crie um cluster com a
--metadata=GCS_CONNECTOR_VERSION=x.y.zflag, que atualiza o conector usado por aplicativos em execução no cluster para a versão especificada do conector. - Inclua e realoque as classes do conector e as dependências do conector da versão que você está usando no jar do aplicativo. A realocação é necessária para evitar um conflito entre a versão do conector implantada e a versão padrão do conector instalada no cluster do Dataproc. Consulte também o exemplo de realocação de dependências do Maven.
Configuração do conector em clusters que não são do Dataproc
Você pode seguir as etapas abaixo para configurar o conector do Cloud Storage em um cluster que não seja do Dataproc, como um cluster do Apache Hadoop ou do Spark que você usa para mover dados HDFS locais para o Cloud Storage.
Fazer o download do conector
- Para fazer o download do conector do Cloud Storage:
- Para usar uma versão
latestlocalizada no bucket do Cloud Storage (o uso de uma versãolatestnão é recomendado para aplicativos de produção): - Para usar uma versão específica
do bucket do Cloud Storage, substitua as versões do conector do Hadoop e do
Cloud Storage no
gcs-connector-HADOOP_VERSION-CONNECTOR_VERSION.jarpadrão de nome, por exemplo,gs://hadoop-lib/gcs/gcs-connector-hadoop2-2.1.1.jar. - Para usar uma versão específica
do
repositório do Apache Maven,
faça o download de um jar sombreado com o sufixo
-shadedno nome.
- Para usar uma versão
- Para fazer o download do conector do Cloud Storage:
Instalar o conector
Siga as instruções do GitHub para instalar, configurar e testar o conector do Cloud Storage.
Uso do conector
Você pode usar o conector para acessar dados do Cloud Storage das seguintes maneiras:
- Em um aplicativo Spark, PySpark ou Hadoop com o
gs://prefixo - Em um shell do Hadoop com
hadoop fs -ls gs://bucket/dir/file - No navegador do Cloud Storage No console Google Cloud
- Usando comandos do SDK do Google Cloud, como:
Uso do Java
O conector do Cloud Storage requer o Java 8.
A seguir, apresentamos uma seção de gerenciamento de dependências do POM do Maven de amostra para o conector do Cloud Storage. Para mais informações, consulte Gerenciamento de dependências.
<dependency>
<groupId>com.google.cloud.bigdataoss</groupId>
<artifactId>gcs-connector</artifactId>
<version>hadoopX-X.X.XCONNECTOR VERSION</version>
<scope>provided</scope>
</dependency>
Para uma versão sombreada:
<dependency>
<groupId>com.google.cloud.bigdataoss</groupId>
<artifactId>gcs-connector</artifactId>
<version>hadoopX-X.X.XCONNECTOR VERSION</version>
<scope>provided</scope>
<classifier>shaded</classifier>
</dependency>
Suporte ao conector
O conector do Cloud Storage tem o suporte do Google Cloud Google Cloud para uso com Google Cloud produtos e casos de uso. Quando usado com o Dataproc, ele tem o mesmo suporte que o Dataproc. Para mais informações, consulte Como receber suporte.
Conectar-se ao Cloud Storage usando o gRPC
Por padrão, o conector do Cloud Storage no Dataproc usa a API JSON do Cloud Storage. Esta seção mostra como ativar o conector do Cloud Storage para usar gRPC.
Considerações de uso
O uso do conector do Cloud Storage com o gRPC inclui as seguintes considerações:
- Local do bucket regional: o gRPC só pode melhorar as latências de leitura somente quando as VMs do Compute Engine e os buckets do Cloud Storage estão localizados na mesma região do Compute Engine.
- Jobs com leitura intensa: o gRPC pode oferecer latências de leitura aprimoradas para leituras de longa duração e pode ajudar cargas de trabalho com leitura intensa. Não é recomendado para aplicativos que criam um canal gRPC, executam um cálculo curto e fecham o canal.
- Solicitações não autenticadas: o gRPC não oferece suporte a solicitações não autenticadas.
Requisitos
Os requisitos a seguir se aplicam ao usar o gRPC com o conector do Cloud Storage:
A rede VPC do cluster do Dataproc precisa oferecer suporte à conectividade direta. Isso significa que as rotas e regras de firewall da rede precisam permitir que o tráfego de saída chegue a
34.126.0.0/18e2001:4860:8040::/42.- Se o cluster do Dataproc usar a rede IPv6, você precisará configurar uma sub-rede IPv6 para instâncias de VM. Para mais informações, consulte Como configurar o IPv6 para instâncias e modelos de instância.
Ao criar um cluster do Dataproc, use a versão do conector do Cloud Storage
2.2.23ou mais recente com a versão da imagem2.1.56+ou a versão v3.0.0 ou mais recente do conector do Cloud Storage com a versão 2.2.0 ou mais recente da imagem. A versão do conector do Cloud Storage instalada em cada versão da imagem do Dataproc está listada nas páginas de versão da imagem do Dataproc.- Se você criar e usar um
cluster virtual do Dataproc no GKE
para suas solicitações do Cloud Storage do gRPC, recomendamos a versão do GKE
1.28.5-gke.1199000comgke-metadata-server 0.4.285. Essa combinação oferece suporte à conectividade direta.
- Se você criar e usar um
cluster virtual do Dataproc no GKE
para suas solicitações do Cloud Storage do gRPC, recomendamos a versão do GKE
Você ou o administrador da organização precisam conceder papéis do Identity and Access Management que incluem as permissões necessárias para configurar e fazer solicitações de gRPC ao conector do Cloud Storage. Esses papéis podem incluir o seguinte:
- Papel do usuário: Editor do Dataproc papel concedido aos usuários para permitir que eles criem clusters e enviem jobs
- Papel da conta de serviço: papel de usuário de objeto do armazenamento concedido à conta de serviço da VM do Dataproc para permitir que aplicativos em execução em VMs de cluster visualizem, leiam, criem e gravem objetos do Cloud Storage.
Ativar o gRPC no conector do Cloud Storage
É possível ativar o gRPC no conector do Cloud Storage no nível do cluster ou do job. Depois de ativado no cluster, as solicitações de leitura do conector do Cloud Storage usam o gRPC. Se ativado em um job em vez de no nível do cluster, as solicitações de leitura do conector do Cloud Storage usarão o gRPC apenas para o job.
Ativar um cluster
Para ativar o gRPC no conector do Cloud Storage no nível do cluster,
defina a propriedade core:fs.gs.client.type=STORAGE_CLIENT ao
criar um cluster do Dataproc.
Depois que o gRPC é ativado no nível do cluster, as solicitações de
leitura do conector do Cloud Storage feitas por jobs em execução no cluster usam o gRPC.
Exemplo da CLI gcloud:
gcloud dataproc clusters create CLUSTER_NAME \
--project=PROJECT_ID \
--region=REGION \
--properties=core:fs.gs.client.type=STORAGE_CLIENT
Substitua:
- CLUSTER_NAME: especifique um nome para o cluster.
- PROJECT_NAME: o ID do projeto em que o cluster está localizado. Os IDs do projeto estão listados na seção Informações do projeto no painel do Google Cloud console Dashboard.
- REGION: especifique uma região do Compute Engine em que o cluster será localizado.
Ativar um job
Para ativar o gRPC no conector do Cloud Storage para um
job específico, inclua --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT
ao enviar um job.
Exemplo: execute um job em um cluster atual que usa o gRPC para ler do Cloud Storage.
Crie um script PySpark
/tmp/line-count.pylocal que use o gRPC para ler um arquivo de texto do Cloud Storage e gerar o número de linhas no arquivo.cat <<EOF >"/tmp/line-count.py" #!/usr/bin/python import sys from pyspark.sql import SparkSession path = sys.argv[1] spark = SparkSession.builder.getOrCreate() rdd = spark.read.text(path) lines_counter = rdd.count() print("There are {} lines in file: {}".format(lines_counter,path)) EOFCrie um arquivo de texto
/tmp/line-count-sample.txtlocal.cat <<EOF >"/tmp/line-count-sample.txt" Line 1 Line 2 line 3 EOF
Faça o upload de
/tmp/line-count.pye/tmp/line-count-sample.txtlocais para o bucket no Cloud Storage.gcloud storage cp /tmp/line-count* gs://BUCKET
Execute o job
line-count.pyno cluster. Defina--properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENTpara ativar o gRPC para solicitações de leitura do conector do Cloud Storage.gcloud dataproc jobs submit pyspark gs://BUCKET/line-count.py \ --cluster=CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT \ -- gs://BUCKET/line-count-sample.txt
Substitua:
- CLUSTER_NAME: o nome de um cluster atual.
- PROJECT_NAME: o ID do projeto. Os IDs do projeto estão listados na seção Informações do projeto no Google Cloud painel do console.
- REGION: a região do Compute Engine em que o cluster está localizado.
- BUCKET: o bucket do Cloud Storage.
Gerar métricas do lado do cliente gRPC
É possível configurar o conector do Cloud Storage para gerar métricas relacionadas ao gRPC no Cloud Monitoring. As métricas relacionadas ao gRPC podem ajudar você a fazer o seguinte:
- Monitorar e otimizar a performance de solicitações de gRPC para o Cloud Storage
- Resolver problemas e depurar
- Conseguir insights sobre o uso e o comportamento do aplicativo
Para informações sobre como configurar o conector do Cloud Storage para gerar métricas relacionadas ao gRPC, consulte Usar métricas do lado do cliente gRPC.
Recursos
- Consulte as propriedades de configuração do conector do Cloud Storage do GitHub .
- Consulte Conectar-se ao Cloud Storage usando o gRPC para usar o conector do Cloud Storage com bibliotecas de cliente, Controles de serviço da VPC e outros cenários.
- Saiba mais sobre Cloud Storage.
- Consulte Usar o conector do Cloud Storage com o Apache Spark.
- Entenda o sistema de arquivos do Apache Hadoop .
- Consulte a referência do Javadoc.