2017-05-18 4 views
0

내 사용자 ID와 팀이 하이브 데이터베이스의 내부 테이블에 액세스 할 수 없습니다. 우리가 HUE와 'CLI'에서 쿼리를 불 때뿐만 아니라, 우리는 지금 내부 테이블에 액세스 할 수있는 사용자, 어떤이 mapr 그룹과는 sudo의 일부입니다하이브 내부 테이블에 액세스 할 수 없습니다. AccessControlException

'AccessControlException', please find the log below,

INFO : set mapreduce.job.reduces=<number> INFO : Cleaning up the staging area maprfs:/var/mapr/cluster/yarn/rm/staging/keswara/.staging/job_1494760161412_0139 

ERROR : Job Submission failed with exception org.apache.hadoop.security.AccessControlException 
    (User keswara(user id 1802830393) does not have access to 
    maprfs:///user/hive/warehouse/bistore_sit.db/wt_consumer/d_partition_number=0/000114_0)' 
    org.apache.hadoop.security.AccessControlException: User keswara(user id 1802830393) does not have access to maprfs:///user/hive/warehouse/bistore_sit.db/wt_consumer/d_partition_number=0/000114_0 
    at com.mapr.fs.MapRFileSystem.getMapRFileStatus(MapRFileSystem.java:1320) 
    at com.mapr.fs.MapRFileSystem.getFileStatus(MapRFileSystem.java:942)  
    at org.apache.hadoop.fs.FileSystem.getFileBlockLocations(FileSystem.java:741) 
    at org.apache.hadoop.fs.FileSystem$4.next(FileSystem.java:1762) 
    at org.apache.hadoop.fs.FileSystem$4.next(FileSystem.java:1747)  at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:307)  at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:265)  at org.apache.hadoop.hive.shims.Hadoop23Shims$1.listStatus(Hadoop23Shims.java:148)  at org.apache.hadoop.mapreduce.lib.input.CombineFileInputFormat.getSplits(CombineFileInputFormat.java:218)  at org.apache.hadoop.mapred.lib.CombineFileInputFormat.getSplits(CombineFileInputFormat.java:75)  at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileInputFormatShim.getSplits(HadoopShimsSecure.java:310)  at org.apache.hadoop.hive.ql.io.CombineHiveInputFormat.getCombineSplits(CombineHiveInputFormat.java:472)  at org.apache.hadoop.hive.ql.io.CombineHiveInputFormat.getSplits(CombineHiveInputFormat.java:573)  at org.apache.hadoop.mapreduce.JobSubmitter.writeOldSplits(JobSubmitter.java:331)  at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:323)  at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:199)  at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290) 
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:421)  
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1595)  at org.apache.hadoop.mapreduce.Job.submit(Job.java:1287) 
    at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:562)  
    at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:557) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:421) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1595)  
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:557)  at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:548)  at org.apache.hadoop.hive.ql.exec.mr.ExecDriver.execute(ExecDriver.java:431)  at org.apache.hadoop.hive.ql.exec.mr.MapRedTask.execute(MapRedTask.java:137)  at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:160)  
at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:88)  at org.apache.hadoop.hive.ql.exec.TaskRunner.run(TaskRunner.java:75) 

을 받고 사용자뿐만 아니라!

및 소유권이 mapr 그룹에 속하며 사용 권한이 멋지게 보입니다!

[[email protected] mapr]$ hadoop fs -ls /user/hive/warehouse/bistore.db/wt_consumer 
Found 1 items 
drwxrwxrwt - mapr mapr 1 2017-03-24 11:51 /user/hive/warehouse/bistore.db/wt_consumer/d_partition_number=__HIVE_DEFAULT_PARTITION__ 

제발 도와주세요! 정말 도움을 주셔서 감사합니다!

+0

디렉토리에있는 것처럼 사용자는 해당 디렉토리의 파일을 읽을 수있는 권한이 없습니다.'maprfs : ///user/hive/warehouse/bistore_sit.db/wt_consumer/d_partition_number=0/000114_0/'. 그것을 확인하십시오. – User12345

+0

Viru reddy ... 응답 해 주셔서 감사합니다. 777로 파일 권한을 변경했습니다! 이제 우리는 그 테이블에 액세스 할 수 있습니다. yep..thats 사실 ... 우리는 그 테이블에 마루판 형식을 사용하고 있습니다!? 그래서 우리는 그 테이블에 마루판 형식을 사용합니까? 이걸 제발 가르쳐 주실 수 있습니까? – karthee

+0

이 지식을 공유해 주셔서 감사합니다. 이 일에 정말로 도움을 주셔서 감사합니다. – karthee

답변

1

테이블이 parquet 형식 인 경우 해당 테이블의 파일에는 테이블을 만든 사용자에 대해서만 쓰기 권한이 있습니다. 즉,이 문은 모든 사용자에게 해당 파일에 대한 모든 권한을 부여합니다

hdfs dfs -chomd 777 /user/hive/warehouse/bistore_sit.db/wt_con‌​sumer/d_partitio‌​n_nu‌​mber=0/000114_‌​0/* 

아래처럼 문을 사용하여 파일을

이를 위해 당신은 사용자 권한을 변경할 수 있습니다.

CSVparquet 형식의 일부 표를 테스트하는 동안 다음 사항을 확인했습니다.

CSV 형식으로 하이브 테이블을 만들면 사용자가 속한 그룹에 대한 액세스 권한이있는 모든 사용자에 대해 테이블에 777 권한이 부여됩니다.

그러나 하이브 테이블을 마루판 형식으로 만들면 테이블을 만든 사용자 만 쓰기 권한을 갖게됩니다. 나는 마루 형식으로 뭔가를하고 있다고 생각

0

[루트 @의 psnode44 하이브-2.1] #의 하둡 때 fs -ls/사용자/하이브/창고/찾을 수

1 개 항목 drwxrw-rw-을 - mapr mapr 2 2017-06-28 12:49/사용자/하이브/창고/테스트

0 : jdbc : hive2 : //10.20.30.44 : 10000 /> select * from test;

오류 : java.io.IOException : org.apache.hadoop.security.AccessControlException : 사용자 basa (사용자 ID 5005)가 maprfs에 액세스 할 수 없습니다./user/hive/warehouse/test (state =, code = 0)

[루트 @의 psnode44 하이브 2.1] #에 하둡 FS의 -ls/사용자/하이브/창고/실측치

1 개 항목 drwxrwxrwx - mapr mapr 2 2017년 6월 28일 12시 49분/사용자/하이브 /웨어 하우스/테스트

심지어 생각, 나는 창고에 chmod를 변경, 여전히 그 같은 오류가 점점.

[@ 루트의 psnode44 하이브 2.1] #에 하둡 FS는 -R 777/사용자/하이브/창고/

[루트 @의 psnode44 하이브 -2- -chmod.JDBC : mapr mapr 2 2017년 6월 28일 12시 49분/사용자/하이브/창고/시험

0 - 1] # 하둡 FS의 -ls/사용자/하이브 /웨어는/

1 개 항목 drwxrwxrwx에게 발견 : hive2 : //10.20.30.44 : 10000 /> select * from test;

오류 : java.io.IOException : org.apache.hadoop.security.AccessControlException : 사용자 basa (사용자 ID 5005)가 maprfs에 액세스 할 수 없습니다./user/hive/warehouse/test (state =, code = 0)