2016-04-28 9 views
10

ich einen Funken Job schrieb, die eine temporäre Tabelle registriert und wenn ich es über Beeline (JDBC-Client) aussetzenAuthorizationException: Benutzer nicht Benutzer zum Imitieren erlaubt

$ ./bin/beeline 
beeline> !connect jdbc:hive2://IP:10003 -n ram -p xxxx 
0: jdbc:hive2://IP> show tables; 
+---------------------------------------------+--------------+---------------------+ 
|     tableName       | isTemporary | 
+---------------------------------------------+--------------+---------------------+ 
| f238              | true    | 
+---------------------------------------------+--------------+---------------------+ 
2 rows selected (0.309 seconds) 
0: jdbc:hive2://IP> 

ich die Tabelle anzeigen kann. Beim Abfragen erhalte ich diese Fehlermeldung

0: jdbc:hive2://IP> select * from f238; 
Error: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: ram is not allowed to impersonate ram (state=,code=0) 
0: jdbc:hive2://IP> 

ich dies in hive-site.xml haben

<property> 
    <name>hive.metastore.sasl.enabled</name> 
    <value>false</value> 
    <description>If true, the metastore Thrift interface will be secured with SASL. Clients must authenticate with Kerberos.</description> 
</property> 

<property> 
    <name>hive.server2.enable.doAs</name> 
    <value>false</value> 
</property> 

<property> 
    <name>hive.server2.authentication</name> 
    <value>NONE</value> 
</property> 

Ich habe dies in Kern-site.xml,

<property> 
    <name>hadoop.proxyuser.hive.groups</name> 
    <value>*</value> 
</property> 

<property> 
    <name>hadoop.proxyuser.hive.hosts</name> 
    <value>*</value> 
</property> 

vollständige Protokoll

ERROR [pool-19-thread-2] thriftserver.SparkExecuteStatementOperation: Error running hive query: 
org.apache.hive.service.cli.HiveSQLException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: ram is not allowed to impersonate ram 
     at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation.runInternal(SparkExecuteStatementOperation.scala:259) 
     at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation$$anon$1$$anon$2.run(SparkExecuteStatementOperation.scala:171) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at javax.security.auth.Subject.doAs(Subject.java:422) 
     at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657) 
     at org.apache.spark.sql.hive.thriftserver.SparkExecuteStatementOperation$$anon$1.run(SparkExecuteStatementOperation.scala:182) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 

Irgendeine Idee was configurat ich vermisse?

Antwort

23
<property> 
<name>hive.server2.enable.doAs</name> 
<value>true</value> 
</property> 

Auch wenn Sie möchten Benutzer ABC alle zum Imitieren (*), unter Eigenschaften auf Ihre Kern-site.xml

<property> 
    <name>hadoop.proxyuser.ABC.groups</name> 
<value>*</value> 
</property> 

<property> 
<name>hadoop.proxyuser.ABC.hosts</name> 
<value>*</value> 
</property> 
+0

Dank hinzufügen. Jetzt funktioniert es gut –

+0

Sie können dies als Antwort annehmen, upvote. Kann für andere hilfreich sein – neeraj

+0

@bat_rock Weißt du, ob es eine andere Lösung für dieses Problem gibt? Wir haben hier, was Sie vorschlagen, aber noch nicht funktioniert. –

Verwandte Themen