centos 4.4配置使用

1、Nutch简介

  Nutch是一个由Java实现的,开放源代码(open-source)的web搜索引擎。主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行查询的一套工具。其底层使用了Hadoop来做分布式计算与存储,索引使用了Solr分布式索引框架来做,Solr是一个开源的全文索引框架,从Nutch 1.3开始,其集成了这个索引架构。

  Nutch目前最新的版本为version1.4。

1.1 Nutch的目标

  Nutch 致力于让每个人很容易,同时花费很少就可以配置世界一流的Web搜索引擎。为了完成这一宏伟的目标,Nutch必须能够做到:

  • 每个月取几十亿网页
  • 为这些网页维护一个索引
  • 对索引文件进行每秒上千次的搜索
  • 提供高质量的搜索结果
  • 以最小的成本运作

1.2 Nutch的优点

  • 透明度

  Nutch开放源代码的,因此任何人都可以查看他的排序算法是如何工作的。商业的搜索引擎排序算法都是保密的,我们无法知道为什么搜索出来的排序结果是如何算出来的。更进一步,一些搜索引擎允许竞价排名,比如百度,这样的索引结果并不是和站点内容相关的。因此Nutch对学术搜索和政府类站点的搜索来说,是个好选择。因为一个公平的排序结果是非常重要的。

  • 扩展性

  你是不是不喜欢其他的搜索引擎展现结果的方式呢?那就用 Nutch 写你自己的搜索引擎吧。 Nutch 是非常灵活的,他可以被很好的客户订制并集成到你的应用程序中。使用Nutch 的插件机制,Nutch 可以作为一个搜索不同信息载体的搜索平台。当然,最简单的就是集成Nutch到你的站点,为你的用户提供搜索服务。

  • 对搜索引擎的理解

  我们并没有google的源代码,因此学习搜索引擎Nutch是个不错的选择。了解一个大型分布式的搜索引擎如何工作是一件让人很受益的事情。在写Nutch的过程中,从学院派和工业派借鉴了很多知识:比如:Nutch的核心部分目前已经被重新用 Map Reduce 实现了。Map Reduce 是一个分布式的处理模型,最先是从 Google 实验室提出来的。并且 Nutch 也吸引了很多研究者,他们非常乐于尝试新的搜索算法,因为对Nutch 来说,这是非常容易实现扩展的。

1.3 Nutch与Lucene关系

  Lucene是一个Java高性能全文索引引擎工具包可以方便的嵌入到各种实际应用中实现全文索引搜索功能。它提供了一系列API,能够对文档进行预处理、过滤、分析、索引和检索排序。在保持高效和简单的特点之外,还保证了开发者可以自由定制和组合各种核心功能。Nutch是一个应用程序,是一个以Lucene为基础实现搜索引擎应用LuceneNutch 提供了文本搜索索引APINutch不仅提供搜索,而且还有数据抓取的功能。

  简单的说:

  • Lucene 不是完整的应用程序,而是一个用于实现全文检索的软件库。
  • Nutch 是一个应用程序,可以以 Lucene 为基础实现搜索引擎应用。

  一个常见问题是:我应该使用Lucene还是Nutch?

  最简单的回答是:如果你不需要抓取数据的话,应该使用Lucene

  常见的应用场合是:你有数据源,需要为这些数据提供一个搜索页面。在这种情况下,最好的方式是直接从数据库中取出数据并用Lucene API建立索引。

  在你没有本地数据源,或者数据源非常分散的情况下,应该使用Nutch

2、Nutch安装

我们现在进行的是Nutch的单机版安装以及配置。

2.1 环境介绍

本次安装Nutch的环境介绍:

  • 操作系统:CentOS6.0(机器名:TSlave.Hadoop)
  • JDK版本:jdk-6u31-linux-i586.bin
  • Nutch版本:apache-nutch-1.4-bin.tar.gz
  • Tomcat版本:apache-tomcat-7.0.27.tar.gz

  下面是软件的下载地址:

当所需软件准备好之后,我们用"FTPFlash"软件把上面上传到Linux服务器,为下面准备安装做好准备。

2.2 安装JDK

  首先用root身份登录"TSlave.Hadoop:192.168.1.11"后在"/usr"下创建"java"文件夹,再把用FTP上传到"/home/hadoop/"下的"jdk-6u31-linux-i586.bin"复制到"/usr/java"文件夹中。

mkdir /usr/java

cp /home/hadoop/ jdk-6u31-linux-i586.bin /usr/java

  接着进入"/usr/java"目录通过下面命令使其JDK获得可执行权限,并安装JDK。

chmod    +x     jdk-6u31-linux-i586.bin

./jdk-6u31-linux-i586.bin

  按照上面几步进行操作,最后点击"Enter"键开始安装,安装完会提示你按"Enter"键退出,然后查看"/usr/java"下面会发现多了一个名为"jdk1.6.0_31"文件夹,说明我们的JDK安装结束,删除"jdk-6u31-linux-i586.bin"文件,进入下一个"配置环境变量"环节。

接着配置JDK环境变量,编辑"/etc/profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容。在"/etc/profile"文件的尾部添加以下内容:

# set java environment

export JAVA_HOME=/usr/java/jdk1.6.0_31

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

保存并退出,执行下面命令使其配置立即生效。

source /etc/profile

最后验证一下JDK是否安装成功。

java -version

2.3 安装Tomcat

首先进入"/home/hadoop"目录,把"apache-tomcat-7.0.27.tar.gz"复制到"/usr"下面,然后解压。

cp /home/hadoop /apache-tomcat-7.0.27.tar.gz /usr

用下面命令进行解压Tomcat安装包。

tar –zxvf apache-tomcat-7.0.27.tar.gz

解压完之后,然后删除安装包,并对"apache-tomcat-7.0.27"重命名为"tomcat",把该文件夹授权于普通用户"hadoop"。

rm -rf apache-tomcat-7.0.27.tar.gz

mv apache-tomcat-7.0.27 tomcat

chown -R hadoop:hadoop tomcat

接着添加Tomcat环境变量,为了在以后系统启动后就配置好Tomcat所需的环境变量,要在"/etc/profile"文件中设置,并用"source /etc/profile"命令使其立即有效。

# set tomcat environment

export CATALINA_HOME=/usr/tomcat

export CATALINA_BASE=/usr/tomcat

export PATH=$PATH:$ CATALINA_HOME /bin

此时用"reboot"命名重启电脑,用普通"hadoop"登录Linux系统,执行下面命令启动我们刚才配置的Tomcat。

startup.sh

备注别用root用户使用该命令,因为用最高用户启动Tomcat后,会在Tomcat的日志文件中生成相应的日志,但是日志的创建者是root,此时在转到普通用户启动Tomcat时,由于刚才创建的日志的用户是最高用户,其他用户无法对这些日志文件进行写,导致启动tomcat失败。还有记得把防火墙关掉

在浏览器输入"192.168.1.11 :8080",查看是否已经启动成功。

额外执行操作,如果端口发生冲突时,或者出现中文乱码时,修改"server.xml"配置文件,该文件位于"/usr/tomcat/conf"目录下面。

Apache http服务器的端口是 80,Apache Tomcat服务器端口是8080。二者不冲突,若有冲突,修改如下:

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->

<Connector port="8080" maxHttpHeaderSize="8192"

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

c disableUploadTimeout="true"

URIEncoding="UTF-8" useBodyEncodingForURI="true" />

  默认服务端口为8080,若有冲突(如Apache),则可通过此配置文件更改端口(蓝色);如果配置后nutch出现中文乱码问题,则增加编码配置(红色)。

2.4 安装Nutch

我们用普通用户"hadoop"把Nutch安装在"/home/hadoop"下面。用下面命令进行解压和重名。

tar -zxvf apache-nutch-1.4-bin.tar.gz

mv apache-nutch-1.4-bin nutch

添加Nutch的环境变量,在"/home/hadoop/.bashrc"文件中添加如下内容。

# set nutch environment

export NUTCH_HOME=/home/hadoop/nutch

export PATH=$PATH:$ NUTCH _HOME /runtime/local/bin

添加完之后用"source .bashrc"使其立即生效。

然后在输入"nutch"命令测试是否配置成功,结果出现下面错误,当然这个错误网上说不一定出现。

  这时我们查看"/home/hadoop/nutch/runtime/local/nutch"这个文件时发现没有执行权限。用下面命令添加执行权限。

chmod +x nutch

当给该文件添加执行权限后,我们再次查看,发现该文件颜色发生了变化,再次执行"nutch"命令时,下面出现了该命名的参数列表。到此为止我们的单机版Nutch已经安装完毕。

我们公司的产品使用了erlang开发,可以在大多数的Linux发行版安装使用,我个人就在Ubuntu、Debian、SUSE等安装过。但客户使用的Linux发行版各种各样,网上环境也总是很诡异,期望一上线就可以使用那是妄想。
这2天客户就整了个很久没用的服务器给我们安装,这次情况真的是很不一样,我觉得有必要记录一下。

1. 系统是centos 4.4,已经停止了技术支持。

这个系统版本太低,导致了后面的一系列问题。

可能是因为当时的管理员不熟悉Linux,设置的分区更离谱,是我见过的最奇葩的分区方案。

整个/分区就给了1G的空间,注意,这还是包括了/home目录在内的分区。反正我在使用过程中,经常报错。

这样的分区方案很可能是因为考虑不足,然后后来发现分区不合理,然后随便配置了。其实这样的情况,应该使用lvm2,贴一下我的lvm方案。

这个是我的虚拟机,使用过程中发现了硬盘过小,然后加了后面的sda3,使用lvm2归并一起,挂载/分区。

2. 添加源

CentOS 4.x早已没有技术支持了,而且很多软件源不可用。查看了下面2个连接,配置了软件源。

centos 4.x不能yum问题解决

CentOS 4 终止生命周期(EOL) 通告

cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak
wget http://vault.centos.org/4.9/CentOS-Base.repo

然后更新yum缓存

yum clean all && yum clean metadata && yum clean dbcache && yum makecache

接着下载安装erlang源码编译的必要软件包,参考了

参考 CentOS(Fedora)下源代码编译安装 erlang 环境的 shell 脚本

yum install -y kernel-devel m4 fop ncurses-devel openssl-devel tk unixODBC unixODBC-devel

然后编译安装erlang。

3. mysql版本太低,添加centosplus源

原来的mysql版本是4.1.22, 我们的产品使用mysql的版本必须是5.0以上。继续折腾。
google了半天,发现在centosplus源有mysql 5.0的rpm包,但我们的源不会启用centosplus,查看了下面的

启用CentOS Plus

主要是设置enabled=1,下面贴一下我的repo配置:

additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://vault.centos.org/4.9/centosplus/$basearch/
gpgcheck=1
enabled=1
gpgkey=http://vault.centos.org/RPM-GPG-KEY-centos4
protect=1
priority=2

4. 停止iptables

使用setup命令行停止iptables,我们的产品可以使用了。

但第二天,服务器重启了,我们的产品又运行不行,发现还是iptables运行了,阻止了我们产品的网络连接。但我已经设置了iptables停止运行了的,什么情况?
查找了半天,原来是setup那里还有个防火墙配置问题。这里也要设置一下。

由于 ssh连接到4.4的服务器那个界面实在太难看,这里截图用的是6.5版本的centos界面,中文的。

5. erlang连接不了网络

# ./start.sh  live
{error_logger,{{2014,3,21},{10,35,48}},"Protocol: ~p: register error: ~p~n",["inet_tcp",{{badmatch,{error,duplicate_name}},[{inet_tcp_dist,listen,1},{net_kernel,start_protos,4},{net_kernel,start_protos,3},{net_kernel,init_node,2},{net_kernel,init,1},{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}]}
{error_logger,{{2014,3,21},{10,35,48}},crash_report,[[{initial_call,{net_kernel,init,['Argument__1']}},{pid,<0.20.0>},{registered_name,[]},{error_info,{exit,{error,badarg},[{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{ancestors,[net_sup,kernel_sup,<0.9.0>]},{messages,[]},{links,[#Port<0.68>,<0.17.0>]},{dictionary,[{longnames,true}]},{trap_exit,true},{status,running},{heap_size,377},{stack_size,24},{reductions,473}],[]]}
{error_logger,{{2014,3,21},{10,35,48}},supervisor_report,[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{pid,undefined},{name,net_kernel},{mfa,{net_kernel,start_link,[['groupchat@127.0.0.1',longnames]]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]}
{error_logger,{{2014,3,21},{10,35,48}},supervisor_report,[{supervisor,{local,kernel_sup}},{errorContext,start_error},{reason,shutdown},{offender,[{pid,undefined},{name,net_sup},{mfa,{erl_distribution,start_link,[]}},{restart_type,permanent},{shutdown,infinity},{child_type,supervisor}]}]}
{error_logger,{{2014,3,21},{10,35,48}},std_info,[{application,kernel},{exited,{shutdown,{kernel,start,[normal,[]]}}},{type,permanent}]}
{"Kernel pid terminated",application_controller,"{application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}}"} Crash dump was written to: erl_crash.dump
Kernel pid terminated (application_controller) ({application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}})

原来是epmd的问题,停了,再开就可以了。

# ps -ef|grep erl
root 4670 1 0 Mar20 ? 00:00:00 /usr/lib/erlang/erts-5.7.5/bin/epmd -daemon
root 24263 19882 0 10:35 pts/0 00:00:00 grep erl # kill -9 4670

总的来说,由于服务器太旧,导致源设置困难、软件版本低,然后centos的默认启用防火墙的问题,导致整个过程出现了很多问题。

centos 4.4配置使用 and Nutch搜索引擎(第1期)_ Nutch简介及安装的更多相关文章

  1. Nutch搜索引擎(第2期)_ Solr简介及安装

    1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化 ...

  2. centos 6.x 配置 mail 发送外部邮件详解和 sendmail 使用简介

    一.mail基本配置 1.配置:vim /etc/mail.rc 在文件末尾追加以下内容: set from=@.com # 别名<123456789@163.com> set smtp= ...

  3. Nutch搜索引擎系列(目录)

    下面是Nutch搜索系列目录,希望对研究Nutch的同学有所帮助. 目录安排: 1)Nutch搜索引擎(第1期)_ Nutch简介及安装[下载] 2)Nutch搜索引擎(第2期)_ Solr简介及安装 ...

  4. Nutch搜索引擎系列

    下面是Nutch搜索系列目录,希望对研究Nutch的同学有所帮助. 目录安排: 1)Nutch搜索引擎(第1期)_ Nutch简介及安装[下载] 2)Nutch搜索引擎(第2期)_ Solr简介及安装 ...

  5. Nutch搜索引擎Solr简介及安装

    Nutch搜索引擎(第2期)_ Solr简介及安装   1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的 ...

  6. Nutch搜索引擎(第1期)_ Nutch简介及安装

    1.Nutch简介 Nutch是一个由Java实现的,开放源代码(open-source)的web搜索引擎.主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行查询的一 ...

  7. 在Linux(Ubuntu/openSUSE/CentOS)下配置ASP.NET(Apache + Mono)

    [题外话] 闲的无聊竟然想尝试测试自己做的项目在不同操作系统上的性能表现,所以决定试试在Linux上部署Apache和Mono的环境.由于平时很少接触Linux,所以从网上找了几篇文章(附在相关链接中 ...

  8. CentOS下Apache配置多域名或者多端口映射

    CentOS下Apache默认网站根目录为/var/www/html,假如我默认存了一个CI项目在html文件夹里,同时服务器的外网IP为ExampleIp,因为使用的是MVC框架,Apache需开启 ...

  9. centos yum源配置

    5步搞定yum源配置 作者小波/QQ463431476欢迎转载! 第一步: 卸载原来的yum [root@localhost home]#rpm -qa|grep yum|xargs rpm -e - ...

随机推荐

  1. 字符串属性 NSMutableAttributedString/NSAttributedString

    因为iOS7新出的NSTextStorge是NSMutableAttributedString的子类.所以要用好NSTextStorage.首先要学好NSMutableAttributedString ...

  2. Angular报错记录

    一 找不到Controller 出现这种错误,一般都是没有找到需要的Controller,需要仔细检查是否所需的Controller已经正确引入

  3. oracle 监控执行的sql语句

    oracle 监控执行的sql语句 select * from v$sqlarea a where module='PL/SQL Developer' order by a.FIRST_LOAD_TI ...

  4. CreateCompatibleDC工作原理

    WindowsGDI的接口没提供这种功能机制.仅仅能是先通过CreateCompatibleDC 创建一个与显示器设备内容兼容的内存设备内容.用SelectObject将位图选入内存设备内容,再用Bi ...

  5. Linux入门介绍

    Linux入门介绍 一.Linux 初步介绍 Linux的优点 免费的,开源的 支持多线程,多用户 安全性好 对内存和文件管理优越 系统稳定 消耗资源少 Linux的缺点 操作相对困难 一些专业软件以 ...

  6. HttpGet 请求

    import java.net.HttpURLConnection; import java.text.SimpleDateFormat; import java.util.Calendar; imp ...

  7. Swift初体验(两)

    // 写功能初体验 func getMyName(firstName first:String, lastName last:String) -> String{ //return first ...

  8. 并查集(Union-Find)算法介绍

    原文链接:http://blog.csdn.net/dm_vincent/article/details/7655764 本文主要介绍解决动态连通性一类问题的一种算法,使用到了一种叫做并查集的数据结构 ...

  9. ASP.NET MVC2.0 自定义filters

    今天大家共同学习下ASP.NET MVC2.0中自定义filters,这一节主要学习下ActionFilterAttribute, ActionFilterAttribute继承IActionFilt ...

  10. sql server 汉字的长度

    前几天改了人家程序中的一个小bug,就是输入时长度的校验问题.项目是.Net的,数据库是 sql server的.检查了一下,发现以前的人员把长度给控制小了,数据库中允许输入256的长度,而别人在as ...