Thanks Jeff,

Getting back to this now.  I will try your suggestion when I get my environment 
running again.   I did run into something today that I missed earlier and now I 
have some questions:


I noticed a setting in livy-client.conf.template for livy.rsc.proxy-user::

# The user that should be impersonated when requesting a Livy session
# livy.rsc.proxy-user =


What effect would that property have when I'm doing user impersonation?  Is it 
necessary?   Also, I see this at the top of livy-client.conf.template.  Does 
that mean I should put the file in the 'conf' folder or some other folder 
accessible to the spark executors, like repl_2.10-jars ?


# Configurations for a Livy Client, any configurations set here will override 
any

# livy or spark-default configurations.
#
# Before a Livy Client is able to load these configurations the folder 
containing
# this file must be added to the application classpath
#


________________________________
From: Jeff Zhang <zjf...@gmail.com>
Sent: Tuesday, July 10, 2018 5:27:52 PM
To: user@livy.incubator.apache.org
Subject: Re: user impersonation in Livy not working


Make sure you enable hiveContext. set livy.repl.enable-hive-context to true in 
livy.conf



Harsch, Tim 
<tim.har...@teradata.com<mailto:tim.har...@teradata.com>>于2018年7月10日周二 
下午11:53写道:

Hi,

I have been unable to get proxyUsers to work with Livy.   I seem to have 
Kerberos configured correctly, as evidenced by the last beeline command.  When 
I start a livy session the server log will usually say something like: “owner: 
kylo, proxyUser: Some(dladmin)” so it seems the server should know what to do.  
 But no matter what I try I always get “org.apache.spark.sql.AnalysisException: 
Table not found”



# Ambari config

[/var/folders/_n/k2nq_2fx5t5__fcxqdl2tc6j_p8_px/T/com.microsoft.Outlook/WebArchiveCopyPasteTempFiles/p1426]



# Livy Configuration

livy.impersonation.enabled = true

livy.server.auth.type = kerberos

livy.server.launch.kerberos.principal = kylo/sandbox.kylo.io@KYLO

livy.server.launch.kerberos.keytab = /etc/security/keytabs/kylo.keytab

livy.server.auth.kerberos.principal = HTTP/sandbox.kylo.io@KYLO

livy.server.auth.kerberos.keytab = /etc/security/keytabs/spnego.service.keytab

livy.server.access_control.enabled = true

livy.server.access_control.users = kylo,dladmin

livy.server.access_control.modify-users = kylo

livy.superusers = kylo



# Curl connect

kinit -kt /etc/security/keytabs/kylo.keytab kylo/sandbox.kylo.io@KYLO

klist

curl --negotiate -u : -s -X POST --data '{"kind": "spark", "proxyUser": 
"dladmin"}' -H "Content-Type: application/json" 
sandbox.kylo.io:8998/sessions<http://sandbox.kylo.io:8998/sessions>

curl --negotiate -u : -s -X GET 
sandbox.kylo.io:8998/sessions<http://sandbox.kylo.io:8998/sessions>

* NOTE: verify proxyUser="dladmin" in response.  it will be null if 
impersonation is not enabled



# submit this code to Livy:

sqlContext.sql("select * from default.d4").show()



# Response:

{

"code": "sqlContext.sql(\"select * from default.d4\").show()",

"id": 0,

"output": {

"ename": "Error",

"evalue": "org.apache.spark.sql.AnalysisException: Table not found: 
`default`.`d4`;",

....



# Can "dladmin" see table data?

[root@sandbox more]# beeline -u 
"jdbc:hive2://localhost:10000/;principal=hive/sandbox.kylo.io@KYLO;;hive.server2.proxy.user=dladmin"

Connecting to 
jdbc:hive2://localhost:10000/;principal=hive/sandbox.kylo.io@KYLO;;hive.server2.proxy.user=dladmin

Connected to: Apache Hive (version 1.2.1000.2.5.6.0-40)

Driver: Hive JDBC (version 1.2.1000.2.5.6.0-40)

Transaction isolation: TRANSACTION_REPEATABLE_READ

Beeline version 1.2.1000.2.5.6.0-40 by Apache Hive

0: jdbc:hive2://localhost:10000/> select * from default.d4;

+--------+--+

| d4.d4 |

+--------+--+

| d4 |

+--------+--+

1 row selected (0.132 seconds)








Reply via email to