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