Настройка persistent-hdfs в Spark 2.0.0
Как правильно переключаться с эфемерных на постоянные hdfs в новом кластере Spark 2.0.0 (с поддержкой сценариев ec2)?
Это то, что я делаю:
/root/ephemeral-hdfs/sbin/stop-dfs.sh
/root/persistent-hdfs/sbin/start-dfs.sh
Затем в pyspark, когда я пытаюсь загрузить простой объект json из S3, я получаю эту ошибку:
>>> df = spark.read.json(s3path)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/root/spark/python/pyspark/sql/readwriter.py", line 220, in json
return self._df(self._jreader.json(self._spark._sc._jvm.PythonUtils.toSeq(path)))
File "/root/spark/python/lib/py4j-0.10.1-src.zip/py4j/java_gateway.py", line 933, in __call__
File "/root/spark/python/pyspark/sql/utils.py", line 63, in deco
return f(*a, **kw)
File "/root/spark/python/lib/py4j-0.10.1-src.zip/py4j/protocol.py", line 312, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o34.json.
: java.lang.RuntimeException: java.net.ConnectException: Call From ip-172-31-44-104.ec2.internal/172.31.44.104 to ec2-54-162-71-31.compute-1.amazonaws.com:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
Ошибка говорит о том, что не удается найти класс java для работы с json. Ссылка, предложенная в сообщении об ошибке, гласит, что "общей причиной этого является то, что служба Hadoop не работает".
Поэтому я комментирую / добавляю следующие строки в spark/conf/spark-defaults.conf
:
#spark.executor.extraLibraryPath /root/ephemeral-hdfs/lib/native/
#spark.executor.extraClassPath /root/ephemeral-hdfs/conf
spark.executor.extraLibraryPath /root/persistent-hdfs/lib/native/
spark.executor.extraClassPath /root/persistent-hdfs/conf
Ошибки сохраняются.
Я тоже пробовал sh spark/sbin/stop-all.sh
а также sh spark/sbin/start-all.sh
и все тот же результат.
Если я останавливаю persistent-hdfs и запускаю ephemeral-hdfs (и отменяю изменения в файле conf), все работает правильно, но записывается в ephemeral-hdfs.
Как это сделать правильно?