2012-11-26 2 views
1

나는 우분투 정밀도 12.04 x64 상자에서 Cloudera CDH 4.1을 사용하고 있습니다. 나는 매끄러운 설치를 위해 Cloudera Manager Free Edition을 사용했다. 그러나, 나는 아직도 하이브를 일하게 할 수 없습니다. 이제 Hive QL 명령을 실행하여 테이블을 만들고 로컬 데이터 (예제의 원시 테이블)를로드 할 수 있습니다. 그러나 다른 테이블 (적절한 serde 및 저장소가있는 테이블)에 데이터를 삽입하려고하면 로컬 폴더 사용 권한 때문에 실패합니다. 하이브와 mapred : 나는 그러나, 하위 디렉토리가 여전히 하이브가 소유 한 777에 chmod를 할 수 있도록 (예외에서 볼 수 있듯이)지도 작업이 Hive 임시 폴더에 쓸 때 사용 권한이 거부되었습니다.

org.apache.hadoop.hive.ql.metadata.HiveException: java.io.IOException: Mkdirs failed to create file:/home/yaboulnaga/tmp/hive-scratch/hive_2012-11-25_19-22-21_486_4469575874587213091/_task_tmp.-ext-10002 
at org.apache.hadoop.hive.ql.io.HiveFileFormatUtils.getHiveRecordWriter(HiveFileFormatUtils.java:237) 
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.createBucketFiles(FileSinkOperator.java:477) 
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.closeOp(FileSinkOperator.java:709) 
at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:557) 
at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:566) 
at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:566) 
at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:566) 
at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:566) 
at org.apache.hadoop.hive.ql.exec.ExecMapper.close(ExecMapper.java:193) 
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57) 
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:393) 
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:327) 
at org.apache.hadoop.mapred.Child$4.run(Child.java:268) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:396) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) 
at org.apache.hadoop.mapred.Child.main(Child.java:262) 

는 내 홈 디렉토리에 폴더에 스크래치 폴더를 이동했다 : hadoop은 그들에게 편지를 쓸 수 없다. 나는 그것을 해결하기 위해 어떤 노력도 찾지 못했고 누군가가 나에게 올바른 방법을 말해주기를 바랍니다. 저는 지난 며칠간 하이브를 일하게하는 작업장을 찾았습니다. 그것은 내 로컬 컴퓨터에 있습니다 ... 나는 계획대로 EC2에서 실행하기 시작할 때 내 인생이 어떻게 될지 생각조차 할 수 없습니다.

감사합니다.

+1

기본적으로 쓰기 가능한 폴더를 만들 수 있도록 하이브 사용자의 umask를 수정하여이 문제를 해결하려고 시도했습니다. 여전히 운이 없음 – user340202

+0

어떤 사용자가 하이브를 실행합니까? sudo -E -u hdfs $ HIVE_HOME/bin/hive를 사용하고 관련 파일을 hdfs에 chown합니다. 나는 내 자신의 환경을 설정하지 않았으므로 그것이 도움이되는지 확신 할 수 없다. –

답변

0

나는 같은 문제에 직면했다. cloudera udacity VM을 사용하고있다. 테이블을 만들고 외부 파일에서이 테이블로 데이터를로드 한 다음 select *를 tablename에서 수행 할 수 있습니다. 그 밖의 모든 작업은 실패했습니다. tablename에서 count (1)을 선택하고 tablename에서 col1을 선택하는 등의 작업도 가능합니다. .. 동일한 예외가 발생하여 mkdirs가 파일을 생성하지 못했습니다 ------------------

로그 아웃 한 후 sudo 하이브로 다시 로그인했습니다. 갑자기 모든 것이 매력처럼 작동합니다.

희망이 도움이됩니다.

+0

은 적절한 해결책이 아닙니다. 당신은 dir을 만들기위한 허가를 제공해야합니다. –

관련 문제