1

我正在尝试初始化累加器。我在 hadoop2.0.0-cdh4.4.0 上配置 accumulo。我在 MAC 书上使用 tars。

初始化 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、/user/accumulo 来解决此问题,并还提供了 777 权限。

4

1 回答 1

3

根本原因是 Hadoop jars 和配置没有放在 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 的值。

于 2014-05-24T21:07:51.427 回答