Streamsets Mapr FS origin/dest。 KerberosPrincipal 异常(使用 hadoop 模拟(在 mapr 6.0 中))
Streamsets Mapr FS origin/dest. KerberosPrincipal exception (using hadoop impersonation (in mapr 6.0))
我正在尝试执行从 mapr fs origin
到 mapr fs destination
的简单数据移动(这不是我的用例,只是为了测试目的而执行此简单移动)。尝试 validate
此管道时,我在暂存区看到的错误消息是:
HADOOPFS_11 - Cannot connect to the filesystem. Check if the Hadoop FS location: 'maprfs:///mapr/mycluster.cluster.local' is valid or not: 'java.io.IOException: Provided Subject must contain a KerberosPrincipal
使用 hadoop fs URI
字段的不同变体(例如 mfs:///mapr/mycluster.cluster.local、maprfs:///mycluster.cluster.local)不会似乎有帮助。尝试验证后查看日志,我看到
2018-01-04 10:28:56,686 mfs2mfs/mapr2sqlserver850bfbf0-6dc0-4002-8d44-b73e33fcf9b3 INFO Created source of type: com.streamsets.pipeline.stage.origin.maprfs.ClusterMapRFSSource@16978460 DClusterSourceOffsetCommitter *admin preview-pool-1-thread-3
2018-01-04 10:28:56,697 mfs2mfs/mapr2sqlserver850bfbf0-6dc0-4002-8d44-b73e33fcf9b3 INFO Error connecting to FileSystem: java.io.IOException: Provided Subject must contain a KerberosPrincipal ClusterHdfsSource *admin preview-pool-1-thread-3
java.io.IOException: Provided Subject must contain a KerberosPrincipal
....
2018-01-04 10:20:39,159 mfs2mfs/mapr2mapr850bfbf0-6dc0-4002-8d44-b73e33fcf9b3 INFO Authentication Config: ClusterHdfsSource *admin preview-pool-1-thread-3
2018-01-04 10:20:39,159 mfs2mfs/mapr2mapr850bfbf0-6dc0-4002-8d44-b73e33fcf9b3 ERROR Issues: Issue[instance='MapRFS_01' service='null' group='HADOOP_FS' config='null' message='HADOOPFS_11 - Cannot connect to the filesystem. Check if the Hadoop FS location: 'maprfs:///mapr/mycluster.cluster.local' is valid or not: 'java.io.IOException: Provided Subject must contain a KerberosPrincipal''] ClusterHdfsSource *admin preview-pool-1-thread-3
2018-01-04 10:20:39,169 mfs2mfs/mapr2mapr850bfbf0-6dc0-4002-8d44-b73e33fcf9b3 INFO Validation Error: Failed to configure or connect to the 'maprfs:///mapr/mycluster.cluster.local' Hadoop file system: java.io.IOException: Provided Subject must contain a KerberosPrincipal HdfsTargetConfigBean *admin 0 preview-pool-1-thread-3
java.io.IOException: Provided Subject must contain a KerberosPrincipal
....
然而,据我所知,系统不是 运行 Keberos
,所以这个错误信息让我有点困惑。在 sdc environment variable file 中为本机 mapr 身份验证取消注释 #export SDC_JAVA_OPTS="-Dmaprlogin.password.enabled=true ${SDC_JAVA_OPTS}"
似乎无助于解决问题(即使在 运行 streamsets mapr 安装脚本之前重新安装和注释此行)。
有谁知道发生了什么以及如何解决它?谢谢。
这个答案是在 mapr 社区 forums 上提供的,对我有用(使用 mapr v6.0
)。请注意,此处的说明 与流集文档当前提供的说明不同。在这些说明中,我以用户 root
.
身份登录
按照文档安装流集(和 mapr 先决条件)后...
- 将流集
$SDC_DIST
或 $SDC_HOME
位置的所有者更改为 mapr 用户(或您计划用于 hadoop 模拟的任何其他用户):$chown -R mapr:mapr $SDC_DIST
(对于我这是 /opt/streamsets-datacollector 目录。)。对 $SDC_CONF
(对我来说是 /etc/sdc
)以及 /var/lib/sdc
和 var/log/sdc
. 做同样的事情
在$SDC_DIST/libexec/sdcd-env.sh
中,将用户名和组名(靠近文件顶部)设置为mapr用户"mapr"并启用mapr密码登录。该文件最终应如下所示:
# 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
....
# Indicate that MapR Username/Password security is enabled
export SDC_JAVA_OPTS="-Dmaprlogin.password.enabled=true ${SDC_JAVA_OPTS}
编辑文件 /usr/lib/systemd/system/sdc.service
使其看起来像:
[Service]
User=mapr
Group=mapr
$cd
到 /etc/systemd/system/
并创建一个名为 sdc.service.d
的目录。在该目录中,创建一个文件(使用 any 名称)并添加内容(不带空格):
Environment=SDC_JAVA_OPTS=-Dmaprlogin.passowrd.enabled=true
如果您使用的是 mapr 的 sasl ticket auth。系统(或类似的东西),在 运行 流集的节点上为该用户生成一张票。在这种情况下,使用 $maprlogin password
命令。
最后,重启sdc服务:$systemctl deamon-reload
然后$systemctl retart sdc
。
运行 类似 $ps -aux | grep sdc | grep maprlogin
的东西来检查 sdc 进程是否由 mapr 拥有并且 -Dmaprlogin.passowrd.enabled=true
参数已成功设置。完成后,应该能够 validate/run maprFS 以批处理模式在 streamsets pipeline builder 中进行 maprFS 操作。
** 注意:如果使用 Hadoop Configuration Directory
参数。而不是 Hadoop FS URI
,请记住将文件放在 $HADOOP_HOME/conf
目录中(eg.hadoop-site.xml、yarn-site.xml 等)(在mapr,类似 /opt/mapr/hadoop/hadoop-<version>/etc/hadoop/
) 软linked 或硬复制到目录 $SDC_DIST/resource/<some hadoop config dir. you made need to create>
(我只是在目录中复制 eberything)并将此路径添加到 Hadoop Configuration Directory
参数。为您的 MaprFS(或 HadoopFS)。在 sdc web UI Hadoop 配置目录框中,它看起来像 Hadoop Configuration Directory: <the directory within $SDC_DIST/resources/ that holds the hadoop files>
.
** 注意: 如果您仍在记录表单的错误
2018-01-16 14:26:10,883
ingest2sa_demodata_batch/ingest2sademodatabatchadca8442-cb00-4a0e-929b-df2babe4fd41
ERROR Error in Slave Runner: ClusterRunner *admin
runner-pool-2-thread-29
com.streamsets.datacollector.runner.PipelineRuntimeException:
CONTAINER_0800 - Pipeline
'ingest2sademodatabatchadca8442-cb00-4a0e-929b-df2babe4fd41'
validation error : HADOOPFS_11 - Cannot connect to the filesystem.
Check if the Hadoop FS location: 'maprfs:///' is valid or not:
'java.io.IOException: Provided Subject must contain a
KerberosPrincipal'
您可能还需要将 -Dmaprlogin.password.enabled=true
添加到流水线的 /cluster/Worker Java Options
选项卡,用于源和目标 hadoop FS 阶段。
** 在 mapr 社区 link 播放的视频 link 还说要为 sdc 用户生成一个 mapr 票证(当 [=102= 时 sdc 进程运行的默认用户) ] 作为一项服务),但我没有这样做,而且该解决方案对我仍然有效(因此,如果有人知道为什么无论如何都应该这样做,请在评论中告诉我)。
我正在尝试执行从 mapr fs origin
到 mapr fs destination
的简单数据移动(这不是我的用例,只是为了测试目的而执行此简单移动)。尝试 validate
此管道时,我在暂存区看到的错误消息是:
HADOOPFS_11 - Cannot connect to the filesystem. Check if the Hadoop FS location: 'maprfs:///mapr/mycluster.cluster.local' is valid or not: 'java.io.IOException: Provided Subject must contain a KerberosPrincipal
使用 hadoop fs URI
字段的不同变体(例如 mfs:///mapr/mycluster.cluster.local、maprfs:///mycluster.cluster.local)不会似乎有帮助。尝试验证后查看日志,我看到
2018-01-04 10:28:56,686 mfs2mfs/mapr2sqlserver850bfbf0-6dc0-4002-8d44-b73e33fcf9b3 INFO Created source of type: com.streamsets.pipeline.stage.origin.maprfs.ClusterMapRFSSource@16978460 DClusterSourceOffsetCommitter *admin preview-pool-1-thread-3
2018-01-04 10:28:56,697 mfs2mfs/mapr2sqlserver850bfbf0-6dc0-4002-8d44-b73e33fcf9b3 INFO Error connecting to FileSystem: java.io.IOException: Provided Subject must contain a KerberosPrincipal ClusterHdfsSource *admin preview-pool-1-thread-3
java.io.IOException: Provided Subject must contain a KerberosPrincipal
....
2018-01-04 10:20:39,159 mfs2mfs/mapr2mapr850bfbf0-6dc0-4002-8d44-b73e33fcf9b3 INFO Authentication Config: ClusterHdfsSource *admin preview-pool-1-thread-3
2018-01-04 10:20:39,159 mfs2mfs/mapr2mapr850bfbf0-6dc0-4002-8d44-b73e33fcf9b3 ERROR Issues: Issue[instance='MapRFS_01' service='null' group='HADOOP_FS' config='null' message='HADOOPFS_11 - Cannot connect to the filesystem. Check if the Hadoop FS location: 'maprfs:///mapr/mycluster.cluster.local' is valid or not: 'java.io.IOException: Provided Subject must contain a KerberosPrincipal''] ClusterHdfsSource *admin preview-pool-1-thread-3
2018-01-04 10:20:39,169 mfs2mfs/mapr2mapr850bfbf0-6dc0-4002-8d44-b73e33fcf9b3 INFO Validation Error: Failed to configure or connect to the 'maprfs:///mapr/mycluster.cluster.local' Hadoop file system: java.io.IOException: Provided Subject must contain a KerberosPrincipal HdfsTargetConfigBean *admin 0 preview-pool-1-thread-3
java.io.IOException: Provided Subject must contain a KerberosPrincipal
....
然而,据我所知,系统不是 运行 Keberos
,所以这个错误信息让我有点困惑。在 sdc environment variable file 中为本机 mapr 身份验证取消注释 #export SDC_JAVA_OPTS="-Dmaprlogin.password.enabled=true ${SDC_JAVA_OPTS}"
似乎无助于解决问题(即使在 运行 streamsets mapr 安装脚本之前重新安装和注释此行)。
有谁知道发生了什么以及如何解决它?谢谢。
这个答案是在 mapr 社区 forums 上提供的,对我有用(使用 mapr v6.0
)。请注意,此处的说明 与流集文档当前提供的说明不同。在这些说明中,我以用户 root
.
按照文档安装流集(和 mapr 先决条件)后...
- 将流集
$SDC_DIST
或$SDC_HOME
位置的所有者更改为 mapr 用户(或您计划用于 hadoop 模拟的任何其他用户):$chown -R mapr:mapr $SDC_DIST
(对于我这是 /opt/streamsets-datacollector 目录。)。对$SDC_CONF
(对我来说是/etc/sdc
)以及/var/lib/sdc
和var/log/sdc
. 做同样的事情
在
$SDC_DIST/libexec/sdcd-env.sh
中,将用户名和组名(靠近文件顶部)设置为mapr用户"mapr"并启用mapr密码登录。该文件最终应如下所示:# 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 .... # Indicate that MapR Username/Password security is enabled export SDC_JAVA_OPTS="-Dmaprlogin.password.enabled=true ${SDC_JAVA_OPTS}
编辑文件
/usr/lib/systemd/system/sdc.service
使其看起来像:[Service] User=mapr Group=mapr
$cd
到/etc/systemd/system/
并创建一个名为sdc.service.d
的目录。在该目录中,创建一个文件(使用 any 名称)并添加内容(不带空格):Environment=SDC_JAVA_OPTS=-Dmaprlogin.passowrd.enabled=true
如果您使用的是 mapr 的 sasl ticket auth。系统(或类似的东西),在 运行 流集的节点上为该用户生成一张票。在这种情况下,使用
$maprlogin password
命令。最后,重启sdc服务:
$systemctl deamon-reload
然后$systemctl retart sdc
。
运行 类似 $ps -aux | grep sdc | grep maprlogin
的东西来检查 sdc 进程是否由 mapr 拥有并且 -Dmaprlogin.passowrd.enabled=true
参数已成功设置。完成后,应该能够 validate/run maprFS 以批处理模式在 streamsets pipeline builder 中进行 maprFS 操作。
** 注意:如果使用 Hadoop Configuration Directory
参数。而不是 Hadoop FS URI
,请记住将文件放在 $HADOOP_HOME/conf
目录中(eg.hadoop-site.xml、yarn-site.xml 等)(在mapr,类似 /opt/mapr/hadoop/hadoop-<version>/etc/hadoop/
) 软linked 或硬复制到目录 $SDC_DIST/resource/<some hadoop config dir. you made need to create>
(我只是在目录中复制 eberything)并将此路径添加到 Hadoop Configuration Directory
参数。为您的 MaprFS(或 HadoopFS)。在 sdc web UI Hadoop 配置目录框中,它看起来像 Hadoop Configuration Directory: <the directory within $SDC_DIST/resources/ that holds the hadoop files>
.
** 注意: 如果您仍在记录表单的错误
2018-01-16 14:26:10,883
ingest2sa_demodata_batch/ingest2sademodatabatchadca8442-cb00-4a0e-929b-df2babe4fd41
ERROR Error in Slave Runner: ClusterRunner *admin
runner-pool-2-thread-29
com.streamsets.datacollector.runner.PipelineRuntimeException:
CONTAINER_0800 - Pipeline
'ingest2sademodatabatchadca8442-cb00-4a0e-929b-df2babe4fd41'
validation error : HADOOPFS_11 - Cannot connect to the filesystem.
Check if the Hadoop FS location: 'maprfs:///' is valid or not:
'java.io.IOException: Provided Subject must contain a
KerberosPrincipal'
您可能还需要将 -Dmaprlogin.password.enabled=true
添加到流水线的 /cluster/Worker Java Options
选项卡,用于源和目标 hadoop FS 阶段。
** 在 mapr 社区 link 播放的视频 link 还说要为 sdc 用户生成一个 mapr 票证(当 [=102= 时 sdc 进程运行的默认用户) ] 作为一项服务),但我没有这样做,而且该解决方案对我仍然有效(因此,如果有人知道为什么无论如何都应该这样做,请在评论中告诉我)。