ElasticSearch作為數(shù)據(jù)庫類軟件,提供了宜用的備份還原功能。不過想使用備份功能,必須事先創(chuàng)建repository用于保存snapshot文件。本文記錄了在創(chuàng)建hdfs類型的repository時遇到的坑。
HDFS Permission Denied
在創(chuàng)建repository失敗,返回錯誤詳情里包含下面內(nèi)容:
Permission denied: user=esuser, access=WRITE, inode="/user/esuser/repository":hdfs:supergroup:drwxr-xr-x
意思是esuser用戶對hdfs的/user/es/repository目錄無寫權(quán)限。各種google,找到原因:我們的hadoop集群未開啟用戶驗證(因為在內(nèi)網(wǎng)環(huán)境中安全上已經(jīng)相對有保證),在創(chuàng)建repository時就未使用security.principal。在這種情況下,ElasticSearch會使用啟動實例的用戶esuser來在hdfs創(chuàng)建repository指定的目錄,染鵝該用戶并沒有這個權(quán)限。
那么問題來了,怎么解決?2個方案:
方案1: 開啟hadoop服務(wù)器的Kerberos (KRB5)認證,生成krb5.keytab文件并拷貝到ElasticSearch服務(wù)器上。具體步驟自行g(shù)oogle。最后創(chuàng)建repository使用security.principal`參數(shù)。
方案2: 既然知道是用戶權(quán)限的原因,那么采用最直接的方法,給該用戶開啟對于指定目錄的讀寫權(quán)限
hdfs dfs –mkdir -p /user/esuser
hdfs dos –chown -R esuser:supergroup /user/esuser