Hadoop 2.7.x Permission denied: user=dr.who, access=READ_EXECUTE, inode="/tmp"問題解決

    在hadoop2.7.4(hadoop2.X)中通過hdfs管理界面查看/tmp目錄出現如下錯誤:

Permission denied: user=dr.who, access=READ_EXECUTE, inode="/tmp":hadoop:supergroup:drwx------

    先開始一直糾結我是用hadoop用戶登錄操作的,爲什麼會是dr.who,dr.who其實是hadoop中http訪問的靜態用戶名,並沒有啥特殊含義,可以在core-default.xml中看到其配置,

hadoop.http.staticuser.user=dr.who

我們可以通過修改core-site.xml,配置爲當前用戶,

    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>hadoop</value>
    </property>

另外,通過查看hdfs的默認配置hdfs-default.xml發現hdfs默認是開啓權限檢查的。

dfs.permissions.enabled=true #是否在HDFS中開啓權限檢查,默認爲true

    由於當前用戶權限不足,所以無法操作/tmp目錄。

解決方案:

    解決方案有兩種,一是直接修改/tmp目錄的權限設置,操作如下,

[hadoop@server hadoop-2.7.4]$ /bin/hdfs dfs -chmod -R 755 /tmp

   然後就可以正常訪問/tmp目錄下的文件了。

  

    另一種是直接hdfs的權限配置,

    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>

    第二種方案可以在測試環境下使用,生產環境不建議這樣設置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章