我正在尝试从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中取消注释#export SDC_JAVA_OPTS="-Dmaprlogin.password.enabled=true ${SDC_JAVA_OPTS}"
以进行本机映射器身份验证似乎无法解决问题(即使在运行streamsets mapr安装脚本之前重新安装和注释此行)。
有谁知道发生了什么以及如何解决?感谢。
答案 0 :(得分:0)
此答案在mapr社区forums上提供,并为我工作(使用mapr v6.0
)。请注意,此处的说明与streamsets文档当前提供的说明不同。在这些说明中,我以用户root
登录。
根据文档安装streamsets(以及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”并启用映射器密码登录。该文件应该看起来像:
# 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 ticket auth。系统(或类似的东西),在运行streamsets的节点上为该用户生成一个票证。在这种情况下,使用$maprlogin password
命令。
最后,重启sdc服务:$systemctl deamon-reload
然后$systemctl retart sdc
。
运行类似$ps -aux | grep sdc | grep maprlogin
的内容,检查映射器是否拥有sdc进程,并且已成功设置-Dmaprlogin.passowrd.enabled=true
参数。完成此操作后,应该能够以批处理模式在streamsets管道构建器中验证/运行maprFS到maprFS操作。
** 注意:如果使用Hadoop Configuration Directory
参数。而不是Hadoop FS URI
,请记住将文件放在$HADOOP_HOME/conf
目录中(例如,hadoop-site.xml,yarn-site.xml等)(对于mapr,类似{{ 1}})软链接或硬复制到目录/opt/mapr/hadoop/hadoop-<version>/etc/hadoop/
(我只是复制目录中的eberything)并将此路径添加到$SDC_DIST/resource/<some hadoop config dir. you made need to create>
参数。为您的MaprFS(或HadoopFS)。在sdc Web UI Hadoop配置目录框中,它看起来像Hadoop Configuration Directory
。
** 注意:如果您仍在记录表单
的错误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
标签中,以了解原始和目标hadoop FS阶段。
**链接到mapr社区链接的视频也表示为sdc用户生成一个mapr票证(sdc进程在运行时作为服务运行的默认用户),但我没有这样做和解决方案仍然为我工作(所以如果有人知道为什么要这样做,请在评论中告诉我。)