
KrivdaTheTriewe
27.07.2017
13:39:22
Ребята из Rambler сделали отдельню группу по Apache Spark @moscowspark , предлагаю присоединиться!

Nick
27.07.2017
14:04:42
ну не
пусть к нам идут

Grigory
27.07.2017
14:16:32
Вбрось

Google

Grigory
27.07.2017
14:16:40
на правах рекламы
@krivdaallstarts
ну или я могу вбросить

KrivdaTheTriewe
27.07.2017
14:24:53
Сразу вопрос, писал ли кто эффективно паркет стримингом, так, чтобы оно как-то буфферизировало запись , а не каждый микробатч записывало , решает ли эту задачу новый стракчерал стриминг ?

Grigory
27.07.2017
14:28:09
я мб попохжу отвечу как с орком коллега делал

KrivdaTheTriewe
27.07.2017
14:29:56

Grigory
27.07.2017
14:48:50
он _хотел_ этим занятья но корчое мы решили не далть это

Olga
28.07.2017
07:40:37
Привет всем
Есть pyspark, который упорно работает на одной машине вместо четырех при работе через жупайтер. Стоит hortonworks HDP 2.6, YARN 2.7.3, Spark2 2.1.1
Если запускать через спарк-сабмит тестовый пример
PYSPARK_DRIVER_PYTHON=python3 spark-submit --master yarn --deploy-mode cluster --driver-memory 16g --executor-memory 16g --executor-cores 6 pi.py
то запускается, все ок, действительно работает распределенно
Через жупайтер даже если при запуске
SparkSession.builder.appName("testing").master('yarn').getOrCreate()
то приложение все равно spark.master=local[*]
Вообще конфиги прописываю в амбари, но есть ощущение иногда, что они игнорятся
В чем может быть проблема? Что сделать, чтобы работало через jupyter как надо? ?

Andrew
28.07.2017
07:58:35
а как jupyter запускаете?

Olga
28.07.2017
08:13:58
а как jupyter запускаете?
jupyter вместе с pyspark'ом запускается
в переменных окружения драйвер прописан
SPARK_HOME=/usr/hdp/current/spark2-client
SPARK_CLASSPATH=/usr/share/java/postgresql-42.1.1.jar
PYSPARK_PYTHON=python3
PYSPARK_DRIVER_PYTHON=jupyter
SPARK_MAJOR_VERSION=2
PATH=/usr/hdp/current/spark2-client/bin:/usr/lib:/usr/local/anaconda3/bin
PYSPARK_SUBMIT_ARGS= --master yarn --deploy-mode client --driver-memory 16g --executor-memory 16g --executor-cores 3 --num-executors 11 --conf spark.executor.extraClassPath=/usr/share/java/postgresql-42.1.1.jar --driver-class-path /usr/share/java/postgresql-42.1.1.jar --jars /usr/share/java/postgresql-42.1.1.jar
PYTHONPATH=/usr/hdp/current/spark2-client/python:
PYSPARK_DRIVER_PYTHON_OPTS=notebook --allow-root

Andrew
28.07.2017
08:17:41
а HADOOP_CONF_DIR прописан где-нибудь?

Google

Olga
28.07.2017
08:19:48

Andrew
28.07.2017
08:20:19
echo $HADOOP_CONF_DIR что выведет?

Olga
28.07.2017
08:20:51
¯\_(ツ)_/¯

Grigory
28.07.2017
08:27:20
я вот не уверен что ему действительно нужны конф диры

Andrew
28.07.2017
08:29:16
типа он по дефолту должен знать, как к ярну ломиться?

Alexander
28.07.2017
08:30:48
у него в $SPARK_CONF могут лежать необходимые *-site.xml для YARN/HDFS

Grigory
28.07.2017
08:31:49
да на всякий случай думаю все надо засетапить попробовать

Olga
28.07.2017
08:36:39
ок, сейчас пропишу $HADOOP_HOME и $HADOOP_CONF_DIR
добавила, нужно перезапустить все или оно и так подцепит переменные?

Andrew
28.07.2017
08:44:19
в амбари добавляли?

Olga
28.07.2017
08:44:49
в амбари есть
export HADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-{{hadoop_conf_dir}}}

Andrew
28.07.2017
08:45:08
по быстрому можно просто export HADOOP_CONF_DIR=... и посмотреть, что получится

Olga
28.07.2017
08:45:30
в смысле?

Andrew
28.07.2017
08:46:30
в терминале пишете export HADOOP_CONF_DIR=... , проверяете echo $HADOOP_CONF_DIR и запускаете юпитер

Olga
28.07.2017
08:47:04

Grigory
28.07.2017
08:47:45
в джупитере можно дернуть объект хадуп конфига
и распечатать его свйоства и адреса хадуп кор и сайт кор
тогда станет ясно чего не хватает
из спарк сешна он достается

Google


Olga
28.07.2017
08:53:19
sc.getConf().getAll() это?
[('spark.history.kerberos.keytab', 'none'),
('spark.eventLog.enabled', 'true'),
('spark.driver.memory', '16G'),
('spark.app.id', 'local-1501231645396'),
('spark.history.ui.port', '18081'),
('spark.driver.extraLibraryPath',
'/usr/hdp/current/hadoop-client/lib/native:/usr/hdp/current/hadoop-client/lib/native/Linux-amd64-64'),
('spark.yarn.queue', 'default'),
('spark.executor.id', 'driver'),
('spark.app.name', 'testing'),
('hive.metastore.warehouse.dir',
'file:/home/jupyter/notebooks/spark-warehouse'),
('spark.driver.host', '*******'),
('spark.executor.extraLibraryPath',
'/usr/hdp/current/hadoop-client/lib/native:/usr/hdp/current/hadoop-client/lib/native/Linux-amd64-64'),
('spark.driver.port', '37460'),
('spark.history.fs.logDirectory', 'hdfs:///spark2-history/'),
('spark.yarn.historyServer.address', '***.ru:18081'),
('spark.sql.catalogImplementation', 'hive'),
('spark.history.kerberos.principal', 'none'),
('spark.rdd.compress', 'True'),
('spark.history.provider',
'org.apache.spark.deploy.history.FsHistoryProvider'),
('spark.driver.extraClassPath', '/usr/share/java/postgresql-42.1.1.jar'),
('spark.executor.extraClassPath', '/usr/share/java/postgresql-42.1.1.jar'),
('spark.serializer.objectStreamReset', '100'),
('spark.master', 'local[*]'),
('spark.submit.deployMode', 'client'),
('spark.eventLog.dir', 'hdfs:///spark2-history/')]


Andrew
28.07.2017
09:02:40
т.е., подхватилось всё, кроме spark.master

Olga
28.07.2017
09:04:21
ага. даже если
from pyspark.sql import SparkSession
spark = SparkSession.builder\
.master('yarn')\
.appName("testing")\
.getOrCreate()
все равно локал
ну то есть в sc.getConf().getAll() он конечно yarn, но в итоге local

Andrew
28.07.2017
09:05:20
а вы запускаете юпитер просто строкой jupyter notebook, я правильно понял?

Olga
28.07.2017
09:06:34

Grigory
28.07.2017
09:06:53
JupyterSparkSession пробовался?
можно ммм руками показать где конфиги хадупа лежат
кстате говоря
может не yarn нужен а yarn-client ?

Olga
28.07.2017
09:08:06

Andrew
28.07.2017
09:08:06
м.б., попробуете вот так
PYSPARK_PYTHON=python3 PYSPARK_DRIVER_PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS='notebook' pyspark --master yarn --driver-memory 20G --conf "spark.driver.maxResultSize=7G"

Olga
28.07.2017
09:09:36

Andrew
28.07.2017
09:10:41
не-не, вы —master не в OPTS прописываете, а прям как аргумент в pyspark передайте

Grigory
28.07.2017
09:11:11
JupyterSparkSession
.builder()
.jupyter()
.yarn("HADOOP_CONF_DIR here")
.master("yarn-client")
.appName("supaname")
.getOrCreate()

Olga
28.07.2017
09:11:15
не-не, вы —master не в OPTS прописываете, а прям как аргумент в pyspark передайте
так это же уже и так прописано
PYSPARK_SUBMIT_ARGS= --master yarn --deploy-mode client --driver-memory 16g --executor-memory 16g --executor-cores 3 --num-executors 11 --conf spark.executor.extraClassPath=/usr/share/java/postgresql-42.1.1.jar --driver-class-path /usr/share/java/postgresql-42.1.1.jar --jars /usr/share/java/postgresql-42.1.1.jar

Grigory
28.07.2017
09:11:20
но я могу ошибаться; я на питоне не пишу : D

Google

Olga
28.07.2017
09:11:51

Grigory
28.07.2017
09:12:12
ах
это скала...
простите
ну попытка перетащить на скалу была хороша

Andrew
28.07.2017
09:13:41

Olga
28.07.2017
09:14:13

Andrew
28.07.2017
09:15:00
ну, тогда не знаю

Andrei
28.07.2017
09:20:54
pyspark запускается из консоли и подхватывает все эти переменные, видимо.

Andrew
28.07.2017
09:21:11
ЧСХ, гуглеж выдал вот такое
https://gist.github.com/cogfor/903c911c9b1963dcd530bbc0b9d9f0ce
--master yarn-client видимо, Григорий таки прав

Olga
28.07.2017
09:33:56

Alexander
28.07.2017
09:39:16
разделение yarn-client на master и deployMode произошло вроде с 1.6.0, а тут версия спарка какая?

Olga
28.07.2017
09:39:39

Alexander
28.07.2017
09:40:05
тогда странно, на —master yarn-client должно ругаться что deprecated

Olga
28.07.2017
09:40:56
ок, тогда оставлю yarn) хорошо не успела поменять

Grigory
28.07.2017
09:43:32
не работает?
да мисконфиг какой-то