我正在尝试从 mapr fs origin
进行简单的数据移动到 mapr fs destination
(这不是我的用例,只是为了测试目的做这个简单的 Action )。尝试 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 environment variable file对于 native 映射器身份验证似乎没有帮助解决问题(即使在运行流集映射器设置脚本之前重新安装并评论此行)。有谁知道发生了什么以及如何解决它?谢谢。
最佳答案
此答案在 mapr 社区 forums 上提供并为我工作(使用 mapr v6.0
)。注意这里的指令不同来自流集文档当前提供的那些。在这些说明中,我以用户 root
的身份登录。 .
根据文档安装流集(和映射器先决条件)后...
$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
的目录.在该目录中,创建一个文件(带有 任何 名称)并添加内容(不带空格):Environment=SDC_JAVA_OPTS=-Dmaprlogin.passowrd.enabled=true
$maprlogin password
命令。 $systemctl deamon-reload
然后 $systemctl retart sdc
. 运行类似
$ps -aux | grep sdc | grep maprlogin
检查 sdc 进程是否由 mapr 拥有,并且 -Dmaprlogin.passowrd.enabled=true
参数设置成功。完成此操作后,应该能够以批处理模式在流集管道构建器中验证/运行 maprFS 到 maprFS 操作。** 注意 : 如果使用
Hadoop Configuration Directory
参数。而不是 Hadoop FS URI
,请记住将文件放在您的$HADOOP_HOME/conf
中目录(例如,hadoop-site.xml、yarn-site.xml 等)(在 mapr 的情况下,类似于 /opt/mapr/hadoop/hadoop-<version>/etc/hadoop/
)软链接(soft link)或硬复制到目录 $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 社区链接中链接到的视频还说要为 sdc 用户(作为服务运行时 sdc 进程运行的默认用户)生成 mapr 票证,但我没有这样做,解决方案仍然适用我(所以如果有人知道为什么无论如何都应该这样做,请在评论中告诉我)。
关于hadoop - Streamsets Mapr FS 起点/终点。 KerberosPrincipal 异常(使用 hadoop 模拟(在 mapr 6.0 中)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48104900/