Nutch+Hadoop集群搭建(转载)

1、Apache Nutch

   Apache Nutch是一个用于网络搜索的开源框架,它提供了我们运行自己的搜索引擎所需的全部工具,包括全文搜索和Web爬虫。

1.1、Nutch的组件结构

WebDB:存储网页数据和连接信息

Fetch lists:将WebDB所存储的连接分成多个组,来用于分布式检索

Fetchers:检索Fetch list中的内容并下载到本地,共有两项输出:分别是连接的update

信息和内容content

Updates:更新WebDB的页面检索状态

WebDB、updates、fetch lists和fetchers组成循环结构,不断运行下去,来确保所得到的Web镜像是最新的

Content:界面内容,获取内容之后,Nutch便可以根据它来创建索引并执行查询操作

Indexers:对目标Content创建索引,当索引内容较大时,可把索引划分成多个索引片段,然后分配给不同的seracher实现并行检索

Searchers:实现查询功能的同时也会缓存content

Webservers:有两种角色:

1处理用户的交互请求(Nutch Search Client)

2从searchers中获取查询结果(HTTP Server)

注:fetchers和searchers两个节点所对应的操作可放到分布式环境(hadoop)中去完成

创建索引及查询的操作可通过solr框架来实现

1.2、Nutch的数据结构:

Nutch数据包含3个目录结构,分别是:

1、Crawldb:用于存储Nutch将要检索的url信息,以及检索状态(是否检索、何时检索)

2、Linkdb:用于存储每一个url所包含的超链接信息(包括锚点)

3、Segments:一组url的集合,他们作为一个检索单元,可用于分布式检索

Segment目录包含以下子目录信息:

(1)   crawl_generate:定义将要检索的url集合(文件类型为SequenceFile)

(2)   crawl_fetch:存储每一个url的检索状态(文件类型为MapFile)

(3)   content:存储每一个url所对应的二进制字节流(文件类型为MapFile)

(4)   parse_text:存储每一个url所解析出的文本内容(文件类型为MapFile)

(5)   parse_data:存储每一个url所解析出的元数据(文件类型为MapFile)

(6)   crawl_parse:用于及时更新crawldb中的内容(如要检索的url已不存在等情况)--文件类型为SequenceFile

注:结合Nutch的数据结构和组件结构来看,crawldb相当于WebDB,而segment相当于是fetchlists.

分布式crawl过程中,每个MapReduce Job都会生成一个segment,名称以时间来命名

2、Apache Hadoop

Nutch的单机采集(local方式)并不复杂,然而当所采集的数据源较大时,一台机器难以满足性能上的需求,因此通常的做法是将Nutch集成到Hadoop环境中以完成分布式采集和分布式查询的效果(deploy方式)。

Hadoop框架在功能划分上包含3个子框架,分别是:

MapReduce:用于分布式并行计算

HDFS:用于分布式存储

Common:封装HDFS和MapReduce所需要的实用类

2.1、MapReduce工作流程

1.将输入源(Inputfiles)切割成不同的片段,每个片段的大小通常在16M-64M之间(可通过参数配置),然后启动云端程序。

2.MapReduce程序基于master/slaves方式部署,在云端机器中选中一台机器运行master程序,职责包括:调度任务分配给slaves,监听任务的执行情况。

3.在图形中,slave的体现形式为worker,当worker接到Map任务时,会读取输入源片段,从中解析出Key/Value键值对,并作为参数传递到用户自定义的Map功能函数之中,Map功能函数的输出值同样为Key/Value键值对,这些键值对会临时缓存在内存里面。

4.缓存之后,程序会定期将缓存的键值对写入本地硬盘(执行如图所示的local write操作),并且把存储地址传回给master,以便master记录它们的位置用以执行Reduce操作。

5.当worker被通知执行Reduce操作时,master会把相应的Map输出数据所存储的地址也发送给该worker,以便其通过远程调用来获取这些数据。得到这些数据之后,reduce worker会把具有相同Key值的记录组织到一起来达到排序的效果。

6.Reduce Worker会把排序后的数据作为参数传递到用户自定义的Reduce功能函数之中,而函数的输出结果会持久化存储到output file中去。

7.当所有的Map任务和Reduce任务结束之后,Master会重新唤醒用户主程序,至此,一次MapReduce操作调用完成。

2.2、HDFS组件结构

同MapReduce部署结构类似,HDFS同样具备master/slaves主仆结构

1.如图所示中,NameNode充当master角色,职责包括:管理文档系统的命名空间(namespace);调节客户端访问到需要的文件(存储在DateNode中的文件)

注:namespace—映射文件系统的目录结构

2.DataNodes充当slaves角色,通常情况下,一台机器只部署一个Datenode,用来存储MapReduce程序需要的数据

Namenode会定期从DataNodes那里收到Heartbeat和Blockreport反馈

Heartbeat反馈用来确保DataNode没有出现功能异常;

Blockreport包含DataNode所存储的Block集合

2.3、hadoop资源

http://wiki.apache.org/nutch/NutchHadoopTutorial基于Nutch和Hadoop完成分布式采集和分布式查询

 

3、环境搭建

3.1、需要准备

       3.1.1两台或以上Linux机器(这里假定为两台)

一台机器名称设置为master,另一台设置为slave01,两台机器具有相同的登录用户名nutch,并且将两台机器的etc/hosts文件设置成相同的内容,如:
       192.168.7.11          master

192.168.7.12         slave01

……

这样,便可以通过主机名找到对应的机器

       3.1.2搭建ssh环境

ssh的安装可通过如下命令完成:

$ sudo apt-get install ssh

$ sudo apt-get install rsync

       3.1.3安装JDK

$ apt-get install openjdk-6-jdkopenjdk-6-jre

       3.1.4下载最近版本的hadoop和nutch

下载地址:

Hadoop: http://www.apache.org/dyn/closer.cgi/hadoop/common/

Nutch: http://www.apache.org/dyn/closer.cgi/nutch/

3.2、搭建配置

3.2.1SSH登录配置

(1)在master机器上通过以下命令生成证书文件authorized_keys

$ ssh-keygen -t rsa -P ‘‘ -f ~/.ssh/id_rsa 
       $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

(2)将证书文件复制到其他机器的用户主目录下

$scp /home/nutch/.ssh authorized_keys [email protected]:/home/nutch/.ssh/authorized_keys

通过以上两步操作,master机器便可以在不需要密码的情况下ssh到slave01机器上

3.2.2HADOOP配置

同ssh登录证书的配置类似,HADOOP配置同样是在master机器上完成,然后在复制到slave机器上,确保每一台机器的hadoop环境相同

$HADOOP_HOME/conf目录下:

(1)hadoop-env.sh文件

        export HADOOP_HOME=/PATH/TO/HADOOP_HOME
        export JAVA_HOME=/PATH/TO/JDK_HOME
        export HADOOP_LOG_DIR=${HADOOP_HOME}/logs

(2)core-site.xml文件

        <configuration>
           <property>
               <name>fs.default.name</name>
               <value>hdfs://master:9000</value>
           </property>
        </configuration>

(3)hdfs-site.xml文件

        <configuration>
            <property>
                <name>dfs.name.dir</name>
               <value>/nutch/filesystem/name</value>
           </property>
            <property>
               <name>dfs.data.dir</name>
                <value>/nutch/filesystem/data</value>
            </property>
            <property>
               <name>dfs.replication</name>
               <value>1</value>
            </property>
        </configuration>

(4)mapred-site.xml文件

       <configuration>
            <property>
               <name>mapred.job.tracker</name>
                <value>master:9001</value>
           </property>
           <property> 
               <name>mapred.map.tasks</name>
               <value>2</value>
           </property> 
           <property> 
               <name>mapred.reduce.tasks</name>
               <value>2</value>
           </property> 
           <property>
               <name>mapred.system.dir</name>
               <value>/nutch/filesystem/mapreduce/system</value>
           </property>
           <property>
               <name>mapred.local.dir</name>
               <value>/nutch/filesystem/mapreduce/local</value>
           </property>
      </configuration>
     (5)masters和slaves配置
     将相应的机器IP加到对应的配置文件中去
    3.2.3 Nutch配置
     $NUTCH_HOME/conf目录下
      (1)nutch-site.xml文件
      <property>
               <name>http.agent.name</name>
               <value>Nutch Spider</value>
      </property>
      (2)regex-urlfilter.txt
      添加需要检索的url
      +^http://([a-z0-9]*\.)*nutch.apache.org/

(3)将修改后的文件放到NUTCH_HOME/runtime/deploy/nutch-*.job中

3.3、启动运行

   3.3.1 启动Hadoop

1.格式化namenode节点

bin/hadoop namenode –format

2.启动hadoop进程

bin/start-all.sh

启动成功后,可通过如下url查看NameNode和MapReduce运行状态

NameNode: http://master:50070/

MapReduce: http://master:50030/

3.向hdfs放入测试数据

$ bin/hadoop fs -put conf input

4.执行测试

$ bin/hadoop jar hadoop-examples-*.jar grep input output‘dfs[a-z.]+‘

5.关闭hadoop进程

bin/stop-all.sh

   3.3.2 运行Nutch

1启动前提:

(1).hadoop已成功启动

(2).将HADOOP_HOME/bin路径添加到环境变量中,以便Nutch找到hadoop命令

通过修改/etc/enviroment配置文件实现

(3)在控制台执行export JAVA_HOME=/PATH/TO/JAVA命令

    2向HDFS中存入待检索数据
    $ bin/hadoop fs -put urldir urldir
    注:第一个urldir为本地文件夹,存放了url数据文件,每行一个url
    第二个urldir为HDFS的存储路径
    3启动nutch命令
    在NUTCH_HONE/runtime/deploy目录下执行以下命令
    $ bin/nutch crawl urldir –dir crawl -depth 3 –topN 10
    命令成功执行后,会在HDFS中生成crawl目录
    注:一定要在deploy目录下执行该命令,在local目录下执行的是单机采集,而没有使用hadoop环境
时间: 2024-10-08 03:08:35

Nutch+Hadoop集群搭建(转载)的相关文章

三节点Hadoop集群搭建

1. 基础环境搭建 新建3个CentOS6.5操作系统的虚拟机,命名(可自定)为masternode.slavenode1和slavenode2.该过程参考上一篇博文CentOS6.5安装配置详解 2.Hadoop集群搭建(以下操作中三个节点相同的地方就只给出主节点的截图,不同的才给出所有节点的截图)   2.1 系统时间同步 使用date命令查看当前系统时间 系统时间同步 [[email protected] ~]# cd /usr/share/zoneinfo/ [[email protec

hadoop 集群搭建-suse linux 11

好久都没写了啊.感觉自己都不像是一个搞技术都了.来个存货吧! hadoop 集群搭建 3台机器 suse 系统 规划 IP 主机名 hostname hadoop角色10.96.91.93 namenode93 NameNode.SecondaryNameNode .ResourceManage. DataNode .NodeManager10.96.91.129 datanode129 DataNode NodeManager10.96.91.130 datanode130 DataNode

Hadoop集群搭建步骤

实验性操作是在虚拟机里进行的,除了搭建hadoop本身的操作之外,遇到的其它问题总结如下: 1. 虚拟机挂载windows磁盘: 添加硬件,要保证该硬件此时没有被读写访问等,因为挂载后,该磁盘在宿主机上就不能用了.启动虚拟机linux,执行 fdisk –l 查看windows磁盘的分区,如/dev/sdb2,然后执行挂载命令: mount /dev/sdb2 /mnt/win/ 然后就可以到/mnt/win目录下访问磁盘上的内容了 2. hadoop启动时如果报错,提示JAVA_HOME is

Hadoop集群搭建文档

  环境: Win7系统装虚拟机虚拟机VMware-workstation-full-9.0.0-812388.exe Linux系统Ubuntu12.0.4 JDK                jdk-7u17-linux-i586.tar.gz 搭建步骤: 首先在win系统装虚拟机,执行VMware-workstation-full-9.0.0-812388.exe: 其次需要在虚拟机上装Ubuntu12.0.4: 安装完成Ubuntu12.0.4之后,需要安装JDK,(注意:安装JDK需

Hadoop集群搭建配置文件汇总

核心内容: 1.Hadoop1.1.2伪分布(或集群)搭建核心配置文件 2.Hadoop2.4.1伪分布(或集群无HA)搭建核心配置文件 3.Hadoop2.4.1 + HA 集群搭建核心配置文件 1.Hadoop1.1.2伪分布(或集群)搭建核心配置文件 hadoop1.1.2伪分布(集群)搭建 前期准备(略) 安装hadoop1.1.2 1.解压缩 2.修改配置文件 ----------------------core-site.xml--------------------- <prope

Hadoop集群搭建详细步骤(2.6.0)

本文记录在3台物理机上搭建Hadoop 2.6.0的详细步骤及碰到的问题解决.默认使用root账号操作,实际中建议使用专用的hadoop用户账号. 1. 环境 机器: 物理机3台,ip分别为192.168.1.130.192.168.1.132.192.168.1.134 操作系统: CentOS 6.6 Java: 1.7 Hadoop: 2.6.0 请确保JDK已安装,使用java -version确认. hosts配置 配置主机hosts文件: vim /etc/hosts 192.168

Hadoop学习之路(四)Hadoop集群搭建和简单应用

概念了解 主从结构:在一个集群中,会有部分节点充当主服务器的角色,其他服务器都是从服务器的角色,当前这种架构模式叫做主从结构. 主从结构分类: 1.一主多从 2.多主多从 Hadoop中的HDFS和YARN都是主从结构,主从结构中的主节点和从节点有多重概念方式: 1.主节点 从节点 2.master slave 3.管理者 工作者 4.leader follower Hadoop集群中各个角色的名称: 服务 主节点 从节点 HDFS NameNode DataNode YARN Resource

Hadoop学习之路(五)Hadoop集群搭建模式和各模式问题

分布式集群的通用问题 当前的HDFS和YARN都是一主多从的分布式架构,主从节点---管理者和工作者 问题:如果主节点或是管理者宕机了.会出现什么问题? 群龙无首,整个集群不可用.所以在一主多从的架构中都会有一个通用的问题: 当集群中的主节点宕机之后,整个集群不可用.这个现象叫做:单点故障.SPOF 单点故障讲述的概念有两点 1.如果说宕机的那个节点是从节点,那么整个集群能够继续运行,并且对外提供正常的服务. 2.如果说宕机的那个节点是主节点,那么整个集群就处于宕机状态. 通用的解决方案:高可用

大数据-Hadoop生态(4)-Hadoop集群搭建

准备工作 开启全部三台虚拟机,确保hadoop100的机器已经配置完成 脚本 操作hadoop100 新建一个xsync的脚本文件,将下面的脚本复制进去 vim xsync #这个脚本使用的是rsync命令而不是scp命令,是同步而非覆盖文件,所以仅仅会同步过去修改的文件.但是rsync并不是一个原生的Linux命令,需要手动安装.如果没有,请自行安装 #!/bin/bash #1 获取输入参数个数,如果没有参数,直接退出 pcount=$# if ((pcount==0)); then ech