Nutch2+Hbase环境部署和基本使用
由于项目想借助Nutch来做网络爬虫,所以一番研究,发现网上文档比较散,学习的很艰难,因此总结了一些,放上来与大家交流。
1 环境部署
Nutch有1.x系列和2.x系列,主要区别是2.x使用了Gora作为持久层媒介,可以将数据持久化到关系型数据库,更详细的介绍参考Nutch官网。
这里主要介绍采用Nutch2.3.1+HBase的方式进行部署,HBase又依赖于HDFS和Zookeeper,实际上,Nutch只是将HBase视为持久层,而并不关心HBase是单机模式还是分布模式,HBase又是将文件存储于HDFS,将元数据(表信息)存储于zookeeper,只不过单机模式下,把文件系统视为HDFS,而zookeeper可以使用内置,也可以使用外置的zookeeper。
安装Nutch
解压缩源码包:
tar –zxf apache-nutch-2.3.1-src.tar.gz
进入到解压缩后的目录
cd apache-nutch-2.3.1
执行ant进行编译
ant
(如果解压缩的是bin包,则无须ant编译,路径/…/apache-nutch-2.3.1即为$ NUTCH_RUNTIME_HOME。实际上2.x已经没有bin包了,只有1.x才有bin包。)
编译需要较长时间(主要是下载依赖特别慢,有说法是修改下载源地址,我试过反而会下载失败),编译完成后,将生成/runtime/local目录,可以设置环境变量:
export NUTCH_RUNTIME_HOME=/home/apache/apache-nutch-2.3.1/runtime/local
export PATH=$PATH:$NUTCH_RUNTIME_HOME/bin
输入bin/nutch 看到提示信息说明安装成功
安装Ant
如果在执行ant时提示没有ant命令,则需要先安装ant:
解压缩tar包
tar –zxf apache-ant-1.9.6-bin.tar.gz
添加环境变量
export ANT_HOME=/home/apache-ant-1.9.6/ant
export PATH=/home/apache-ant-1.9.6/bin:$PATH
输入ant –version看到版本号说明安装成功
安装HBase
解压缩tar包
tar –zxf hbase-0.98.8-hadoop2-bin.tar.gz
添加环境变量
export HBASE_HOME=/home/hbase-0.98.8-hadoop2
2 配置方法
配置单机模式下的HBase
单机模式下,不需要HDFS和Zookeeper,使用本地文件系统作为存储介质。
(单机模式需要使用端口2181,理论上应该是要求该端口未被占用。)
修改$HBASE_HOME/conf/ hbase-site.xml
在<configuration>标签中添加配置:
<property>
<name>hbase.rootdir</name>
<value>file:///home/testuser/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/testuser/zookeeper</value>
</property>
这里配置的rootdir是HBase存储文件的存储路径,dataDir是HBase使用zookeeper存放的元数据的存储路径。
使用命令$HBASE_HOME/bin/start-hbase.sh启动HBase,并使用jps命令查看进程,发现有HMaster进程则说明启动成功,可以在$HBASE_HOME/logs目录下找到运行日志。
单机模式下只能使用本地存储文件作为存储介质,且只能使用内置的zookeeper,不能使用外置的HDFS和zookeeper。
配置集群模式下的HBase
1、修改$HBASE_HOME/conf/ hbase-site.xml
在<configuration>标签中添加配置:
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.1.92:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
hbase.cluster.distributed属性为false代表单机模式,默认为fasle,置为true则代表分布模式,此时的hbase.rootdir要配置为HDFS的路径,这里的192.168.1.92:9000是HDFS的ip和端口,根据实际情况配置。如果没有那么需要搭建Hadoop2的环境。
2、修改$HBASE_HOME/conf/ hbase-env.sh为HBase设置jdk路径:
增加(或取消注释)
export JAVA_HOME=/usr/java/jdk1.7.0_71/
使用命令$HBASE_HOME/bin/start-hbase.sh启动HBase,这是你会发现一共启动了三项,使用jps命令查看进程,发现有HMaster、HRegionServer、H QuorumPeer进程则说明启动成功,可以在$HBASE_HOME/logs目录下分别找到运行日志。
3、(可选)使用外置的Zookeeper
在集群模式下,可以使用外置的Zookeeper,也可以使用HBase内置的Zookeeper。刚才的H QuorumPeer进程就是HBase启动的内置Zookeeper。使用外置的Zookeeper时新增如下配置:
修改$HBASE_HOME/conf/ hbase-env.sh告诉HBase使用外置的zookeeper:
增加(或取消注释)
export HBASE_MANAGES_ZK=false
在启动HBase之前,先启动你的zookeeper即可。默认HBase会向localhost:2181寻找zookeeper,如果想自定义ip和端口,则可以在$HBASE_HOME/conf/ hbase-site.xml中添加配置:
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.1.92</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
启动外置zookeeper后,再启动HBase,这是只有两个进程启动HMaster、HRegionServer,同样可以在$HBASE_HOME/logs目录下分别找到运行日志。
Nutch2.x关联HBase
官方建议Nutch2.3.1使用HBase0.98.8
在关联HBase之前,先配置你的Nutch,此配置类似Nutch1.x的配置:
1、修改$NUTCH_RUNTIME_HOME/conf/nutch-site.xml
新增如下属性:
<property>
<name>http.agent.name</name>
<value>My Nutch Spider</value>
</property>
2、(可选)设置url过滤规则,修改$NUTCH_RUNTIME_HOME/conf/regex-urlfilter.txt
添加类似如下正则匹配:
+^http://([a-z0-9]*\.)*nutch.apache.org/
+号代表匹配上的添加,-号代表匹配上的不添加。
3、为Nutch配置HBase属性
修改$NUTCH_RUNTIME_HOME/conf/nutch-site.xml新增如下配置:
<property>
<name>storage.data.store.class</name>
<value>org.apache.gora.hbase.store.HBaseStore</value>
<description>Default class for storing data</description>
</property>
4、为Nutch添加HBase依赖:
修改$NUTCH_HOME/ivy/ivy.xml(注意这里的$NUTCH_HOME指Nutch所在目录)
添加(或取消注释)以下配置
<!-- Uncomment this to use HBase as Gora backend. -->
<dependency org="org.apache.gora" name="gora-hbase" rev="0.6.1" conf="*->default" />
<dependency org="org.apache.hbase" name="hbase-common" rev="0.98.8-hadoop2" conf="*->default" />
5、为Nutch配置gora为hbase:
修改$NUTCH_RUNTIME_HOME/conf/gora.properties
添加(或取消注释)以下配置
gora.datastore.default=org.apache.gora.hbase.store.HBaseStore
6、使用ant重新编译Nutch、使配置生效:
在Nutch所在目录下执行
ant runtime
7、如果HBase的zookeeper不在NUTCH所在的服务器上,还需要将HBase的conf下的hbase-site.xml文件,拷贝到$NUTCH_RUNTIME_HOME/conf目录下。这样NUTCH才能找到HBase。
3 使用说明
HBase使用说明
无论是单机模式还是分布模式,都可以通过以下命令测试HBase的正常使用:
启动HBase
$HBASE_HOME/bin/start-hbase.sh
进入命令行:
$HBASE_HOME/bin/hbase shell
在命令行可以执行的命令:
create 'test', 'cf'
list 'test'
put 'test', 'row1', 'cf:a', 'value1'
put 'test', 'row2', 'cf:b', 'value2'
put 'test', 'row3', 'cf:c', 'value3'
scan 'test'
get 'test', 'row1'
disable 'test'
enable 'test'
drop 'test'
关闭HBase
$HBASE_HOME/bin/stop-hbase.sh
Nutch2.x使用说明
这里以2.3.1版本为例。
1、创建你的种子:
新建目录urls、在urls目录下创建文件seeds.txt,在seeds.txt中添加urls地址,一行一条urls。
2、inject可以理解为创建一个爬取任务:
$NUTCH_RUNTIME_HOME/bin/nutch inject urls -crawlId yyy
这里的urls就是你创建的种子url所在的文件夹,可以使用绝对路径。
yyy即为爬取任务的ID,在HBase中会创建一个yyy_webpage的表,来记录所有此爬取任务的数据信息。可以在HBase命令行用list等命令来查看爬取数据的变化。
3、generate 获取将要爬取的链接
$NUTCH_RUNTIME_HOME/bin/nutch generate -crawlId yyy
4、fetch 爬取网页
$NUTCH_RUNTIME_HOME/bin/nutch fetch –all -crawlId yyy –threads 4
5、parse解析网页数据
$NUTCH_RUNTIME_HOME/bin/nutch parse -crawlId yyy -all
6、updata更新数据库
$NUTCH_RUNTIME_HOME/bin/nutch updatedb -all -crawlId yyy
7、重复2-6步即可继续下一个深度的爬取
详细的命令可选参数,参考Nutch官网。
Nutch2+Hbase环境部署和基本使用的更多相关文章
- eclipse+hbase开发环境部署
一.前言 1. 前提 因为hbase的运行模式是伪分布式,需要用到hdfs,所以在此之前,我已经完成了hadoop-eclipse的开发环境搭建,详细看另一篇文章:hadoop开发环境部署——通过ec ...
- ubuntu12.04+hadoop2.2.0+zookeeper3.4.5+hbase0.96.2+hive0.13.1伪分布式环境部署
目录: 一.hadoop2.2.0.zookeeper3.4.5.hbase0.96.2.hive0.13.1都是什么? 二.这些软件在哪里下载? 三.如何安装 1.安装JDK 2.用parallel ...
- Flume环境部署和配置详解及案例大全
flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统.支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本.HDF ...
- kafka 基础知识梳理及集群环境部署记录
一.kafka基础介绍 Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特 ...
- 指导手册06:HBase安装部署
指导手册06:HBase安装部署 配置环境 1.参考文件: https://www.cnblogs.com/lzxlfly/p/7221890.html https://www.cnblogs.com ...
- dotnetcore 与 hbase 之一——hbase 环境准备
转载请注明出处www.cnblogs.com/hsxian! 总述 这是一系列针对 .net core (c#) 读取 hbase 的教程.本人苦于找不到 c#的原生 hbase 客户端,多番寻觅之下 ...
- HBase的部署与其它相关组件(Hive和Phoenix)的集成
HBase的部署与其它相关组件(Hive和Phoenix)的集成 一.HBase部署 1.1.Zookeeper正常部署 首先保证Zookeeper集群的正常部署,并启动之: /opt/module/ ...
- 大数据学习(16)—— HBase环境搭建和基本操作
部署规划 HBase全称叫Hadoop Database,它的数据存储在HDFS上.我们的实验环境依然基于上个主题Hive的配置,参考大数据学习(11)-- Hive元数据服务模式搭建. 在此基础上, ...
- Web应用之LAMP源码环境部署
一.LAMP环境的介绍 1.LAMP环境的重要性 思索许久,最终还是决定写一篇详细的LAMP的源码编译安装的实验文档,一来是为了给自己一个交代,把技术进行系统的归纳,将技术以极致的形式呈现出来,做为一 ...
随机推荐
- 提高sevenzipsharp 检查密码的速度(1)
前言:sevenzipsharp检查密码(包括检查压缩包的有效性)的函数是SevenZipExtractor.check(), sevenzipsharp调用的是7zip的动态链接库,而且不止是7zi ...
- CSS3转换
一.2D转换 1.css3 rotate()旋转 通过指定的角度参数对原元素指定一个2D rotation(2D 旋转) 语法: transform:rotate(<angle>); ...
- 反汇编工具capstone安装后import error
使用sudo pip install capstone后,使用如下代码import时出现error. from capstone import * 错误信息: File "/usr/loca ...
- 简洁的java代码
最近在codewars上刷题,学习到了不少简洁优雅的代码. codewars和leetcode都是刷题网站,codewars的题目难度分类比较广,适合各种不同水平的coder刷题. 刷完题后,看一下其 ...
- codeforces 742E (二分图着色)
E. Arpa's overnight party and Mehrdad's silent entering Note that girls in Arpa's land are really at ...
- em 换算
1 ÷ 父元素的font-size × 需要转换的像素值 = em值 http://www.w3cplus.com/css/px-to-em
- 让padding、border等不占据宽度
box-sizing:border-box; -moz-box-sizing:border-box; /* Firefox */ -webkit-box-sizing:border-box; /* S ...
- 用数组取到当前栈内的ViewController 并根据下标取某个ViewController
NSArray *navArray = self.navigationController.viewControllers; TabsViewController *tabsVC = [[TabsVi ...
- zend studio常用快捷键
1.提示符助手快捷键 alt+/ 你可以自定义 window->keys->Content assist->Binding 2.复制当前行 alt+ctrl+下 3.删除 ctrl+ ...
- css 3 动画
1.transition,其作用是:平滑的改变CSS的值.无论是点击事件,焦点事件,还是鼠标hover,只要值改变了,就是平滑的,就是动画. transition 属性介绍: transition-p ...