最近学习机器学习,弄点小数据研究算法对于学习阶段还不错,不过不和实际数据结合总觉得是在玩玩具,因此想抓点数据搞点小应用。
nutch有2.1版本了,看介绍还不错,和hbase、gora结合使用,这样抓取数据的分布式存储和处理都一下ok了,那就试试吧。
前提
我的主机是centos系统,java和hadoop都已安装并正常使用,hadoop是按伪分布式方式部署的。
hbase版本使用hbase-0.90.6.tar.gz,nutch使用apache-nutch-2.1-src.tar.gz
hbase安装使用
按nutch2.1 wiki文档,hbase的版本最好是0.90.x且大于等于0.90.4,我下载了0.90.6,参考http://blog.csdn.net/hguisu/article/details/7244413配置运行成功,下面是主要步骤:
1:解压
tar xfz hbase-0.90.6.tar.gz
cd hbase-0.90.6
2:启动
bin/start-hbase.sh即可
就这两步就可以了,不能再简单了
3:停止hbase
bin/stop-hbase.sh
4:命令行终端
bin/hbase shell
常用命令:
list -- 查看有哪些表
scan 'tablename' -- 查看表内容
put
get
具体使用请自己google,太多了,我这刚学的不太懂
nutch2.1安装使用
按http://wiki.apache.org/nutch/Nutch2Tutorial的步骤做就可以了,没啥特别的
第一步,编辑conf/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>storage.data.store.class</name> <value>org.apache.gora.hbase.store.HBaseStore</value> <description>Default class for storing data</description> </property> </configuration>
<dependency org="org.apache.gora" name="gora-hbase" rev="0.2" conf="*->default" />
gora.datastore.default=org.apache.gora.hbase.store.HBaseStore
除了wiki上提到的,最后要加上下面步骤:
编辑conf/nutch-default.xml
为http.agent.name属性写一个值,下面有说明不能为空,且告诉你该怎么写
另外http.robots.agents属性要在*前面加呢上面写的值,用逗号和*号分隔,下面是一个示例:
<property> <name>http.agent.name</name> <value>yourorg</value> <description>HTTP 'User-Agent' request header. MUST NOT be empty - please set this to a single word uniquely related to your organization. NOTE: You should also check other related properties: http.robots.agents http.agent.description http.agent.url http.agent.email http.agent.version and set their values appropriately. </description> </property> <property> <name>http.robots.agents</name> <value>yourorg,*</value> <description>The agent strings we'll look for in robots.txt files, comma-separated, in decreasing order of precedence. You should put the value of http.agent.name as the first agent name, and keep the default * at the end of the list. E.g.: BlurflDev,Blurfl,* </description> </property>上面yourorg替换为自己的名称即可
这样就可以用bin/nutch crawl urls -depth 3 -topN 50这样的命令运行了,其中urls里边放置你要抓取的网站文本文件,比如我写个a.txt,里边按行写网站url就可以,可以有多个文件。
抓取文件可以用bin/nutch readdb方式查看信息,也可以到hbase终端查看
后面我会再写一些文章讲述如何操作nutch抓取,结果查看,结果处理等