无法访问流集管道创建器中本地 FS 上的非 public 目录

Can't access non-public directories on local FS in streamsets pipeline creator

流集的新手。按照文档 tutorial,得到

FileNotFound: ... HADOOPFS_14 ... (permission denied)

尝试将目标位置设置为 local FS 目录并预览管道时出错(基本上是说文件无法访问或不存在 ),但相关目录的权限为 drwxrwxr-x. 2 mapr mapr。最终通过将目标文件夹权限设置为公开可写 ($chmod o+w /path/to/dir) 找到了解决方法。然而,启动 sdc 服务的用户(当我正在安装 instructions 时)应该对该目录具有写权限(是 root)。

我设置了 sdc user env. vars。使用名称 "mapr"(我尝试访问的目录的所有者),那么为什么我被拒绝了?当我设置环境时这里发生了什么。变种。对于 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 位置的内容 UI)?任何解释或特定文档的链接将不胜感激。谢谢。

查看命令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服务(在centos 7上用systemctl start sdc)显示:

mapr    157013 156955 83 10:38 ?    00:01:08 /usr/bin/java -classpath /opt/streamsets-datacollector...

并且能够验证 运行 管道,其起点和终点在本地 FS 上,这些管道由 sdc.service 文件中设置的用户和组拥有。

* 注意:初始 post 中使用的特定目录是通过 NFS (mapr 6.0) 安装的 hadoop-mapr 目录(尽管它们是 NFS 的事实应该意味着这个解决方案应该普遍适用)托管在节点 运行ning centos 7.