Как включить поддержку кодека Snappy в кластере Spark, запущенном с помощью Google Cloud Dataproc?

При попытке прочитать сжатый файл последовательности Snappy из кластера Spark, запущенного с помощью Google Cloud Dataproc, я получаю следующее предупреждение:

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

Каков наилучший способ включить поддержку кодека Snappy в этом контексте?


person aeneaswiener    schedule 28.09.2015    source источник


Ответы (2)


К сожалению, стартовый образ Dataproc был создан без поддержки Snappy. Я открыл ошибку, чтобы исправить это для следующего изображения.

Обходной путь:

  1. Сначала создайте небольшой сценарий оболочки, который правильно установит snappy и поддержку встроенной библиотеки. Для этого мы будем использовать те же родные библиотеки, что и bdutil. Я назвал свой скрипт 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. Скопируйте новый сценарий оболочки в корзину GCS, которой вы владеете. В демонстрационных целях предположим, что ведро dataproc-actions:

    gsutil cp ./setup-snappy.sh gs://dataproc-actions/setup-snappy.sh
    
  3. При запуске кластера укажите действия по инициализации:

    gcloud beta dataproc clusters create --initialization-actions gs://dataproc-actions/setup-snappy.sh mycluster
    
person Angus Davis    schedule 29.09.2015
comment
Спасибо, Ангус, я могу подтвердить, что это сработало для нас! Кстати, в вашей последней команде есть небольшая опечатка, должно быть gcloud beta dataproc clusters create --initialization-actions gs://dataproc-actions/setup-snappy.sh mycluster - person aeneaswiener; 30.09.2015

Я не делал этого сам, но этот пост должен решить вашу проблему:

Для установки и настройки других компонентов системного уровня bdutil поддерживает механизм расширения. Хорошим примером расширений является расширение Spark в комплекте с bdutil: extensions/spark/spark_env.sh. При запуске расширения bdutil добавляются с флагом -e, например, для развертывания Spark с помощью Hadoop:

./bdutil -e extensions/spark/spark_env.sh развернуть

person Ryan    schedule 29.09.2015