首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hadoop上的Nutch部署不会索引到solr

hadoop上的Nutch部署不会索引到solr
EN

Stack Overflow用户
提问于 2014-05-23 03:28:04
回答 2查看 613关注 0票数 0

我有一个oozie工作流程,它做了一个坚果爬行,我设计使用色调。

除了索引到solr之外,流程中的所有步骤都有效。

定义solrindex的oozie操作如下所示

`

代码语言:javascript
复制
<start to="solr-test"/>
    <action name="solr-test">
        <java>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <main-class>org.apache.nutch.indexer.IndexingJob</main-class>
            <java-opts>solr.server.url=http://ip-redacted:8983/solr/raw</java-opts>
            <arg>hdfs://ip-redacted:8020/user/admin/c</arg>
            <arg>-dir</arg>
            <arg>hdfs://ip-redacted:8020/user/admin/s000</arg>
        </java>
        <ok to="end"/>
        <error to="kill"/>
    </action>
    <kill name="kill">
        <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name="end"/>

`

当我运行该操作时,我得到以下错误消息

代码语言:javascript
复制
Main class [org.apache.oozie.action.hadoop.JavaMain], exit code [-1]

位置hdfs://ip-redacted:8020/user/admin/chdfs://ip-redacted:8020/user/admin/s000分别是包含爬网数据库和段的位置。

该作业的stderr表示::

代码语言:javascript
复制
`Log Length: 122
Intercepting System.exit(-1)
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.JavaMain], exit code [-1]`

系统日志显示::

代码语言:javascript
复制
`ERROR [main] org.apache.nutch.indexer.IndexingJob: Indexer: java.lang.RuntimeException: org.apache.nutch.indexer.IndexWriter not found.
at org.apache.nutch.indexer.IndexWriters.<init>(IndexWriters.java:51)
at org.apache.nutch.indexer.IndexingJob.index(IndexingJob.java:100)
at org.apache.nutch.indexer.IndexingJob.run(IndexingJob.java:185)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.nutch.indexer.IndexingJob.main(IndexingJob.java:195)
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.oozie.action.hadoop.JavaMain.run(JavaMain.java:55)
at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:38)
at org.apache.oozie.action.hadoop.JavaMain.main(JavaMain.java:36)
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.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:225)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:430)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1557)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)`

我已经验证了这个类存在于apache-nutch-1.7.jar文件中。

如果我请求hadoop在命令shell中作为map-reduce作业运行,如下所示:

代码语言:javascript
复制
`hadoop jar apache-nutch-1.7.jar org.apache.nutch.indexer.IndexingJob -D solr.server.url=http://ip-redacted:8983/solr/raw hdfs://ip-redacted:8020/user/admin/c -dir hdfs://ip-redacted:8020/user/admin/s000`

它成功了!!但是,当我通过Hue创建一个oozie作业时,它失败了……

此外,其他操作,如注入,生成,获取,解析在色调中工作良好。这是唯一失败的solrindex步骤,我不知道如何修复它。任何关于这方面的输入都将是很棒的!

EN

回答 2

Stack Overflow用户

发布于 2014-05-23 14:20:31

您是否将Nutch jar (如果需要,还包括依赖项)放在工作流的HDFS工作区的'lib‘目录中?

票数 0
EN

Stack Overflow用户

发布于 2014-09-23 16:58:49

啊,我开始讨厌Nutch的包装了!

尝试从作业归档文件中提取类/插件文件夹,将其复制到HDFS (类似于hdfs dfs -put -r plugins lib),然后将插件文件夹的HDFS路径添加到索引步骤的"files“列表中。

最佳,爱德华多

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23815577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档