ElasticSearch作为数据库类软件,提供了宜用的备份还原功能。不过想使用备份功能,必须事先创建repository用于保存snapshot文件。本文记录了在创建hdfs类型的repository时遇到的坑。
HDFS Permission Denied
在创建repository失败,返回错误详情里包含下面内容:
Permission denied: user=esuser, access=WRITE, inode="/user/esuser/repository":hdfs:supergroup:drwxr-xr-x
意思是esuser
用户对hdfs的/user/es/repository目录无写权限。各种google,找到原因:我们的hadoop集群未开启用户验证(因为在内网环境中安全上已经相对有保证),在创建repository时就未使用security.principal
。在这种情况下,ElasticSearch会使用启动实例的用户esuser
来在hdfs创建repository指定的目录,染鹅该用户并没有这个权限。
那么问题来了,怎么解决?2个方案:
-
方案1: 开启hadoop服务器的Kerberos (KRB5)认证,生成krb5.keytab文件并拷贝到ElasticSearch服务器上。具体步骤自行google。最后创建repository使用security.principal`参数。
-
方案2: 既然知道是用户权限的原因,那么采用最直接的方法,给该用户开启对于指定目录的读写权限
hdfs dfs –mkdir -p /user/esuser
hdfs dos –chown -R esuser:supergroup /user/esuser
网友评论