hadoop - Nutch 和 HBase 配置错误

标签 hadoop hbase nutch

我试图让 nutch 和 hbase 基于这个 docker 图像工作:https://hub.docker.com/r/cogfor/nutch/

我收到一个异常,我尝试注入(inject)一个 URL 文件:

InjectorJob: starting at 2017-12-19 20:49:45
InjectorJob: Injecting urlDir: urls
Exception in thread "main" java.lang.NoClassDefFoundError: 
org/apache/hadoop/hbase/HBaseConfiguration
org.apache.gora.hbase.store.HBaseStore.initialize(HBaseStore.java:114)
at g.apache.gora.store.DataStoreFactory.initializeDataStore(DataStoreFactory.java:102)
at org.apache.gora.store.DataStoreFactory.createDataStore(DataStoreFactory.java:161)
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:218)
at org.apache.nutch.crawl.InjectorJob.inject(InjectorJob.java:252)
at org.apache.nutch.crawl.InjectorJob.run(InjectorJob.java:275)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.nutch.crawl.InjectorJob.main(InjectorJob.java:284)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

我知道 Nutch/HBase/Hadoop 之间存在一些错误配置。

我的 gora.properties 有:
gora.datastore.default=org.apache.gora.hbase.store.HBaseStore

我的 hbase-site.xml 有:
<configuration>                                                                                                                                                                                                                                                               
<property>
   <name>hbase.rootdir</name>
   <value>file:///data</value>
</property>
<property>
   <name>hbase.cluster.distributed</name>
   <value>false</value>
</property>
</configuration>

我的 nutch-site.xml 有:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
 <property>
   <name>http.agent.name</name>
    <value>My Spider</value>
  </property>
  <property>
    <name>storage.data.store.class</name>
    <value>org.apache.gora.hbase.store.HBaseStore</value>
    <description>Default class for storing data</description>
   </property>
  <property>
   <name>plugin.includes</name>
    <value>protocol-httpclient|urlfilter-regex|parse-(text|tika|js)|index-(basic|anchor)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
  </property>
  <property>
    <name>db.ignore.external.links</name>
    <value>true</value>
  </property>
  <property>
    <name>parser.character.encoding.default</name>
    <value>utf-8</value>
  </property>
  <property>
    <name>http.content.limit</name>                                                                                                                                                                                                                                           
   <value>6553600</value>
 </property>

这同样是在 S.O. 上多次报告错误。但没有一个解决方案对我有用。 $HBASE_HOME 和 $HADOOP_CLASSPATH 环境变量设置为:
root@a5fb7fefc53e:/nutch_source/runtime/local/bin# echo $HADOOP_CLASSPATH
/opt/hbase-0.98.21-hadoop2/lib/hbase-client-0.98.21-hadoop2.jar: 
/opt/hbase-0.98.21-hadoop2/lib/hbase-common-0.98.12-hadoop2.jar: 
/opt/hbase-0.98.21-hadoop2/lib/protobuf-java-2.5.0.jar: /opt/hbase-
0.98.21-hadoop2/lib/guava-12.0.1.jar: /opt/hbase-0.98.21-
hadoop2/lib/zookeeper-3.4.6.jar: /opt/hbase-0.98.21-hadoop2/lib/hbase-
protocol-0.98.12-hadoop2.jar

root@a5fb7fefc53e:/nutch_source/runtime/local/bin# echo $HBASE_HOME       

/opt/hbase-0.98.21-hadoop2

我验证了所有这些文件都存在。
有人可以帮我解决我所缺少的吗?

最佳答案

文档中提到了这个问题 (https://wiki.apache.org/nutch/Nutch2Tutorial)

“注意,可能会遇到以下异常:java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration;这是由于有时将 hbase TEST jar 部署在 lib 目录中。要解决此问题,只需复制将您安装的 HBase 目录中的库转移到构建库目录中。(此问题当前正在进行中)。

所有需要做的是:

cp -R /root/hbase/lib/* /root/nutch/lib/

nutch 将开始正常工作。

关于hadoop - Nutch 和 HBase 配置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47895336/

相关文章:

java - 使用Hadoop解析日志文件

hadoop - 我们可以为配置单元 View 明确指定分隔符吗?

java - 当对象由仅映射的 mapred 作业映射时,是否可以将对象的实例与一个文件关联?

java - 使用 Java 将 Json 对象转换为 Parquet 格式而不转换为 AVRO(不使用 Spark、Hive、Pig、Impala)

MySQL 和 HBase 连接

java - 与使用 java 相比,hbase/hadoop 中的流作业是否有任何功能损失?

hadoop - 使用Nutch Content Limit的建议

java - 使用自定义文件配置 EMR 节点

ant - 无法使用ant编译Nutch1.4

web-services - HBase上的Web服务