2

ここで説明されているように、Eclipse で実行されている MacOS 10.11.5 (El Capitan) でローカルの Nutch 2.3.1 インスタンスを構成しました: https://wiki.apache.org/nutch/RunNutchInEclipse

使用するデータ ストアとして、ローカルの MacOS マシンでも実行されている MongoDB 2.6.12 を構成しました。ここから Gora の設定を取得しました: http://www.aossama.com/search-engine-with-apache-nutch-mongodb-and-elasticsearch/

アイビー.xml

<dependency org="org.apache.gora" name="gora-mongodb" rev="0.6.1" conf="*->default" />

gora.properties

gora.datastore.default=org.apache.gora.mongodb.store.MongoStore
gora.mongodb.override_hadoop_configuration=false
gora.mongodb.mapping.file=/gora-mongodb-mapping.xml
gora.mongodb.servers=localhost:27017
# I tried several server settings like localhost, 127.0.0.1, 127.0.0.1:27017, ...
gora.mongodb.db=nutch

gora-mongodb-mapping.xmlは変更していません。

nutch-site.xml

<property>
 <name>storage.data.store.class</name>
 <value>org.apache.gora.mongodb.store.MongoStore</value>
 <description>Default class for storing data</description>
</property>

inject コマンドを実行すると、hadoop.logに次の紛らわしい結果が表示されます。

2016-07-12 23:23:16,818 INFO  crawl.InjectorJob - InjectorJob: starting at 2016-07-12 23:23:16
2016-07-12 23:23:16,819 INFO  crawl.InjectorJob - InjectorJob: Injecting urlDir: /Users/myaccount/Documents/Nutch/urls
2016-07-12 23:23:17,054 WARN  util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2016-07-12 23:23:17,416 ERROR store.MongoStore - 
2016-07-12 23:23:17,417 ERROR store.MongoStore - [Ljava.lang.StackTraceElement;@4b5189ac
2016-07-12 23:23:17,418 ERROR store.MongoStore - Error while initializing MongoDB store: java.lang.NullPointerException
2016-07-12 23:23:17,419 ERROR crawl.InjectorJob - InjectorJob: org.apache.gora.util.GoraException: java.lang.RuntimeException: java.io.IOException: java.lang.NullPointerException
    at org.apache.gora.store.DataStoreFactory.createDataStore(DataStoreFactory.java:167)
    at org.apache.gora.store.DataStoreFactory.createDataStore(DataStoreFactory.java:135)
    at org.apache.nutch.storage.StorageUtils.createWebStore(StorageUtils.java:78)
    at org.apache.nutch.crawl.InjectorJob.run(InjectorJob.java:233)
    at org.apache.nutch.crawl.InjectorJob.inject(InjectorJob.java:267)
    at org.apache.nutch.crawl.InjectorJob.run(InjectorJob.java:290)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.nutch.crawl.InjectorJob.main(InjectorJob.java:299)
Caused by: java.lang.RuntimeException: java.io.IOException: java.lang.NullPointerException
    at org.apache.gora.mongodb.store.MongoStore.initialize(MongoStore.java:131)
    at org.apache.gora.store.DataStoreFactory.initializeDataStore(DataStoreFactory.java:102)
    at org.apache.gora.store.DataStoreFactory.createDataStore(DataStoreFactory.java:161)
    ... 7 more
Caused by: java.io.IOException: java.lang.NullPointerException
    at org.apache.gora.mongodb.store.MongoMappingBuilder.fromFile(MongoMappingBuilder.java:123)
    at org.apache.gora.mongodb.store.MongoStore.initialize(MongoStore.java:118)
    ... 9 more
Caused by: java.lang.NullPointerException
    at org.apache.gora.mongodb.store.MongoMapping.newDocumentField(MongoMapping.java:109)
    at org.apache.gora.mongodb.store.MongoMapping.addClassField(MongoMapping.java:169)
    at org.apache.gora.mongodb.store.MongoMappingBuilder.loadPersistentClass(MongoMappingBuilder.java:169)
    at org.apache.gora.mongodb.store.MongoMappingBuilder.fromFile(MongoMappingBuilder.java:112)
    ... 10 more

2日後、私はアイデアを使い果たしました。

ログ ファイル内で、有益なヒントを特定できません。MongoDB のログには、接続の試行は表示されません (アクティブな接続は言うまでもありません)。mongoI'm can to connect to the database を使用して http://localhost:27017 を要求すると、予想されるメッセージ ( 「ネイティブ ドライバー ポートで HTTP 経由で MongoDB にアクセスしようとしているようです。」 ) と対応するログ ファイル エントリが表示されます。データストアを Cassandra に切り替えると、インジェクションは期待通りに機能するので、Nutch 自体も機能するようです。

私が何を見逃しているか、または hadoop.log が私に伝えようとしていることを理解している人はいますか?

どんな助けでも大歓迎です!どうも。

更新: Ubuntu 14.04 サーバーでもこの構成を使用しようとしましたが、期待どおりに動作します。したがって、私の問題は、Mac 上で実行されている Nutch と MongoDB 間の接続に関連していると思います。(誰かが知りたい場合:サーバー接続を必要とせずにローカル開発を行いたいので、Macで構成を機能させようとしています。)

4

0 に答える 0