Weird stuff.
I just checked out the 1.5.0 tag from Git and ran the following
successfully:
`mvn clean package -Dhadoop.profile=2.0`
which builds against 2.0.4-alpha. The following against 2.1.0-beta works
for me too:
`mvn clean package -Dhadoop.profile=2.0 -Dhadoop.version=2.1.0-beta`
For fun, despite that it shouldn't matter, I did install instead of just
package to the same success. This was with Oracle 1.7.0_40 and Maven 3.1.1.
On 1/22/14, 2:21 PM, Matthew Molek wrote:
Thanks for the quick responses.
In this case I do really mean install. I'm trying to build another
project against a version of Accumulo 1.5.0 built with hadoop
2.1.0-beta. Is that a reasonable thing to do? The reason I'm building
Accumulo from source is that I was getting similar unsatisfied link
errors when trying to use MiniAccumuloCluster in unit tests in another
project that was depending on 2.1.0-beta. I thought the issue might be
related to the version of Hadoop that the Accumulo 1.5.0 in the maven
central repo was built with.
On the issue of the build errors, I tried a separate mvn clean before
the install, as well as wiping my whole local mvn repo, but I'm still
getting the same errors. Is there anything else that might be worth trying?
On Wed, Jan 22, 2014 at 2:06 PM, Billie Rinaldi
<[email protected] <mailto:[email protected]>> wrote:
Also, we recommend never to use "install" unless you really mean to
do that. It can often cause issues later with maven using your
local repo to pull in dependencies you don't want. It couldn't hurt
to wipe out accumulo from your local repo before trying to build again.
On Wed, Jan 22, 2014 at 10:57 AM, Eric Newton <[email protected]
<mailto:[email protected]>> wrote:
Be sure to "mvn clean" when switching between hadoop versions.
-Eric
On Wed, Jan 22, 2014 at 1:52 PM, Matthew Molek
<[email protected] <mailto:[email protected]>> wrote:
I'm having trouble building accumulo 1.5.0 with the hadoop
2.0 profile. I'm using the source release
accumulo-1.5.0-src.tar.gz from
http://accumulo.apache.org/downloads/ . I'm building on
Centos 6.3 with oracle java 1.7 and maven 3.0.5.
I think I'm running into two separate issues.
First, when building with the default hadoop version for the
2.0 profile with this command: 'mvn -Dhadoop.profile=2.0
-Dmaven.test.failure.ignore=true clean install'
I get two test failures.
testFileMonitor(org.apache.accumulo.start.classloader.vfs.providers.VfsClassLoaderTest)
Time elapsed: 0.385 sec <<< ERROR!
testGetClass(org.apache.accumulo.start.classloader.vfs.providers.VfsClassLoaderTest)
Time elapsed: 0.084 sec <<< ERROR!
Both errors have the same cause:
java.lang.UnsatisfiedLinkError:
org.apache.hadoop.util.NativeCrc32.nativeVerifyChunkedSums(IILjava/nio/ByteBuffer;ILjava/nio/ByteBuffer;IILjava/lang/String;J)V
at
org.apache.hadoop.util.NativeCrc32.nativeVerifyChunkedSums(Native
Method)
at
org.apache.hadoop.util.NativeCrc32.verifyChunkedSums(NativeCrc32.java:57)
at
org.apache.hadoop.util.DataChecksum.verifyChunkedSums(DataChecksum.java:291)
at
org.apache.hadoop.hdfs.RemoteBlockReader2.readNextPacket(RemoteBlockReader2.java:187)
at
org.apache.hadoop.hdfs.RemoteBlockReader2.read(RemoteBlockReader2.java:122)
at
org.apache.hadoop.hdfs.DFSInputStream$ByteArrayStrategy.doRead(DFSInputStream.java:542)
at
org.apache.hadoop.hdfs.DFSInputStream.readBuffer(DFSInputStream.java:594)
at
org.apache.hadoop.hdfs.DFSInputStream.readWithStrategy(DFSInputStream.java:648)
at
org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:689)
at
java.io.DataInputStream.read(DataInputStream.java:149)
at
java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at
java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
at
java.io.BufferedInputStream.read(BufferedInputStream.java:334)
at
org.apache.commons.vfs2.util.MonitorInputStream.read(MonitorInputStream.java:100)
at
java.io.FilterInputStream.read(FilterInputStream.java:107)
at
org.apache.commons.vfs2.FileUtil.writeContent(FileUtil.java:85)
at
org.apache.commons.vfs2.FileUtil.copyContent(FileUtil.java:114)
at
org.apache.commons.vfs2.provider.AbstractFileObject.copyFrom(AbstractFileObject.java:1053)
at
org.apache.commons.vfs2.impl.DefaultFileReplicator.replicateFile(DefaultFileReplicator.java:249)
at
org.apache.commons.vfs2.provider.AbstractFileSystem.doReplicateFile(AbstractFileSystem.java:467)
at
org.apache.commons.vfs2.provider.AbstractFileSystem.replicateFile(AbstractFileSystem.java:423)
at
org.apache.commons.vfs2.provider.zip.ZipFileSystem.<init>(ZipFileSystem.java:61)
at
org.apache.commons.vfs2.provider.jar.JarFileSystem.<init>(JarFileSystem.java:50)
at
org.apache.commons.vfs2.provider.jar.JarFileProvider.doCreateFileSystem(JarFileProvider.java:82)
at
org.apache.commons.vfs2.provider.AbstractLayeredFileProvider.createFileSystem(AbstractLayeredFileProvider.java:89)
at
org.apache.commons.vfs2.impl.DefaultFileSystemManager.createFileSystem(DefaultFileSystemManager.java:914)
at
org.apache.commons.vfs2.impl.DefaultFileSystemManager.createFileSystem(DefaultFileSystemManager.java:933)
at
org.apache.commons.vfs2.impl.VFSClassLoader.addFileObjects(VFSClassLoader.java:153)
at
org.apache.commons.vfs2.impl.VFSClassLoader.<init>(VFSClassLoader.java:116)
at
org.apache.commons.vfs2.impl.VFSClassLoader.<init>(VFSClassLoader.java:98)
at
org.apache.accumulo.start.classloader.vfs.providers.VfsClassLoaderTest.setup(VfsClassLoaderTest.java:58)
... and a bunch more
Second problem: If I try to build with a more recent hadoop
release (2.1.0-beta and up) command: 'mvn
-Dhadoop.profile=2.0 -Dhadoop.version=2.1.0-beta
-Dmaven.test.failure.ignore=true clean install'
I end up with 140+ test errors. Many are like this:
java.lang.RuntimeException:
java.lang.reflect.InvocationTargetException
at
org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:131)
at
org.apache.hadoop.security.Groups.<init>(Groups.java:55)
at
org.apache.hadoop.security.Groups.getUserToGroupsMappingService(Groups.java:182)
at
org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:234)
at
org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:213)
at
org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:662)
at
org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:570)
at
org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:2586)
at
org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:2578)
at
org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2444)
at
org.apache.hadoop.fs.FileSystem.get(FileSystem.java:363)
at
org.apache.hadoop.fs.FileSystem.get(FileSystem.java:165)
at
org.apache.accumulo.core.client.mock.MockInstance.getDefaultFileSystem(MockInstance.java:69)
at
org.apache.accumulo.core.client.mock.MockInstance.<init>(MockInstance.java:60)
at
org.apache.accumulo.server.util.CloneTest.testMerge(CloneTest.java:344)
... 25 more (my truncation)
Caused by: java.lang.reflect.InvocationTargetException
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:525)
at
org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:129)
... 39 more
Caused by: java.lang.UnsatisfiedLinkError:
org.apache.hadoop.security.JniBasedUnixGroupsMapping.anchorNative()V
at
org.apache.hadoop.security.JniBasedUnixGroupsMapping.anchorNative(Native
Method)
at
org.apache.hadoop.security.JniBasedUnixGroupsMapping.<clinit>(JniBasedUnixGroupsMapping.java:49)
at
org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback.<init>(JniBasedUnixGroupsMappingWithFallback.java:38)
... 44 more
Lastly, I can build with no errors if I use the default
hadoop-1.0 profile.
Both of my problems seem to boil down to
UnsatisfiedLinkErrors related to the underlying Hadoop
dependencies. I can't find much information to help resolve
this other than some general java related discussions saying
that UnsatisfiedLinkErrors usually result from missing
native libraries. Can anyone point me in the right
direction? Thanks!