3

Lorsque vous tentez de lire un fichier de séquence compressée Snappy d'un cluster Spark lancé avec Google Cloud Dataproc, je reçois l'avertissement suivant:Comment activer le support du codec Snappy dans un cluster Spark lancé avec Google Cloud Dataproc?

java.lang.RuntimeException: native snappy library not available: this version of libhadoop was built without snappy support. 

Quelle est la meilleure façon pour activer le support du codec Snappy dans ce contexte?

Répondre

4

Malheureusement, l'image de lancement de Dataproc était construit sans support Snappy. J'ai ouvert un bug pour corriger ceci pour l'image suivante.

Une solution:

  1. d'abord créer un petit script shell qui installe correctement Snappy et le support de bibliothèque native pour elle. Pour cela, nous utiliserons les mêmes bibliothèques natives qu'utilise bdutil. J'ai appelé mon script setup-snappy.sh:

    #!/bin/bash 
    
    pushd "$(mktemp -d)" 
    apt-get install -q -y libsnappy1 
    wget https://storage.googleapis.com/hadoop-native-dist/Hadoop_2.7.1-Linux-amd64-64.tar.gz 
    tar zxvf Hadoop_2.7.1-Linux-amd64-64.tar.gz -C /usr/lib/hadoop/ 
    
  2. Copiez le nouveau script shell dans un seau GCS que vous possédez. Pour des fins de démonstration, supposons que le godet est dataproc-actions:

    gsutil cp ./setup-snappy.sh gs://dataproc-actions/setup-snappy.sh 
    
  3. Lors du démarrage d'un cluster, spécifiez les actions d'initialisation:

    gcloud beta dataproc clusters create --initialization-actions gs://dataproc-actions/setup-snappy.sh mycluster 
    
+0

Merci Angus, je peux confirmer cela a fonctionné pour nous! D'ailleurs, votre dernière commande a une petite faute de frappe, elle devrait être gcloud beta clusters dataproc créer --initialization-actions gs: //dataproc-actions/setup-snappy.sh mycluster' – aeneaswiener

+0

Merci d'avoir signalé cela. Mise à jour de la commande –

0

Je n'ai pas fait moi-même, mais this post devrait résoudre votre problème:

Pour l'installation et la configuration d'autres composants au niveau du système bdutil prend en charge un mécanisme d'extension. Un bon exemple d'extensions est l'extension Spark fournie avec bdutil: extensions/spark/spark_env.sh. Lors de l'exécution bdutil extensions sont ajoutées avec le drapeau par exemple -e, déployer Spark avec Hadoop:

./bdutil extensions -e/étincelles/spark_env.sh déployer