[ 
https://issues.apache.org/jira/browse/HADOOP-11329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14228625#comment-14228625
 ] 

Allen Wittenauer commented on HADOOP-11329:
-------------------------------------------

bq.  It's just that KMS has a dependency on the hadoop libraries (in this case 
hadoop-common), not necessarily the hadoop installation per-se.

But this is clearly false, given the failure.  Certain parts of hadoop-common 
have expectations about the operating environment.  KMS is not fulfilling those 
expectations and therefore causing this stack trace.

bq. KMS can be independently built, packaged and deployed as long as all the 
jar and libraries are mvn downloadable .

KMS is part of the Hadoop source and utilizes Hadoop common code.  There isn't 
much reason for it to play these games.  If it wants to be a separate project, 
then it should be a separate project.  If it wants to be part of Hadoop, then 
it should integrate properly.  This means trying to avoid being an operational 
burden by requiring extra downloads and setting extra environment variables 
that Hadoop already handles.

bq. Unfortunately, I don't think currently, the hadoop-common native libraries 
are exposed as maven artifacts..

Given that they are extremely architecture and platform dependent, this isn't 
surprising.  This is compiled code that now, unfortunately, has a lot of 
chipset dependent code.


> should add HADOOP_HOME as part of kms's startup options
> -------------------------------------------------------
>
>                 Key: HADOOP-11329
>                 URL: https://issues.apache.org/jira/browse/HADOOP-11329
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: kms, security
>            Reporter: Dian Fu
>            Assignee: Arun Suresh
>         Attachments: HADOOP-11329.1.patch, HADOOP-11329.2.patch, 
> HADOOP-11329.3.patch, HADOOP-11329.4.patch
>
>
> Currently, HADOOP_HOME isn't part of the start up options of KMS. If I add 
> the the following configuration to core-site.xml of kms,
> {code} <property>
>   <name>hadoop.security.crypto.codec.classes.aes.ctr.nopadding</name>
>   <value>org.apache.hadoop.crypto.OpensslAesCtrCryptoCodec</value>
>  </property>
> {code} kms server will throw the following exception when receive 
> "generateEncryptedKey" request
> {code}
> 2014-11-24 10:23:18,189 DEBUG org.apache.hadoop.crypto.OpensslCipher: Failed 
> to load OpenSSL Cipher.
> java.lang.UnsatisfiedLinkError: 
> org.apache.hadoop.util.NativeCodeLoader.buildSupportsOpenssl()Z
>         at 
> org.apache.hadoop.util.NativeCodeLoader.buildSupportsOpenssl(Native Method)
>         at 
> org.apache.hadoop.crypto.OpensslCipher.<clinit>(OpensslCipher.java:85)
>         at 
> org.apache.hadoop.crypto.OpensslAesCtrCryptoCodec.<init>(OpensslAesCtrCryptoCodec.java:50)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
> Method)
>         at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
>         at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>         at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
>         at 
> org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:129)
>         at 
> org.apache.hadoop.crypto.CryptoCodec.getInstance(CryptoCodec.java:67)
>         at 
> org.apache.hadoop.crypto.CryptoCodec.getInstance(CryptoCodec.java:100)
>         at 
> org.apache.hadoop.crypto.key.KeyProviderCryptoExtension$DefaultCryptoExtension.generateEncryptedKey(KeyProviderCryptoExtension.java:256)
>         at 
> org.apache.hadoop.crypto.key.KeyProviderCryptoExtension.generateEncryptedKey(KeyProviderCryptoExtension.java:371)
>         at 
> org.apache.hadoop.crypto.key.kms.server.EagerKeyGeneratorKeyProviderCryptoExtension$CryptoExtension$EncryptedQueueRefiller.fillQueueForKey(EagerKeyGeneratorKeyProviderCryptoExtension.java:77)
>         at 
> org.apache.hadoop.crypto.key.kms.ValueQueue$1.load(ValueQueue.java:181)
>         at 
> org.apache.hadoop.crypto.key.kms.ValueQueue$1.load(ValueQueue.java:175)
>         at 
> com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3568)
>         at 
> com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2350)
>         at 
> com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2313)
>         at 
> com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2228)
>         at com.google.common.cache.LocalCache.get(LocalCache.java:3965)
>         at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3969)
>         at 
> com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4829)
>         at 
> org.apache.hadoop.crypto.key.kms.ValueQueue.getAtMost(ValueQueue.java:256)
>         at 
> org.apache.hadoop.crypto.key.kms.ValueQueue.getNext(ValueQueue.java:226)
>         at 
> org.apache.hadoop.crypto.key.kms.server.EagerKeyGeneratorKeyProviderCryptoExtension$CryptoExtension.generateEncryptedKey(EagerKeyGeneratorKeyProviderCryptoExtension.java:126)
>         at 
> org.apache.hadoop.crypto.key.KeyProviderCryptoExtension.generateEncryptedKey(KeyProviderCryptoExtension.java:371)
>         at 
> org.apache.hadoop.crypto.key.kms.server.KeyAuthorizationKeyProvider.generateEncryptedKey(KeyAuthorizationKeyProvider.java:192)
>         at org.apache.hadoop.crypto.key.kms.server.KMS$9.run(KMS.java:379)
>         at org.apache.hadoop.crypto.key.kms.server.KMS$9.run(KMS.java:375
> {code}
> The reason is that it cannot find libhadoop.so. This will prevent KMS to 
> response to "generateEncryptedKey" requests.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to