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