美文网首页elasticsearch
[ElasticSearch填坑]创建Snapshot: Sec

[ElasticSearch填坑]创建Snapshot: Sec

作者: king_wang | 来源:发表于2017-06-17 20:32 被阅读805次

    终于成功创建hdfs repository,在创建snapshot,遇到了问题:

    [my_hdfs_repo] could not read repository data from index blob
    

    elasticsearch日志:

    [2016-12-12T11:38:04,417][WARN ][r.suppressed             ] path: /_snapshot/my_hdfs_repo/20161209-snapshot, params: {repository=my_hdfs_repo, snapshot=20161209-snapshot}
    org.elasticsearch.transport.RemoteTransportException: [node-2][10.90.6.234:9340][cluster:admin/snapshot/create]
    Caused by: org.elasticsearch.repositories.RepositoryException: [my_hdfs_repo] could not read repository data from index blob
            ......
    Caused by: java.io.IOException: com.google.protobuf.ServiceException: java.security.AccessControlException: access denied ("javax.security.auth.PrivateCredentialPermission" "org.apache.hadoop.security.Credentials" "read")
             ......
    Caused by: org.elasticsearch.common.io.stream.NotSerializableExceptionWrapper: service_exception: java.security.AccessControlException: access denied ("javax.security.auth.PrivateCredentialPermission" "org.apache.hadoop.security.Credentials" "read")
             ......
    Caused by: java.lang.SecurityException: access denied ("javax.security.auth.PrivateCredentialPermission" "org.apache.hadoop.security.Credentials" "read")
             ......
    

    该问题很简单:JVM的JSM安全校验导致的,修改相关配置即可。

    修改plugin-security.policy文件:

    grant {
      // Hadoop UserGroupInformation, HdfsConstants, PipelineAck clinit
      permission java.lang.RuntimePermission "getClassLoader";
    
      // UserGroupInformation (UGI) Metrics clinit
      permission java.lang.RuntimePermission "accessDeclaredMembers";
      permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
    
      // org.apache.hadoop.util.StringUtils clinit
      permission java.util.PropertyPermission "*", "read,write";
    
      // org.apache.hadoop.util.ShutdownHookManager clinit
      permission java.lang.RuntimePermission "shutdownHooks";
    
      // JAAS is used always, we use a fake subject, hurts nobody
      permission javax.security.auth.AuthPermission "getSubject";
      permission javax.security.auth.AuthPermission "doAs";
      permission javax.security.auth.AuthPermission "modifyPrivateCredentials";
      permission java.lang.RuntimePermission "accessDeclaredMembers";
      permission java.lang.RuntimePermission "getClassLoader";
      permission java.lang.RuntimePermission "shutdownHooks";
      permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
      permission javax.security.auth.AuthPermission "doAs";
      permission javax.security.auth.AuthPermission "getSubject";
      permission javax.security.auth.AuthPermission "modifyPrivateCredentials";
      permission java.security.AllPermission;
      permission java.util.PropertyPermission "*", "read,write";
      permission javax.security.auth.PrivateCredentialPermission "org.apache.hadoop.security.Credentials * \"*\"", "read";
    };
    

    然后在jvm.options文件或者启动参数中加入:

    -Djava.security.policy=/usr/share/elasticsearch/plugins/repository-hdfs/plugin-security.policy
    

    相关文章

      网友评论

      • A文艺钦年:这样修改是不是不太好?有没有更好到解决方案,我觉得policy 文件应该是默认载入的。

      本文标题:[ElasticSearch填坑]创建Snapshot: Sec

      本文链接:https://www.haomeiwen.com/subject/amebqxtx.html