0

我正在尝试做一个从 amapr fs origin到 a的简单数据移动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,所以这个错误信息让我有点困惑。#export SDC_JAVA_OPTS="-Dmaprlogin.password.enabled=true ${SDC_JAVA_OPTS}"sdc 环境变量文件中取消对本机 mapr 身份验证的注释似乎对问题没有帮助(即使在运行流集映射器设置脚本之前重新安装并注释此行)。

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

4

1 回答 1

0

这个答案是在 mapr 社区论坛上提供的,对我有用(使用mapr v6.0)。请注意,此处的说明与流集文档当前提供的说明不同。在这些说明中,我以 user 身份登录root

根据文档安装流集(和映射器先决条件)后...

  1. $SDC_DIST将流集或位置的所有者更改为 mapr$SDC_HOME用户(或您计划用于 hadoop 模拟的任何其他用户):($chown -R mapr:mapr $SDC_DIST对我来说,这是 /opt/streamsets-datacollector 目录。)。$SDC_CONF对( /etc/sdcfor me) 和/var/lib/sdcand做同样的事情var/log/sdc
  2. $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}
    
  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 票证身份验证。系统(或类似的东西),在运行流集的节点上为该用户生成一张票。在这种情况下,使用$maprlogin password命令。

  6. 最后,重新启动 sdc 服务:$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/)软链接或硬复制到目录$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'

您可能还需要将源和目标 hadoop FS 阶段添加-Dmaprlogin.password.enabled=true到管道的选项卡中。/cluster/Worker Java Options

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

于 2018-01-08T20:08:05.823 回答