首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Cloudera Manager YARN NodeManager 啟動失敗:LOCK 權限不足解決方案

     編輯:程式設計疑難解答

錯誤堆疊:


Caused by: org.fusesource.leveldbjni.internal.NativeDB$DBException:
IO error: /var/lib/hadoop-yarn/yarn-nm-recovery/yarn-nm-state/LOCK: Permission denied

根因:目錄擁有者/權限錯誤

YARN NodeManager 啟動時需對 `yarn.nodemanager.recovery.dir` (預設 `/var/lib/hadoop-yarn/yarn-nm-recovery`) 有**讀寫執行**權限。若目錄由 `root` 建立,而 NM 以 `yarn` 用戶啟動 → `Permission denied`。

修復步驟


# 1. 確認目錄擁有者
ls -ld /var/lib/hadoop-yarn/yarn-nm-recovery
# 輸出應為 yarn:hadoop 或 yarn:yarn

# 2. 遞歸授權給 yarn 用戶
chown -R yarn:hadoop /var/lib/hadoop-yarn/yarn-nm-recovery
chmod -R 755 /var/lib/hadoop-yarn/yarn-nm-recovery

# 3. 若使用 Cloudera Manager,同步 CM 管理的角色目錄
# CM → YARN → 設定 → NodeManager → 本地目錄/恢復目錄 → 確認路徑與擁有者一致

# 4. 重啟 NodeManager
# CM → YARN → NodeManager → 重新啟動

進階:永久修正 (CM 範本)

  • 在 CM → 主機 → 範本 → `yarn-nodemanager` → `yarn.nodemanager.recovery.dir` 設為 `/data/yarn/nm-recovery` (掛載大盤、預建權限)。
  • 用 `puppet`/`ansible`/`salt` 佈署時,確保 `file { '/var/lib/hadoop-yarn/yarn-nm-recovery': ensure=>directory, owner=>'yarn', group=>'hadoop', mode=>'0755', recurse=>true }`。

驗證


sudo -u yarn test -w /var/lib/hadoop-yarn/yarn-nm-recovery/yarn-nm-state && echo "OK"
# 輸出 OK 表示權限正確

核心口訣:**大數據元件啟動報 `Permission denied`,90% 是目錄擁有者與啟動用戶不匹配,`chown -R` 到正確用戶即愈。**

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved