tajo-site.xml 에 tajo.rootdir 에 HDFS의 경로를 지정한다.

이때 기본 폴더를 하나 지정해서 이런식으로 가이드 되어있다.


* tajo-site.xml

...

 <property>

  <name>tajo.rootdir</name>

  <value>hdfs://네임노드서버호스트:8020/tajo</value>

  <description>Base directory including system directories.</description>

</property>

...



저 폴더를 생성했는데, 퍼미션 관련 오류가 남는다면?

실행아이디와 해당 hdfs의 소유주 아이디를 맞춰줘야한다.


* 마스터노드의 로그

....

2015-08-11 10:03:55,808 ERROR org.apache.tajo.master.TajoMaster: Current User cannot access to this filesystem.

org.apache.tajo.rule.EvaluationFailedException: Current User cannot access to this filesystem.

        at org.apache.tajo.rule.SelfDiagnosisRuleSession.fireRules(SelfDiagnosisRuleSession.java:67)

        at org.apache.tajo.master.TajoMaster.diagnoseTajoMaster(TajoMaster.java:282)

        at org.apache.tajo.master.TajoMaster.serviceInit(TajoMaster.java:175)

        at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)

        at org.apache.tajo.master.TajoMaster.main(TajoMaster.java:572)

Caused by: org.apache.hadoop.security.AccessControlException: Permission denied: user=user, path="hdfs://네임노드:8020/tajo":usersu:supergroup:drwxrwxr-x

        at org.apache.tajo.master.rule.FileSystemRule.canAccessToPath(FileSystemRule.java:63)

        at org.apache.tajo.master.rule.FileSystemRule.checkAccessControlOnTajoPaths(FileSystemRule.java:71)

        at org.apache.tajo.master.rule.FileSystemRule.evaluate(FileSystemRule.java:94)

        at org.apache.tajo.rule.SelfDiagnosisRuleSession.fireRules(SelfDiagnosisRuleSession.java:64)

        ... 4 more

....


예를 들어, 위와 같이 오류가 났다면, usersu 라는 아이디로 /tajo 폴더가 생성되어 있는데 접근할수 없다는것이다.

tajo의 프로세스를 확인해보면 usersu가 아니라 user라는 아이디로 실행되어있다.

[user@마스터노드 conf]$ ps -ef | grep tajo

user   26086     1  1 10:53 pts/4    00:00:14 /usr/java/jdk1.7.0_67-cloudera//bin/java -Dproc_master -Djava.net.preferIPv4Stack=true -Xmx1000m -Dtajo.log.dir=/home1/cdh/var/log/tajo -Dtajo.log.file=tajo-user-master-1번서버.log -Dtajo.home.dir=/opt/cloudera/parcels/CDH/lib/tajo-0.10.1/bin/.. -Dtajo.id.str=user -Dtajo.root.logger.appender=DRFA -Djava.library.path=/opt/cloudera/parcels/CDH/lib/hadoop/lib/native/ -Dtajo.policy.file=tajo-policy.xml org.apache.tajo.master.TajoMaster

user 30413 20669  0 11:06 pts/3    00:00:00 grep tajo




즉, 타조를 실행하는 권한과 HDFS 의 /tajo 폴더의 권한을 가진 사용자 소유주가 같아야 한다는것이다. 

여기서는 hdfs의 소유주를 user로 변경하는걸로 해결해 보겠다.


hadoop fs  명령어로 하면되는데, CDH5 환경에서는 hdfs 라는 명령으로 실행할수 있었다.

/tajo라는 폴더는 이미 HDFS상에 생성되어있을텐데 소유주가 다른것이니... 저런식으로 바꿔주면된다.


sudo -u hadoop hadoop dfs -chown user /tajo



+ Recent posts