Опция Apache livy Archives не работает в режиме кластера - PullRequest
0 голосов
/ 21 апреля 2019

Я использую сервер livy (0.6) для отправки задания на спарк кластеру spark hadoop (spark-2.3.2) в режиме кластера.При подаче архивов на вход json архив не копируется в рабочую папку на драйвере.

Архивы - это библиотеки R, которые не установлены на рабочих узлах.Поэтому мне нужно отправить их в рабочую папку и добавить их в среду выполнения R.

При отправке задания спарка с граничного узла с помощью --archives он успешно копирует библиотеки libs в рабочую папку в исполнителях.Однако из пограничного узла при использовании --conf spark.yarn.dist.archives = rlibs.zip файлы не копируются.Причина, по которой я попытался это сделать, заключается в том, что Ливий также переводит входные данные архивов в опцию spark.yarn.dist.archives.Невозможно указать livy добавить его как --archives вместо --conf

По сути, почему --conf spark.yarn.dist.archives не работает должным образом, тогда как опция --archives cmd дляspark submit работает нормально, когда задание spark отправляется в режиме кластера

Ниже приведена попытка команды spark-sumbit.Добавление местоположения R libs в --archives works

spark-submit --conf spark.executor.instances=2 --conf spark.yarn.submit.waitAppCompletion=false --conf spark.submit.deployMode=cluster --conf spark.yarn.dist.archives=hdfs:///hdfs_location/rlib.zip#RLIBS --conf spark.master=yarn --conf spark.executor.cores=2 --conf spark.yarn.appMasterEnv.R_LIBS_USER=./RLIBS/rlib/ --conf spark.executorEnv.R_LIBS_USER=./RLIBS/rlib --conf spark.driver.extraLibraryPath=/shared_lib_path/ /home_folder/script.R

Соответствующие вызовы API livy

import json, pprint, requests, textwrap
host = 'http://hostname:8998'
config_map = {
'spark.hadoop.yarn.timeline-service.enabled' : False,
'spark.executor.cores' : 2,
'spark.executor.instances' : 2,
'spark.dynamicAllocation.enabled' : False,
'spark.yarn.appMasterEnv.R_LIBS_USER' : './RLIBS/rlib/',
'spark.executorEnv.R_LIBS_USER' : './RLIBS/rlib/',
'spark.driver.extraLibraryPath' : '/usr/lib/shared_lib_path',
'spark.submit.deployMode' : 'cluster'
}
data = {
    'file' : 'hdfs:///script.R',
    'archives' : ['hdfs:///hdfs_location/rlib.zip#RLIBS'],
    'conf' : config_map,
  }
headers = {'Content-Type': 'application/json'}
r = requests.post(host + '/batches', data=json.dumps(data), 
     headers=headers)
r.json() 
...