Accumulo Store with Kerberos
See original GitHub issueHi,
I have an Accumulo cluster (version: 1.7.2-cdh5.5.0) with kerberos enabled and I would like to know how I can configure Gaffer to use my Accumulo cluster as the underlying store.
I have read the doc on Accumulo store and looked at the TheBasics.java
from gaffer-doc
repo (master branch). I didn’t find any instructions on whether specific settings are required for kerberos.
I downloaded the iterators.jar and distributed it to all my tservers. Then I modified TheBasics.java
with my Accumulo properties
final AccumuloProperties properties = new AccumuloProperties();
properties.setStoreClass(AccumuloStore.class);
properties.setInstance("<my_instance>");
properties.setZookeepers("<my_zk1>:2181,<my_zk2>:2181,<my_zk3>:2181");
properties.setUser("myuser@EXAMPLE.COM");
properties.setPassword("<my_password>");
And I get the following Exception
Exception in thread "main" java.lang.IllegalArgumentException: Could not initialise the store with provided arguments.
at uk.gov.gchq.gaffer.store.Store.createStore(Store.java:262)
at uk.gov.gchq.gaffer.graph.Graph$Builder.updateStore(Graph.java:1066)
at uk.gov.gchq.gaffer.graph.Graph$Builder.build(Graph.java:953)
at uk.gov.gchq.gaffer.doc.user.walkthrough.TheBasics.run(TheBasics.java:121)
at uk.gov.gchq.gaffer.doc.user.walkthrough.TheBasics.main(TheBasics.java:161)
Caused by: uk.gov.gchq.gaffer.store.StoreException: Failed to create accumulo connection
at uk.gov.gchq.gaffer.accumulostore.utils.TableUtils.getConnector(TableUtils.java:219)
at uk.gov.gchq.gaffer.accumulostore.AccumuloStore.getConnection(AccumuloStore.java:205)
at uk.gov.gchq.gaffer.accumulostore.utils.TableUtils.ensureTableExists(TableUtils.java:76)
at uk.gov.gchq.gaffer.accumulostore.AccumuloStore.initialise(AccumuloStore.java:160)
at uk.gov.gchq.gaffer.store.Store.createStore(Store.java:260)
... 4 more
Caused by: org.apache.accumulo.core.client.AccumuloException: java.lang.RuntimeException: Cannot use SASL if Hadoop security is not enabled
at org.apache.accumulo.core.client.impl.ServerClient.execute(ServerClient.java:70)
at org.apache.accumulo.core.client.impl.ConnectorImpl.<init>(ConnectorImpl.java:73)
at org.apache.accumulo.core.client.ZooKeeperInstance.getConnector(ZooKeeperInstance.java:308)
at uk.gov.gchq.gaffer.accumulostore.utils.TableUtils.getConnector(TableUtils.java:217)
... 8 more
Caused by: java.lang.RuntimeException: Cannot use SASL if Hadoop security is not enabled
at org.apache.accumulo.core.rpc.SaslConnectionParams.updatePrincipalFromUgi(SaslConnectionParams.java:194)
at org.apache.accumulo.core.rpc.SaslConnectionParams.<init>(SaslConnectionParams.java:140)
at org.apache.accumulo.core.client.impl.ClientContext$3.get(ClientContext.java:117)
at org.apache.accumulo.core.client.impl.ClientContext$3.get(ClientContext.java:109)
at com.google.common.base.Suppliers$ExpiringMemoizingSupplier.get(Suppliers.java:185)
at org.apache.accumulo.core.client.impl.ClientContext.getSaslParams(ClientContext.java:182)
at org.apache.accumulo.core.client.impl.ThriftTransportKey.<init>(ThriftTransportKey.java:44)
at org.apache.accumulo.core.client.impl.ServerClient.getConnection(ServerClient.java:144)
at org.apache.accumulo.core.client.impl.ServerClient.getConnection(ServerClient.java:124)
at org.apache.accumulo.core.client.impl.ServerClient.getConnection(ServerClient.java:119)
at org.apache.accumulo.core.client.impl.ServerClient.executeRaw(ServerClient.java:100)
at org.apache.accumulo.core.client.impl.ServerClient.execute(ServerClient.java:64)
... 11 more
Any suggestions?
Issue Analytics
- State:
- Created 3 years ago
- Comments:5 (3 by maintainers)
Top Results From Across the Web
Accumulo Documentation - Kerberos
Kerberos is a network authentication protocol that provides a secure way for peers to prove their identity over an unsecure network in a...
Read more >Practical Kerberos with Apache Accumulo - YouTube
Kerberos is the system which underpins the vast majority of strong authentication across the Apache Hadoop application stack.
Read more >15.8. Kerberos — GeoMesa 3.4.0 Manuals
Kerberos support is a beta-level feature, and hasn't been extensively tested with ... The GeoServer store should specify the accumulo.keytab.path parameter.
Read more >Connecting to Accumulo inside a Mapper using Kerberos
I have tried context.getCredentials().getAllTokens() and looking for a token of type org.apache.accumulo.code.client.security.tokens.
Read more >Accumulo - Hortonworks Data Platform
/accumulo/ $UUID /hdfs_reservations - ZNode to coordinate unique directories in HFDS for bulk imports of Accumulo files to a table.
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Yeah it’s still very high on our priority list. We are hoping to release it along with a number of other version upgrades inc. Hadoop in the early part of next year
@d47853 Thanks, I disabled SASL and the example code just hangs. I can see it reached zookeeper from the zookeeper log and the connection keeps being started and stopped. After I exited the code, I got
which is expected, though I am not sure why it’s stuck there. Then I realised the Gaffer I am using is built on top of Accumulo 1.9.3 and I am using a different version of Accumulo (1.7.2), so that could be the cause. At this point, I feel the best way for me to try Gaffer on Accumulo is probably setting up an Accumulo cluster (1.9.3) with default settings.
I find there is a discussion on upgrading Gaffer to support Accumulo 2.x but don’t see much follow-up if I am not missing anything. Is this still on the roadmap?