1. org.apache.nutch.searcher.NutchBean 执行搜索时,出现QueryFilter not found的情况
解决办法:配置nutch-default.xml,修改plugin.folders标签的值为./src/plugin,但这样做会引起在执行crawl时找不到urlnormalizers的问题
2. 执行crawl时,出现classnotfound的问题
解决办法:在eclipse中没有生成jar文件,因此代码是执行的hadoop主机上的,而非本地的,若hadoop主机上找不到同名的类,则会抛出该异常。解决办法有2种:a) 在每台hadoop主机上拷贝对应的class文件;b)在本地生成jar文件后再执行
3. 执行dfs -rmr删除hadoop中文件l时,出现namenode in safe mode的问题
问题原因:
在执行crawl时,使用ctrl+c或者eclipse的停止按钮强制中断MR过程
解决办法:
a) 修改dfs.safemode.threshold.pct为一个比较小的值,缺省是0.999
b) hadoop dfsadmin -safemode leave命令强制离开
safemode模式说明:
NameNode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例(1-dfs.safemode.threshold.pct),则系统会一直处于安全模式状态即只读状态。
dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。
下面这行摘录自NameNode启动时的日志(block上报比例1达到了阀值0.9990)
The ratio of reported blocks 1.0000 has reached the threshold 0.9990. Safe mode will be turned off automatically in 18 seconds.
安全模式的退出前提 - 整个文件系统中的99.9%(默认是99.9%,可以通过dfs.safemode.threshold.pct设置)的Blocks达到最小备份级别(默认是1,可以通过dfs.replication.min设置)。
用户可以通过dfsadmin -safemode value 来操作安全模式,参数value的说明如下:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get - 返回安全模式是否开启的信息
wait - 等待,一直到安全模式结束