使用 Hbase 运行 Nutch 爬虫 2.2 时出现空指针异常

Posted

技术标签:

【中文标题】使用 Hbase 运行 Nutch 爬虫 2.2 时出现空指针异常【英文标题】:Getting null pointer exception when running Nutch crawler 2.2 with Hbase 【发布时间】:2013-08-29 03:12:39 【问题描述】:

当我运行 Nutch 命令:~/nutch/runtime/deploy$ bin/nutch crawl urls -dir /user/dlequoc/urls -depth 2 -topN 5 时,出现以下异常:

================================================ ========

13/08/26 16:30:15 INFO mapred.JobClient: 地图 100% 减少 0% 13/08/26 16:30:29 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000000_0,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:32 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000001_0,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:32 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000005_0,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:32 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000004_0,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:32 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000002_0,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:32 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000003_0,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:44 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000001_1,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:47 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000000_1,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:47 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000005_1,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:47 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000002_1,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:47 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000004_1,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:47 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000003_1,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:59 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000000_2,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:59 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000002_2,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:30:59 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000001_2,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:31:02 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000005_2,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:31:05 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000003_2,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:31:11 信息 mapred.JobClient:任务 ID: 尝试_201308261546_0004_r_000004_2,状态:失败 java.lang.NullPointerException 在 org.apache.avro.util.Utf8.(Utf8.java:37) 在 org.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 在 org.apache.hadoop.mapred.Child.main(Child.java:249) 13/08/26 16:31:20 信息 mapred.JobClient:作业完成:job_201308261546_0004 13/08/26 16:31:20 信息 mapred.JobClient: 计数器: 24 13/08/26 16:31:20 信息 mapred.JobClient:作业计数器 13/08/26 16:31:20 信息 mapred.JobClient:启动减少任务=23 13/08/26 16:31:20 INFO mapred.JobClient:SLOTS_MILLIS_MAPS=113452 13/08/26 16:31:20 信息 mapred.JobClient:所有减少等待后花费的总时间 预留槽 (ms)=0 13/08/26 16:31:20 INFO mapred.JobClient: 保留槽后所有地图等待的总时间(毫秒)=0 13/08/26 16:31:20 INFO mapred.JobClient: Rack-local map tasks=1 13/08/26 16:31:20 INFO mapred.JobClient: 启动地图任务=1 26 年 13 月 8 日 16:31:20 信息 mapred.JobClient:减少任务失败 = 1 13/08/26 16:31:20 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=268210 13/08/26 16:31:20 信息 mapred.JobClient: FileSystemCounters 13/08/26 16:31:20 信息 mapred.JobClient: FILE_BYTES_READ=25743276 13/08/26 16:31:20 信息 mapred.JobClient: HDFS_BYTES_READ=704 13/08/26 16:31:20 信息 mapred.JobClient: FILE_BYTES_WRITTEN=51473783 13/08/26 16:31:20 信息 mapred.JobClient: 文件输入格式计数器 13/08/26 16:31:20 INFO mapred.JobClient: 字节读取 = 0 13/08/26 16:31:20 信息 mapred.JobClient: Map-Reduce 框架 13/08/26 16:31:20 INFO mapred.JobClient: 地图输出 物化字节=25720344 13/08/26 16:31:20 INFO mapred.JobClient: 合并输出记录=0 13/08/26 16:31:20 INFO mapred.JobClient: 地图输入记录=333988 13/08/26 16:31:20 INFO mapred.JobClient: 物理内存(字节)快照=449036288 13/08/26 16:31:20 INFO mapred.JobClient:溢出记录 = 667976 13/08/26 16:31:20 信息 mapred.JobClient:映射输出字节=25052332 13/08/26 16:31:20 INFO mapred.JobClient: CPU 时间花费 (ms)=81870 13/08/26 16:31:20 INFO mapred.JobClient:提交的堆使用总量(字节)=208011264 13/08/26 16:31:20 INFO mapred.JobClient:虚拟内存(字节) 快照=740638720 13/08/26 16:31:20 信息 mapred.JobClient: 合并输入记录=0 13/08/26 16:31:20 INFO mapred.JobClient: 地图输出记录=333988 13/08/26 16:31:20 INFO mapred.JobClient: SPLIT_RAW_BYTES=704 线程“主”中的异常 java.lang.RuntimeException:作业失败:名称=生成:空, jobid=job_201308261546_0004 在 org.apache.nutch.util.NutchJob.waitForCompletion(NutchJob.java:54) 在 org.apache.nutch.crawl.GeneratorJob.run(GeneratorJob.java:199) 在 org.apache.nutch.crawl.Crawler.runTool(Crawler.java:68) 在 org.apache.nutch.crawl.Crawler.run(Crawler.java:152) 在 org.apache.nutch.crawl.Crawler.run(Crawler.java:250) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 在 org.apache.nutch.crawl.Crawler.main(Crawler.java:257) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.apache.hadoop.util.RunJar.main(RunJar.java:156)

你能帮忙吗? 谢谢!

【问题讨论】:

【参考方案1】:

命令 /bin/nutch crawl 在 Nutch 2.x 中已弃用。请改用/bin/crawl

【讨论】:

以上是关于使用 Hbase 运行 Nutch 爬虫 2.2 时出现空指针异常的主要内容,如果未能解决你的问题,请参考以下文章

[Nutch]Nutch2.3+Hadoop+HBase+Solr在Ubuntu环境搭建

无法在 Hadoop2 上运行 Nutch2(Nutch 2.x + Hadoop 2.4.0 + HBase 0.94.18 + Gora 0.5 + Avro 1.7.6)

通过Nutch扩展点开发插件(添加自定义索引字段到solr)

Nutch2.2.1 笔记二 : Nutch2.2.1 + Mysql 配置,调试

Nutch + Hbase

Nutch