1

accumulo を初期化しようとしています。hadoop2.0.0-cdh4.4.0 で accumulo を構成しています。MACブックでtarを使って作っています。

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 jar と構成が Accumulo のクラスパスに配置されていないことです。Cloudera が Hadoop アーティファクトをどのようにパッケージ化するかについてはよく知りません。

スタック トレースに気付いた場合は、DistributedFileSystem ではなく ChecksumFileSystem クラスがリストされています。これは、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 に答える