Apache Spark Streaming - проблемы при записи в HBase. Исправляем ошибку "java.io.IOException: java.lang.reflect.InvocationTargetException"

При попытке записи данных в HBase возникла проблема запуска кода через spark-submit. При этом этот же код правильно отрабатывал локально через spark-shell.

Ошибка следующая: "java.io.IOException: java.lang.reflect.InvocationTargetException... Caused by: java.lang.NoClassDefFoundError: org/apache/htrace/Trace"

Проблема в том, что Spark не включает в себя сторонние зависимости. Тоесть по умолчанию он не знает о местоположении jars архивов для драйвера HBase. Интерестно то что Spark включает в себя все необходимые зависимости для работы с Hive и для работы с этой БД. ничего подключать дополнительно не нужно.

Для решения этой несправедливости необходимо добавить в classpath путь к jar-архиву драйвера к HBase. Вот как это должно выглядеть:
spark-submit --master yarn-cluster --driver-class-path /etc/hbase/conf:/opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core-3.1.0-incubating.jar ... 
Есть также возможность добавить путь к Jar архиву в конфиг Spark-a. Для этого в файл /etc/spark/conf/spark-defaults.conf нужно добавить следующую строку:
spark.executor.extraClassPath=/opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core-3.1.0-incubating.jar
Также можно добавить эту строку с админки СМ(У меня этот вариант не заработал).
Для этого необходимо:

  • Зайти в админку СM
  • Перейти на страницу Spark-a
  • Перейти на страницу настроек
  • Написать "gateway" в поиске
  • В пункте "Spark Client Advanced Configuration Snippet (Safety Valve) for spark-conf/spark-defaults.conf" добавить строку: spark.executor.extraClassPath=/opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core-3.1.0-incubating.jar
  • Сохранить
  • Задеплоить изменения настроек
Полезные ссылки:
Class not found running Spark sample hbase



Коментарі

Популярні дописи з цього блогу

Минимальные требование для кластера Hadoop(with Spark)

Apache Spark Resource Management и модель приложений от YARN

Apache Spark - основные команды