背景技术
Nutch是一个由Java实现的,刚刚诞生开放源代码(open-source)的web搜索引擎。相对于那些商用的搜索引擎, Nutch作为开放源代码搜索引擎将会更加透明, 从而更值得大家信赖. 现在所有主要的搜索引擎都采用私有的排序算法, 而不会解释为什么一个网页会排在一个特定的位置. 除此之外, 有的搜索引擎依照网站所付的费用, 而不是根据它们本身的价值进行排序. 与它们不同, Nutch没有什么需要隐瞒, 也没有动机去扭曲搜索的结果. Nutch尽自己最大的努力为用户提供最好的搜索结果。Nutch主要分为两个部分:爬虫crawler和查询searcher。Crawler主要用于从网络上抓取网页并为这些网页建立索引。Searcher主要利用这些索引检索用户的查找关键词来产生查找结果。两者之间的接口是索引,所以除去索引部分,两者之间的耦合度很低。Crawler和Searcher两部分尽量分开的目的主要是为了使两部分可以分布式配置在硬件平台上,例如将Crawler和Searcher分别放在两个主机上,这样可以提升性能。
Nutch采集系统是汇总各各种数据信息的基于Nutch的服务器数据系统。要启动Nutch采集系统,要分别去执行Hadoop的启动脚本,Zookeeper的启动脚本,Hbase的启动脚本,这三者的脚本分别控制着各自进程的启动,如果分别取手动运行这些脚本,就降低了工作的效率。
HadoopHadoop 是一个能够对大量数据进行分布式处理的软件框架。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,包含一个简单的原语集,是Hadoop和Hbase的重要组件。HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为Java。
发明内容
本发明的技术任务是提供一种使系统的启动方便快捷,不再是一个个的分别手动启动对应进程,而是将之一体化,高效快速开启集群的一种采用shell脚本启动Nutch采集系统的方法。
本发明的技术任务是按以下方式实现的,一种采用shell脚本启动Nutch采集系统的方法,将命令写在一个shell脚本中,并在启动命令前做检查工作,Nutch采集系统是一个安装了Hadoop、Hbase、Zookeeper的集群系统,各个节点之间要实现NameNode到DataNode、JobTracker到TaskTracker无密码登陆,shell脚本在运行NameNode的节点上执行,包括如下步骤:
(1)、将shell脚本运行时传递的第一个参数所代表的文件的内容导出到一个名为SLAVES的变量中;
(2)、将shell脚本运行时传递的第二个参数所代表的文件的内容导出到一个名为ZOOKEEPERHOSTS的变量中;
(3)、要被检查的节点机的数量导出到一个名为SLAVESCOUNT的变量中;
(4)、将被检查的节点机的数量赋值给一个shell变量i;
(5)、遍历SLAVES的内容,然后对每个节点检查是否可以连通,以此来判断节点是否工作;
(6)、用jps命令查看正在运行的java进程,然后查看NameNode关键词的内容,并统计内容行数;
(7)判断变量i是否等于0,即是否所有被检查节点都可以连通;若非连通,则给出未连通的提示信息;若连通则继续判断NN变量是否等于0,即是否有NameNode进程运行;
(8)、若判断NameNode进程已经在运行,给出已经在运行的提示;若判断NameNode进程没有在运行,则启动动Nutch采集系统。
步骤(1)中的参数是一个文件的路径,此文件的内容是被检查的节点机的机器名,每行一个。
步骤(2)中的参数也是一个文件的路径,而这个文件的内容是安装有Zookeeper服务器的节点的机器名,每行一个。
Shell:壳层,在计算机科学中,是指“提供用户使用界面”的软件,通常指的是命令行界面的解析器。它类似于DOS下的command.com。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。
本发明的一种采用shell脚本启动Nutch采集系统的方法具有以下优点:
1、使用脚本的方式依次统一启动Hadoop,Zookeeper,Hbase,将现有技术分别手动启动Hadoop,Zookeeper,Hbase的费力工作简化,将之合并在一起,提高工作的效率;
2、还可以判断节点机的运行状况,如果应用在节点非常多的集群中,比起要一个一个检查,方便很多。
具体实施方式
参照说明书附图和具体实施例对本发明的一种采用shell脚本启动Nutch采集系统的方法作以下详细地说明。
实施例1:
本发明的一种采用shell脚本启动Nutch采集系统的方法,将命令写在一个shell脚本中,并在启动命令前做检查工作,Nutch采集系统是一个安装了Hadoop、Hbase、Zookeeper的集群系统,各个节点之间要实现NameNode到DataNode、JobTracker到TaskTracker无密码登陆,shell脚本在运行NameNode的节点上执行,包括如下步骤:
(1)、将shell脚本运行时传递的第一个参数所代表的文件的内容导出到一个名为SLAVES的变量中;
(2)、将shell脚本运行时传递的第二个参数所代表的文件的内容导出到一个名为ZOOKEEPERHOSTS的变量中;
(3)、要被检查的节点机的数量导出到一个名为SLAVESCOUNT的变量中;
(4)、将被检查的节点机的数量赋值给一个shell变量i;
(5)、遍历SLAVES的内容,然后对每个节点检查是否可以连通,以此来判断节点是否工作;
(6)、用jps命令查看正在运行的java进程,然后查看NameNode关键词的内容,并统计内容行数;
(7)判断变量i是否等于0,即是否所有被检查节点都可以连通;若非连通,则给出未连通的提示信息;若连通则继续判断NN变量是否等于0,即是否有NameNode进程运行;
(8)、若判断NameNode进程已经在运行,给出已经在运行的提示;若判断NameNode进程没有在运行,则启动动Nutch采集系统。
步骤(1)中的参数是一个文件的路径,此文件的内容是被检查的节点机的机器名,每行一个。
步骤(2)中的参数也是一个文件的路径,而这个文件的内容是安装有Zookeeper服务器的节点的机器名,每行一个。
实施例2:
本发明的一种采用shell脚本启动Nutch采集系统的方法
一种采用shell脚本启动Nutch采集系统的方法,其特征在于将命令写在一个shell脚本中,并在启动命令前做检查工作,Nutch采集系统是一个安装了Hadoop、Hbase、Zookeeper的集群系统,各个节点之间要实现NameNode到DataNode、JobTracker到TaskTracker无密码登陆,shell脚本在运行NameNode的节点上执行,包括如下步骤:
(1)、将shell脚本运行时传递的第一个参数所代表的文件的内容导出到一个名为SLAVES的变量中;
(2)、将shell脚本运行时传递的第二个参数所代表的文件的内容导出到一个名为ZOOKEEPERHOSTS的变量中;
(3)、要被检查的节点机的数量导出到一个名为SLAVESCOUNT的变量中;
(4)、将被检查的节点机的数量赋值给一个shell变量i;
(5)、遍历SLAVES的内容,然后对每个节点检查是否可以连通,以此来判断节点是否工作;
set `ping -c 4 $host | grep loss`这行代码将对$host节点ping4次,然后查找loss的关键词所在的行,再将这行set到一个变量中,if [ $6 != "100%" ]这个代码的作用是判断set到的变量中的第七个参数内容是否等于“100%”,等于100%说明完全ping不通,节点未工作,不等于100%说明节点可以ping通,正在工作,如果ping通就将变量i减去1,如果ping不通就在终端上提示"Can't connect host $host,please check"的信息,同时将信息写入一个在/tmp/下的名为start-cluster-info.log的日志文件;
(6)、用jps命令查看正在运行的java进程,然后查看NameNode关键词的内容,并统计内容行数;
(7)判断变量i是否等于0,即是否所有被检查节点都可以连通;若非连通,则给出未连通的提示信息;若连通则继续判断NN变量是否等于0,即是否有NameNode进程运行;
(8)、若判断NameNode进程已经在运行,给出已经在运行的提示;若判断NameNode进程没有在运行,则启动动Nutch采集系统。
在if条件满足后,代码第26行start-all.sh用来启动Hadoop集群。
用来在安装有Zookeeper的服务器上启动Zookeeper,代码执行前要在对应节点上安装一个名为“expect”的软件包,这个软件包可以ssh远程登陆到节点,运行交互式的命令,来一个个的启动Zookeeper,代码第39行start-hbase.sh用来启动Hbase集群。如果不满足if条件,就说明有节点连不通或者已经有NameNode进程在运行,然后在终端输出日志信息,并且也输出同样信息到日志文件中。
步骤(1)中的参数是一个文件的路径,此文件的内容是被检查的节点机的机器名,每行一个。
步骤(2)中的参数也是一个文件的路径,而这个文件的内容是安装有Zookeeper服务器的节点的机器名,每行一个。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种采用shell脚本启动Nutch采集系统的方法的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。