O conetor do Cloud Storage biblioteca Java de código aberto permite-lhe executar tarefas do Apache Hadoop ou Apache Spark diretamente em dados no Cloud Storage.
Vantagens do conetor do Cloud Storage
- Acesso direto aos dados: armazene os seus dados no Cloud Storage e aceda aos mesmos diretamente. Não precisa de transferi-lo primeiro para o HDFS.
- Compatibilidade com HDFS: pode aceder aos seus dados no Cloud Storage através do prefixo
gs://
em vez dehdfs://
. - Interoperabilidade: o armazenamento de dados no Cloud Storage permite a interoperabilidade perfeita entre o Spark, o Hadoop e os serviços Google.
- Acessibilidade dos dados: quando encerra um cluster do Hadoop, ao contrário do HDFS, continua a ter acesso aos seus dados no Cloud Storage.
- Elevada disponibilidade de dados: os dados armazenados no Cloud Storage estão altamente disponíveis e são replicados globalmente sem perda de desempenho.
- Sem sobrecarga de gestão de armazenamento: ao contrário do HDFS, o Cloud Storage não requer manutenção de rotina, como verificar o sistema de ficheiros, ou atualizar ou reverter para uma versão anterior do sistema de ficheiros.
- Início rápido: no HDFS, uma tarefa MapReduce não pode ser iniciada até que o
NameNode
esteja fora do modo de segurança, um processo que pode demorar alguns segundos a vários minutos, consoante a dimensão e o estado dos seus dados. Com o Cloud Storage, pode iniciar o seu trabalho assim que os nós de tarefas forem iniciados, o que gera uma poupança de custos significativa ao longo do tempo.
Configuração do conetor em clusters do Dataproc
O conetor do Cloud Storage é instalado por predefinição em todos os nós do cluster do Dataproc no diretório /usr/local/share/google/dataproc/lib/
. As subsecções
seguintes descrevem os passos que pode seguir para concluir
a configuração do conetor em clusters do Dataproc.
Conta de serviço da VM
Quando executa o conetor em nós do cluster do Dataproc e noutras VMs do Compute Engine, a propriedade google.cloud.auth.service.account.enable
é definida como false
por predefinição, o que significa que não precisa de configurar as credenciais da conta de serviço da VM para o conetor. As credenciais da conta de serviço da VM são fornecidas pelo servidor de metadados da VM.
A conta de serviço da VM do Dataproc tem de ter autorização para aceder ao seu contentor do Cloud Storage.
Versões de conetores selecionadas pelo utilizador
As versões predefinidas do conetor do Cloud Storage usadas nas imagens mais recentes instaladas em clusters do Dataproc estão listadas nas páginas de versão de imagem. Se a sua aplicação depender de uma versão do conector não predefinida implementada no seu cluster, pode realizar uma das seguintes ações para usar a versão do conector selecionada:
- Crie um cluster com a flag
--metadata=GCS_CONNECTOR_VERSION=x.y.z
, que atualiza o conetor usado pelas aplicações em execução no cluster para a versão do conetor especificada. - Inclua e mude a localização das classes de conetores e das dependências de conetores para a versão que está a usar no JAR da sua aplicação. A mudança de localização é necessária para evitar um conflito entre a versão do conector implementada e a versão do conector predefinida instalada no cluster do Dataproc. Consulte também o exemplo de mudança de localização das dependências do Maven.
Configuração do conetor em clusters que não são do Dataproc
Pode seguir os passos abaixo para configurar o conetor do Cloud Storage num cluster que não seja do Dataproc, como um cluster do Apache Hadoop ou Spark, que usa para mover dados do HDFS no local para o Cloud Storage.
Transfira o conetor.
- Para transferir o conetor do Cloud Storage:
- Para usar uma versão
latest
localizada no contentor do Cloud Storage (não é recomendado usar uma versãolatest
para aplicações de produção): - Para usar uma versão específica
do seu contentor do Cloud Storage, substitua as versões do Hadoop e do
conetor do Cloud Storage no
gcs-connector-HADOOP_VERSION-CONNECTOR_VERSION.jar
padrã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 Apache Maven,
transfira um JAR sombreado com o sufixo
-shaded
no nome.
- Para usar uma versão
- Para transferir o conetor do Cloud Storage:
Instale o conetor.
Siga as instruções do GitHub para instalar, configurar e testar o conetor do Cloud Storage.
Utilização do conetor
Pode usar o conetor para aceder aos dados do Cloud Storage das seguintes formas:
- Numa aplicação Spark, PySpark ou Hadoop com o prefixo
gs://
- Num shell do Hadoop com
hadoop fs -ls gs://bucket/dir/file
- No explorador do Cloud Storage Na Google Cloud consola
- Usando comandos do SDK do Google Cloud, como:
Utilização de Java
O conetor do Cloud Storage requer o Java 8.
Segue-se uma secção de gestão de dependências do POM do Maven de exemplo para o conetor do Cloud Storage. Para mais informações, consulte o artigo Gestão 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>
Apoio técnico de conetores
O conetor do Cloud Storage é suportado pela Google Cloud para utilização com Google Cloud produtos e exemplos de utilização. Quando usado com o Dataproc, é suportado ao mesmo nível que o Dataproc. Para mais informações, consulte Obtenha apoio técnico.
Ligue-se ao Cloud Storage através do gRPC
Por predefinição, o conetor do Cloud Storage no Dataproc usa a API JSON do Cloud Storage. Esta secção mostra-lhe como ativar o conetor do Cloud Storage para usar o gRPC.
Considerações de utilização
A utilização do conetor do Cloud Storage com gRPC inclui as seguintes considerações:
- Localização do contentor regional: o gRPC pode melhorar as latências de leitura apenas quando as VMs do Compute Engine e os contentores do Cloud Storage estão localizados na mesma região do Compute Engine.
- Tarefas com muitas leituras: o gRPC pode oferecer latências de leitura melhoradas para leituras de longa duração e pode ajudar em cargas de trabalho com muitas leituras. Não é recomendado para aplicações que criam um canal gRPC, executam um cálculo curto e, em seguida, fecham o canal.
- Pedidos não autenticados: o gRPC não suporta pedidos não autenticados.
Requisitos
Os seguintes requisitos aplicam-se quando usa o gRPC com o conector do Cloud Storage:
A rede VPC do cluster do Dataproc tem de suportar a conetividade direta. Isto significa que as rotas e as regras de firewall da rede têm de permitir que o tráfego de saída alcance
34.126.0.0/18
e2001:4860:8040::/42
.- Se o seu cluster do Dataproc usar redes IPv6, tem de configurar uma sub-rede IPv6 para instâncias de VMs. Para mais informações, consulte o artigo Configurar IPv6 para instâncias e modelos de instâncias.
Quando criar um cluster do Dataproc, tem de usar a versão
2.2.23
ou posterior do conetor do Cloud Storage com a versão2.1.56+
da imagem, ou a versão v3.0.0 ou posterior do conetor do Cloud Storage com a versão 2.2.0 ou posterior da imagem. A versão do conetor do Cloud Storage instalada em cada versão da imagem do Dataproc está listada nas páginas da versão da imagem do Dataproc.- Se criar e usar um
cluster virtual do Dataproc no GKE
para os seus pedidos do gRPC Cloud Storage, recomenda-se a versão
1.28.5-gke.1199000
do GKE com ogke-metadata-server 0.4.285
. Esta combinação suporta a conetividade direta.
- Se criar e usar um
cluster virtual do Dataproc no GKE
para os seus pedidos do gRPC Cloud Storage, recomenda-se a versão
O administrador da sua organização ou si tem de conceder funções de gestão de identidades e acessos que incluam as autorizações necessárias para configurar e fazer pedidos gRPC ao conector do Cloud Storage. Estas funções podem incluir o seguinte:
- Função de utilizador: função Editor do Dataproc concedida aos utilizadores para lhes permitir criar clusters e enviar tarefas
- Função da conta de serviço: utilizador de objetos de armazenamento função concedida à conta de serviço da VM para permitir que as aplicações em execução nas VMs do cluster vejam, leiam, criem e escrevam objetos do Cloud Storage.
Ative o gRPC no conetor do Cloud Storage
Pode ativar o gRPC no conetor do Cloud Storage ao nível do cluster ou da tarefa. Depois de ativado no cluster, os pedidos de leitura do conector do Cloud Storage usam o gRPC. Se estiver ativado numa tarefa em vez de ao nível do cluster, os pedidos de leitura do conetor do Cloud Storage usam gRPC apenas para a tarefa.
Ative um cluster
Para ativar o gRPC no conetor do Cloud Storage ao nível do cluster,
defina a propriedade core:fs.gs.client.type=STORAGE_CLIENT
quando
criar um cluster do Dataproc.
Assim que o gRPC estiver ativado ao nível do cluster, os pedidos de leitura feitos pelo conetor do Cloud Storage e executados 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 o seguinte:
- CLUSTER_NAME: especifique um nome para o seu cluster.
- PROJECT_NAME: o ID do projeto onde o cluster está localizado. Os IDs dos projetos estão listados na secção Informações do projeto no Google Cloud painel de controloda consola.
- REGION: especifique uma região do Compute Engine onde o cluster vai estar localizado.
Ative um trabalho
Para ativar o gRPC no conetor do Cloud Storage para uma tarefa específica, inclua --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT
quando enviar uma tarefa.
Exemplo: execute uma tarefa num cluster existente que use o gRPC para ler a partir do Cloud Storage.
Crie um script
/tmp/line-count.py
PySpark local que use o gRPC para ler um ficheiro de texto do Cloud Storage e gerar o número de linhas no ficheiro.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)) EOF
Crie um
/tmp/line-count-sample.txt
ficheiro de texto local.cat <<EOF >"/tmp/line-count-sample.txt" Line 1 Line 2 line 3 EOF
Carregue ficheiros
/tmp/line-count.py
e/tmp/line-count-sample.txt
locais para o seu contentor no Cloud Storage.gcloud storage cp /tmp/line-count* gs://BUCKET
Execute a tarefa
line-count.py
no seu cluster. Defina--properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT
como para ativar o gRPC para pedidos de leitura do conetor 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 o seguinte:
- CLUSTER_NAME: o nome de um cluster existente.
- PROJECT_NAME: o ID do seu projeto. Os IDs dos projetos estão listados na secção Informações do projeto no Google Cloud painel de controlo da consola.
- REGION: a região do Compute Engine onde o cluster está localizado.
- BUCKET: o seu contentor do Cloud Storage.
Gere métricas do lado do cliente gRPC
Pode configurar o conetor do Cloud Storage para gerar métricas relacionadas com gRPC no Cloud Monitoring. As métricas relacionadas com o gRPC podem ajudar a fazer o seguinte:
- Monitorize e otimize o desempenho dos pedidos gRPC para o Cloud Storage
- Resolva e depure problemas
- Obtenha estatísticas sobre a utilização e o comportamento das aplicações
Para ver informações sobre como configurar o conector do Cloud Storage para gerar métricas relacionadas com gRPC, consulte Use métricas do lado do cliente gRPC.
Recursos
- Consulte as propriedades de configuração do conetor do GitHub Cloud Storage.
- Consulte o artigo Estabeleça ligação ao Cloud Storage através do gRPC para usar o conector do Cloud Storage com bibliotecas de cliente, VPC Service Controls e outros cenários.
- Saiba mais sobre o Cloud Storage.
- Consulte o artigo Use o conetor do Cloud Storage com o Apache Spark.
- Compreenda o sistema de ficheiros Apache Hadoop .
- Veja a referência Javadoc.