hadoop - Streamsets Mapr FS 起点/终点。 KerberosPrincipal 异常(使用 hadoop 模拟(在 mapr 6.0 中))

标签 hadoop mapr streamsets

我正在尝试从 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/sdcvar/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
    
  • 如果您使用的是 mapr 的 sasl 票证身份验证。系统(或类似的东西),在运行流集的节点上为该用户生成一张票。在这种情况下,使用 $maprlogin password命令。
  • 最后,重启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/ )软链接(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/

    相关文章:

    hadoop - 在哪个节点上编辑 hadoop .xml 文件?

    streaming - 将 Spark 流连接到流集输入

    来自 CLI 的 Streamsets 版本

    python - 使用 pyhive 和 kerberos 票证连接到 Kerberos 化的 hadoop 集群

    hadoop - 将数据作为HTTP POST消息提取时,接收数据,处理数据并将其写入HDFS的选项有哪些?

    apache-spark - 外部覆盖后 Spark 和 Hive 表架构不同步

    hadoop - 使用MAPRFS运行 `hadoop fs`时如何启用其他日志记录?

    hadoop - StreamSet 能否用于将数据提取到本地系统?

    java - hadoop jaxb类路径问题

    java - 在 Hadoop Mapreduce 中使用 gzip 编解码器压缩 reducer 的输出时出错