Streamset Mapr FS origin / dest。 KerberosPrincipal异常(使用hadoop模拟(在mapr 6.0中))

时间:2018-01-04 23:08:23

标签: hadoop mapr streamsets

我正在尝试从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,所以这个错误信息对我来说有点混乱。在sdc environment variable file中取消注释#export SDC_JAVA_OPTS="-Dmaprlogin.password.enabled=true ${SDC_JAVA_OPTS}"以进行本机映射器身份验证似乎无法解决问题(即使在运行streamsets mapr安装脚本之前重新安装和注释此行)。

有谁知道发生了什么以及如何解决?感谢。

1 个答案:

答案 0 :(得分:0)

此答案在mapr社区forums上提供,并为我工作(使用mapr v6.0)。请注意,此处的说明与streamsets文档当前提供的说明不同。在这些说明中,我以用户root登录。

根据文档安装streamsets(以及mapr先决条件)...

  1. 将streamsets $SDC_DIST$SDC_HOME位置的所有者更改为mapr用户(或您计划用于hadoop模拟的其他任何用户):$chown -R mapr:mapr $SDC_DIST(对我而言)是/ opt / streamsets-datacollector目录。)。为$SDC_CONF/etc/sdc对我而言)以及/var/lib/sdcvar/log/sdc执行相同的操作。
  2. $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}
    
  3. 将文件/usr/lib/systemd/system/sdc.service编辑为:

    [Service] 
    User=mapr 
    Group=mapr
    
  4. $cd/etc/systemd/system/并创建一个名为sdc.service.d的目录。在该目录中,创建一个文件(使用任何名称)并添加内容(不含空格):

    Environment=SDC_JAVA_OPTS=-Dmaprlogin.passowrd.enabled=true
    
  5. 如果您使用的是mapr的sasl ticket auth。系统(或类似的东西),在运行streamsets的节点上为该用户生成一个票证。在这种情况下,使用$maprlogin password命令。

  6. 最后,重启sdc服务:$systemctl deamon-reload然后$systemctl retart sdc

  7. 运行类似$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进程在运行时作为服务运行的默认用户),但我没有这样做和解决方案仍然为我工作(所以如果有人知道为什么要这样做,请在评论中告诉我。)