2014-05-24 49 views
1

我正在尝试初始化accumulo。我正在配置hadoop2.0.0-cdh4.4.0的accumulo。 我正在MAC书上使用tars。Accumulo没有被初始化。

初始化accumulo:bin/accumulo init时出现错误。 java.io.IOException:Mkdirs无法创建/ accumulo/instance_id错误。

日志说:

2014-05-24 01:24:33,935 [util.Initialize] FATAL: Failed to initialize filesystem 
java.io.IOException: Mkdirs failed to create /accumulo/instance_id 
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:447) 
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:433) 
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:886) 
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:867) 
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:829) 
at org.apache.hadoop.fs.FileSystem.createNewFile(FileSystem.java:1129) 
at org.apache.accumulo.server.util.Initialize.initFileSystem(Initialize.java:269) 
at org.apache.accumulo.server.util.Initialize.initialize(Initialize.java:213) 
at org.apache.accumulo.server.util.Initialize.doInit(Initialize.java:199) 
at org.apache.accumulo.server.util.Initialize.main(Initialize.java:545) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.apache.accumulo.start.Main$1.run(Main.java:103) 
at java.lang.Thread.run(Thread.java:744) 
2014-05-24 01:24:33,937 [conf.Configuration] WARN : fs.default.name is deprecated. Instead, use fs.defaultFS 
2014-05-24 01:24:33,937 [util.Initialize] FATAL: Default filesystem value ('fs.defaultFS' or 'fs.default.name') was found in the Hadoop configuration 
2014-05-24 01:24:33,938 [util.Initialize] FATAL: Please ensure that the Hadoop core-site.xml is on the classpath using 'general.classpaths' in accumulo-site.xml 

请给我建议,我试图通过创建HDFS的/ accumulo,/用户/ accumulo解决这一问题,并给了777个权限也。

回答

3

根本原因是Hadoop的罐子和配置没有放在Accumulo的类路径上。我不熟悉Cloudera如何打包Hadoop构件。

如果您注意到您的堆栈跟踪,它会列出ChecksumFileSystem类而不是DistributedFileSystem。这意味着Accumulo不知道你正在尝试写入的HDFS实例,并且正在使用本地文件系统(这就是ChecksumFileSystem所做的)。

要解决这个问题,请在您的Accumulo配置文件中检查几件事情。首先,确保在accumulo-env.sh中正确定义了HADOOP_PREFIX和HADOOP_CONF_DIR。其次,确保您为accumulo-site.xml中的general.classpaths配置的值全部存在,特别是那些引用HADOOP_PREFIX和HADOOP_CONF_DIR的值。