Я смотрю в руководстве о том, как передавать команды optoinsto hadoop или yarn через переменную окружения, и там говорится:
(https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/UnixShellGuide.html)
Important End-User Environment Variables
Apache Hadoop has many environment variables that control various aspects of the software. (See hadoop-env.sh and related files.) Some of these environment variables are dedicated to helping end users manage their runtime.
HADOOP_CLIENT_OPTS
This environment variable is used for all end-user, non-daemon operations. It can be used to set any Java options as well as any Apache Hadoop options via a system property definition. For example:
HADOOP_CLIENT_OPTS="-Xmx1g -Dhadoop.socks.server=localhost:4000" hadoop fs -ls /tmp
will increase the memory and send this command via a SOCKS proxy server.
NOTE: If ‘YARN_CLIENT_OPTS’ is defined, it will replace ‘HADOOP_CLIENT_OPTS’ when commands are run with ‘yarn’.
Итак, я пытаюсьпередать имя задания, как это, и это не удается:
$ YARN_CLIENT_OPTS="-D mapred.job.name=test1" yarn jar ~/hadoop-streaming.jar -input /datasets/hotels.csv -output t0 -mapper cat -reducer wc
Error: Could not find or load main class mapred.job.name=test1
То же самое с HADOOP_CLIENT_OPTS.
Если я удаляю пробел после -D: YARN_CLIENT_OPTS = "- Dmapred.job.name =test1 "он запускается, но опция не вступила в силу.
, и простое добавление опции к команде, конечно, работает, как и ожидалось, то есть установка имени задания:
$ yarn jar ~/hadoop-streaming.jar -D mapred.job.name=test1 -input /datase/hotels.csv -output t0 -mapper cat -reducer wc
Какдействительно ли YARN_CLIENT_OPTS работает?