[ https://issues.apache.org/jira/browse/AMBARI-18013?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alejandro Fernandez updated AMBARI-18013: ----------------------------------------- Attachment: AMBARI-18013.patch > HiveHook fails to post messages to kafka due to missing keytab config in > /etc/hive/conf/atlas-application.properties in kerberized cluster > ------------------------------------------------------------------------------------------------------------------------------------------ > > Key: AMBARI-18013 > URL: https://issues.apache.org/jira/browse/AMBARI-18013 > Project: Ambari > Issue Type: Bug > Components: stacks > Affects Versions: 2.4.0 > Reporter: Alejandro Fernandez > Assignee: Alejandro Fernandez > Fix For: 2.4.0 > > Attachments: AMBARI-18013.patch > > > STR: > * Install Ambari 2.4 > * HDP 2.5 with Hive and Atlas > * Kerberize the cluster > The hive hook fails because 2 configs are missing from > hive-atlas-application.properties, > {noformat} > atlas.jaas.KafkaClient.option.keyTab=/etc/security/keytabs/hive.service.keytab > atlas.jaas.KafkaClient.option.principal=hive/_h...@example.com > {noformat} > *Impact: HiveHook related tests are failing.* > {noformat} > 2016-07-29 10:25:50,087 INFO [Atlas Logger 1]: producer.ProducerConfig > (AbstractConfig.java:logAll(178)) - ProducerConfig values: > metric.reporters = [] > metadata.max.age.ms = 300000 > reconnect.backoff.ms = 50 > sasl.kerberos.ticket.renew.window.factor = 0.8 > bootstrap.servers = [atlas-r6-bug-62789-1023re-2.openstacklocal:6667, > atlas-r6-bug-62789-1023re-1.openstacklocal:6667] > ssl.keystore.type = JKS > sasl.mechanism = GSSAPI > max.block.ms = 60000 > interceptor.classes = null > ssl.truststore.password = null > client.id = > ssl.endpoint.identification.algorithm = null > request.timeout.ms = 30000 > acks = 1 > receive.buffer.bytes = 32768 > ssl.truststore.type = JKS > retries = 0 > ssl.truststore.location = null > ssl.keystore.password = null > send.buffer.bytes = 131072 > compression.type = none > metadata.fetch.timeout.ms = 60000 > retry.backoff.ms = 100 > sasl.kerberos.kinit.cmd = /usr/bin/kinit > buffer.memory = 33554432 > timeout.ms = 30000 > key.serializer = class > org.apache.kafka.common.serialization.StringSerializer > sasl.kerberos.service.name = kafka > sasl.kerberos.ticket.renew.jitter = 0.05 > ssl.trustmanager.algorithm = PKIX > block.on.buffer.full = false > ssl.key.password = null > sasl.kerberos.min.time.before.relogin = 60000 > connections.max.idle.ms = 540000 > max.in.flight.requests.per.connection = 5 > metrics.num.samples = 2 > ssl.protocol = TLS > ssl.provider = null > ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1] > batch.size = 16384 > ssl.keystore.location = null > ssl.cipher.suites = null > .protocol = PLAINTEXTSASL > max.request.size = 1048576 > value.serializer = class > org.apache.kafka.common.serialization.StringSerializer > ssl.keymanager.algorithm = SunX509 > metrics.sample.window.ms = 30000 > partitioner.class = class > org.apache.kafka.clients.producer.internals.DefaultPartitioner > linger.ms = 0 > 2016-07-29 10:25:50,091 INFO [Atlas Logger 1]: producer.KafkaProducer > (KafkaProducer.java:close(658)) - Closing the Kafka producer with > timeoutMillis = 0 ms. > 2016-07-29 10:25:50,091 INFO [Atlas Logger 1]: hook.AtlasHook > (AtlasHook.java:notifyEntitiesInternal(131)) - Failed to notify atlas for > entity [[{Id='(type: hive_db, id: <unassigned>)', traits=[], > values={owner=public, ownerType=2, qualifiedName=default@cl1, > clusterName=cl1, name=default, description=Default Hive database, > location=hdfs://atlas-r6-bug-62789-1023re-1.openstacklocal:8020/apps/hive/warehouse, > parameters={}}}, {Id='(type: hive_table, id: <unassigned>)', traits=[], > values={owner=hrt_qa, temporary=false, lastAccessTime=Fri Jul 29 10:25:49 UTC > 2016, qualifiedName=default.t2@cl1, columns=[{Id='(type: hive_column, id: > <unassigned>)', traits=[], values={owner=hrt_qa, > qualifiedName=default.t2.abc@cl1, name=abc, comment=null, type=string, > table=(type: hive_table, id: <unassigned>)}}], sd={Id='(type: > hive_storagedesc, id: <unassigned>)', traits=[], > values={qualifiedName=default.t2@cl1_storage, storedAsSubDirectories=false, > location=hdfs://atlas-r6-bug-62789-1023re-1.openstacklocal:8020/apps/hive/warehouse/t2, > compressed=false, inputFormat=org.apache.hadoop.mapred.TextInputFormat, > outputFormat=org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, > parameters={}, serdeInfo=org.apache.atlas.typesystem.Struct@7648946d, > table=(type: hive_table, id: <unassigned>), numBuckets=-1}}, > tableType=MANAGED_TABLE, createTime=Fri Jul 29 10:25:49 UTC 2016, name=t2, > comment=null, partitionKeys=[], parameters={totalSize=0, numRows=0, > rawDataSize=0, COLUMN_STATS_ACCURATE={"BASIC_STATS":"true"}, numFiles=0, > transient_lastDdlTime=1469787949}, retention=0, db={Id='(type: hive_db, id: > <unassigned>)', traits=[], values={owner=public, ownerType=2, > qualifiedName=default@cl1, clusterName=cl1, name=default, description=Default > Hive database, > location=hdfs://atlas-r6-bug-62789-1023re-1.openstacklocal:8020/apps/hive/warehouse, > parameters={}}}}}]]. Retrying > org.apache.kafka.common.KafkaException: Failed to construct kafka producer > at > org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:335) > at > org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:188) > at > org.apache.atlas.kafka.KafkaNotification.createProducer(KafkaNotification.java:312) > at > org.apache.atlas.kafka.KafkaNotification.sendInternal(KafkaNotification.java:220) > at > org.apache.atlas.notification.AbstractNotification.send(AbstractNotification.java:84) > at > org.apache.atlas.hook.AtlasHook.notifyEntitiesInternal(AtlasHook.java:126) > at org.apache.atlas.hook.AtlasHook.notifyEntities(AtlasHook.java:111) > at org.apache.atlas.hook.AtlasHook.notifyEntities(AtlasHook.java:157) > at org.apache.atlas.hive.hook.HiveHook.fireAndForget(HiveHook.java:274) > at org.apache.atlas.hive.hook.HiveHook.access$200(HiveHook.java:82) > at org.apache.atlas.hive.hook.HiveHook$2.run(HiveHook.java:186) > 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) > Caused by: org.apache.kafka.common.KafkaException: > javax..auth.login.LoginException: Could not login: the client is being asked > for a password, but the Kafka client code does not currently support > obtaining a password from the user. not available to garner authentication > information from the user > at > org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:86) > at > org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:71) > at > org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:83) > at > org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:277) > ... 15 more > Caused by: javax..auth.login.LoginException: Could not login: the client is > being asked for a password, but the Kafka client code does not currently > support obtaining a password from the user. not available to garner > authentication information from the user > at > com.sun..auth.module.Krb5LoginModule.promptForPass(Krb5LoginModule.java:940) > at > com.sun..auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:760) > at com.sun..auth.module.Krb5LoginModule.login(Krb5LoginModule.java:617) > at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at javax..auth.login.LoginContext.invoke(LoginContext.java:755) > at javax..auth.login.LoginContext.access$000(LoginContext.java:195) > at javax..auth.login.LoginContext$4.run(LoginContext.java:682) > at javax..auth.login.LoginContext$4.run(LoginContext.java:680) > at java..AccessController.doPrivileged(Native Method) > at javax..auth.login.LoginContext.invokePriv(LoginContext.java:680) > at javax..auth.login.LoginContext.login(LoginContext.java:587) > at > org.apache.kafka.common..authenticator.AbstractLogin.login(AbstractLogin.java:69) > at > org.apache.kafka.common..kerberos.KerberosLogin.login(KerberosLogin.java:110) > at > org.apache.kafka.common..authenticator.LoginManager.<init>(LoginManager.java:46) > at > org.apache.kafka.common..authenticator.LoginManager.acquireLoginManager(LoginManager.java:68) > at > org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:78) > ... 18 more > {noformat} > This occurs because the Kerberos Descriptors does not allow using the same > identity name more than once. > AMBARI-17993 just made it possible to have unique names still reference the > same identity via a "reference" tag. -- This message was sent by Atlassian JIRA (v6.3.4#6332)