Nutch2.3 + HBase 0.94 + Solr 搭建网络数据採集器!

Nutch2.3+HBase0.94+Solr搭建网络数据採集器

介绍

大数据的火热使得人们越来越多地关注我们产生的数据,而爬虫作为数据採集的工具,为大数据提供了方便的获取途径。本文通过结合Nutch、Solr及Hbase向读者展示如何搭建属于自己的数据採集工具,笔者使用的系统为Ubuntu16.04,以下系统安装及编译均在该系统下完成并通过测试,需要的软体包及完整的配置文件可以通过本文的Git仓库地址获得。

术语

•Nutch-数据採集器(爬取并解析网站数据)

•HBase-分布式的存储系统,Hadoop生态系统的组成之一

•Gora-Nutch用于存储数据的抽象层

•Solr-高性能的全文搜索伺服器,提供数据查询的API接口,用于搜索Nutch爬取的数据。

软体依赖

•OpenJKD8&ant

•Nutch2.3(版本必须为2.3,2.2笔者测试未通过)

•HBase0.94.26(同样注意版本)

•Solr4.8.0

通过Ubuntu系统自带的包管理器安装OpenJDK以及ant,或者下载.deb安装文件自行安装,笔者推荐使用包管理器,可以避免安装过程中的依赖问题。

解压Nutch及HBase安装包至某一目录下。从现在开始我们通过$NUTCH_ROOT指代Nutch文件夹根目录,$HBASE_ROOT指代HBase文件夹的根目录。

配置HBase

1.编辑$HBASE_ROOT/conf/hbase-site.xml文件并将添加

hbase.rootdir

file:///full/path/to/where/the/data/should/be/stored

hbase.cluster.distributed

false

2.编辑$HBASE_ROOT/conf/hbase-env.sh并将JAVA_HOME配置前的注释取消

-#exportJAVA_HOME=/usr/java/jdk1.6.0/

+exportJAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/

笔者实际测试中发现,在环境变量中设置了JAVA_HOME后无需在该文件中重新配置该变量。

3.启动HBase

$HBASE_ROOT/bin/start-hbase.sh

编译Nutch

Nutch1.x从1.7版本开始不提供完整的部署文件,只提供原始码文件及相关的build.xml文件,这需要用户自己编译Nutch。

1.编辑$NUTCH_ROOT/conf/gora.properties并添加HBase配置。

-#gora.datastore.default=org.apache.gora.mock.store.MockDataStore

+gora.datastore.default=org.apache.gora.hbase.store.HBaseStore

2.编译Nutch

$cd$NUTCH_ROOT

$antclean

$antruntime

编译需要下载一些依赖包,因此会占用大约10分钟左右时间,编译完成后,在$NUTCH_ROOT目录会生成两个文件夹:build和runtime。

1.修改Nutch配置文件$NUTCH_ROOT/runtime/local/conf/nutch-site.xml

http.agent.name

mycrawlername

http.robots.agents

mycrawlername

storage.data.store.class

org.apache.gora.hbase.store.HBaseStore

plugin.includes

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)|indexer-solr

db.ignore.external.links

true

2.配置Nutch集成HBase,编辑$NUTCH_ROOT/runtime/local/conf/hbase-site.xml

hbase.rootdir

file:///full/path/to/where/the/data/should/be/stored

hbase.cluster.distributed

false

集成Solr

1.下载Solr并解压至任意目录,运行Solr

$cdsolr-4.8/example

$java-jarstart.jar

用浏览器打开[:8983/solr/admin/](:8983/solr/admin/),如果页面正常显示,说明启动成功。

抓取数据

1.在$NUTCH_ROOT目录下创建一个空文件夹seed,并在该文件夹下创建文件urls.txt。

$mkdirseed

$echo"">>seed/urls.txt

$echo"">>seed/urls.txt

2.启动HBase

$$HBASE_ROOT/hbase/bin/hbase-start.sh

$jps

通过jps命令可以查看HBase是否正常启动。

3.抓取数据并创建索引

$$NUTCH_ROOT/runtime/local/bin/crawlseed/TestCrawl:8983/solr2

4.打开Solr页面,输入关键词即可查询得数据。

命令帮助

•crawl命令

$cdruntime/local/bin

$./crawl

MissingseedDir:crawl

•notch命令

./nutch

Usage:nutchCOMMAND

whereCOMMANDisoneof:

injectinjectnewurlsintothedatabase

hostinjectcreatesorupdatesanexistinghosttablefromatextfile

generategeneratenewbatchestofetchfromcrawldb

fetchfetchURLsmarkedduringgenerate

parseparseURLsmarkedduringfetch

updatedbupdatewebtableafterparsing

updatehostdbupdatehosttableafterparsing

readdbread/dumprecordsfrompagedatabase

readhostdbdisplayentriesfromthehostDB

elasticindexruntheelasticsearchindexer

solrindexrunthesolrindexeronparsedbatches

solrdedupremoveduplicatesfromsolr

parsecheckerchecktheparserforagivenurl

indexcheckerchecktheindexingfiltersforagivenurl

pluginloadapluginandrunoneofitsclassesmain()

nutchserverruna(local)Nutchserveronauserdefinedport

junitrunsthegivenJUnittest

or

CLASSNAMEruntheclassnamedCLASSNAME

Mostcommandsprinthelpwheninvokedw/oparameters.

文|原创:阡陌网络

------本文由卧龙会团队成员阡陌网络原创,请勿抄袭,转载联系卧龙会进行授权,否则追究法律责任。