Не удается получить доступ к непубличным каталогам на локальной FS в создателе конвейера потоковых наборов
Новое в streamsets. После учебника документации, получал
FileNotFound: ... HADOOPFS_14 ... (permission denied)
ошибка при попытке установить место назначения как local FS
каталог и предварительный просмотр конвейера (в основном говоря, либо файл не доступен или не существует), но разрешения для рассматриваемого каталога drwxrwxr-x. 2 mapr mapr
, В конце концов нашел обходной путь, установив разрешения для папки назначения на общедоступную запись ($chmod o+w /path/to/dir
). Тем не менее, пользователь, который начал sdc
служба (пока я следовал инструкциям по установке) должна была иметь права на запись в этот каталог (была root
).
Я установил SDK пользователя Env. перемен. использовать имя "mapr" (владелец каталогов, к которым я пытаюсь получить доступ), так почему я получил отказ? Что здесь происходит, когда я установил env. вары. для SDC (потому что он, кажется, ничего не делает)?
Это фрагмент того, что мой /opt/streamsets-datacollector/libexec/sdcd-env.sh
файл выглядит так:
# user that will run the data collector, it must exist in the system
#
export SDC_USER=mapr
# group of the user that will run the data collector, it must exist in the system
#
export SDC_GROUP=mapr
Итак, мой вопрос, что определяет разрешения для sdc
сервис (который, как я полагаю, используется для доступа к местоположениям FS через веб-интерфейс streamsets)? Любые объяснения или ссылки на конкретные документы будут оценены. Благодарю.
1 ответ
Глядя на команду ps -ef | grep sdc
чтобы выяснить, кто система считает владельцем процесса sdc, обнаружил, что он был указан как:
sdc 36438 36216 2 09:04 ? 00:01:28 /usr/bin/java -classpath /opt/streamsets-datacollector
Так что кажется, что редактирование sdcd-env.sh
не имел никакого эффекта. Что работало, так это редактирование /usr/lib/systemd/system/sdc.service
файл, который будет выглядеть (обратите внимание, что пользователь и группа установлены как пользователь, которому принадлежат каталоги, которые будут использоваться в конвейере потоковых наборов):
[Unit]
Description=StreamSets Data Collector (SDC)
[Service]
User=mapr
Group=mapr
LimitNOFILE=32768
Environment=SDC_CONF=/etc/sdc
Environment=SDC_HOME=/opt/streamsets-datacollector
Environment=SDC_LOG=/var/log/sdc
Environment=SDC_DATA=/var/lib/sdc
ExecStart=/opt/streamsets-datacollector/bin/streamsets dc -verbose
TimeoutSec=60
Затем перезапустите службу SDC (с systemctl start sdc
на сентос 7) показал:
mapr 157013 156955 83 10:38 ? 00:01:08 /usr/bin/java -classpath /opt/streamsets-datacollector...
и был в состоянии проверить и запустить конвейеры с источниками и назначениями на локальной FS, которые принадлежат пользователю и группе, установленным в sdc.service
файл.
* ПРИМЕЧАНИЕ: конкретные каталоги, использованные в первоначальном посте, - это каталоги hadoop-mapr, смонтированные через NFS (mapr 6.0) (хотя тот факт, что они являются NFS, означает, что это решение должно применяться в целом), размещенный на узлах, работающих под управлением Centos 7.