streamset mapr fs origin/destkerberosprincipal异常(使用hadoop模拟(在mapr6.0中))

yrefmtwq  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(455)

我正在尝试从 mapr fs originmapr 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 ,所以这个错误消息对我来说有点混乱。取消注解 #export SDC_JAVA_OPTS="-Dmaprlogin.password.enabled=true ${SDC_JAVA_OPTS}" 在sdc环境中,用于本机mapr身份验证的变量文件似乎对问题没有帮助(即使在运行streamsets mapr安装脚本之前重新安装并注解这一行)。
有人知道发生了什么事以及如何解决吗?谢谢。

v64noz0r

v64noz0r1#

这个答案是在mapr社区论坛上提供的,对我有用(使用 mapr v6.0 ). 请注意,此处的说明与streamsets文档当前提供的说明不同。在这些说明中,我是以用户身份登录的 root .
在按照文档安装streamset(和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 user“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` . 在该目录中,创建一个文件(具有任何名称)并添加内容(不带空格):

Environment=SDC_JAVA_OPTS=-Dmaprlogin.passowrd.enabled=true

如果您使用的是mapr的sasl票证认证。系统(或类似的系统),在运行streamset的节点上为该用户生成一个票证。在这种情况下 `$maprlogin password` 命令。
最后,重新启动sdc服务: `$systemctl deamon-reload` 那么 `$systemctl retart sdc` .
像这样跑 `$ps -aux | grep sdc | grep maprlogin` 检查sdc进程是否由mapr拥有,以及 `-Dmaprlogin.passowrd.enabled=true` 已成功设置参数。完成后,应能够在批处理模式下验证/运行streamsets pipeline builder中的maprfs to maprfs操作。

**注:如果使用 `Hadoop Configuration Directory` 参数。而不是 `Hadoop FS URI` ,记得把文件放在你的电脑里 `$HADOOP_HOME/conf` 目录(例如hadoop-site.xml、yarn-site.xml等)(对于mapr,类似于 `/opt/mapr/hadoop/hadoop-<version>/etc/hadoop/` )软链接或硬复制到目录 `$SDC_DIST/resource/<some hadoop config dir. you made need to create>` (我只是复制目录中的eberything)并将此路径添加到 `Hadoop Configuration Directory` 参数。对于maprfs(或hadoopfs)。在sdcwebuihadoop配置目录框中 `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 stage。

**在mapr社区链接中链接到的视频还说要为sdc用户(sdc进程作为服务运行时作为默认用户运行)生成mapr票证,但我没有这样做,解决方案仍然对我有效(因此,如果有人知道为什么不管怎样都应该这样做,请在评论中告诉我)。

相关问题