[英]HDFS start-all.sh by root or non-root user
我正在學習Hadoop,並且想嘗試偽分布式操作
當我嘗試使用start-all.sh
啟動Hadoop守護程序時,應該使用像foo-user這樣的非root用戶還是使用root。
使用root沒問題,但是,我對此有點擔心。
它使用非root用戶foo-user抱怨它沒有文件權限
/var/run/hadoop/hadoop-foo-user-namenode.pid: permission denied
/var/run/hadoop/hadoop-foo-user-tasktracker-foohost.pid: permission denied
它試圖在目錄/var/run/hadoop
創建這兩個文件
我嘗試了vim /var/run/hadoop/testfile
,但無法保存。 因此,事實證明foo用戶沒有權限在/var/run/hadoop
進行寫入
我檢查了/var/run/hadoop
的許可
drwxrwxr-x root hadoop 4096 Feb 8 23:42 hadoop
foo-user在hadoop組中,因此應該對/var/run/hadoop
具有寫權限。 實際上,在那里還創建了其他一些id文件,例如... jobtracker.pid
那么我應該將root用作start-all.sh
還是權限有問題(我很困惑)?
不建議以Hadoop為根啟動,以下引自Yahoo的Hadoop教程:
擁有Hadoop實例的用戶將需要具有對這些目錄中每個目錄的讀寫權限。 並非所有用戶都有權訪問這些目錄。 適當地使用chmod設置權限。 在大型環境中,建議您在每個節點上創建一個名為“ hadoop”的用戶,以明確擁有和運行Hadoop任務。 對於單個人的機器,以您自己的用戶名運行Hadoop是完全可以接受的。 不建議您以超級用戶身份運行Hadoop。
即使foo-user
在Linux文件系統中的hadoop
組中,您仍然需要確保foo-user
也是HDFS中的組成員(默認情況下,該組稱為supergroup
),您將看到該組是什么當你做hadoop fs -ls path_to_your_data
。
組以及用戶都需要躲藏。 這里您有:
drwxrwxr-x root hadoop 4096 Feb 8 23:42 hadoop
因此,將根目錄更改為hadoop(當前,我無法訪問任何linux計算機,因此我無法說出確切的命令),然后確保自己hadoop用戶能夠在/var/run/hadoop
創建文件和目錄。 我強烈建議以非root用戶身份運行它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.