1. 程式人生 > >Nutch+MongoDB+ElasticSearch+Kibana 搭建搜尋引擎

Nutch+MongoDB+ElasticSearch+Kibana 搭建搜尋引擎

前言:

文章講述如何通過Nutch、MongoDB、ElasticSearch、Kibana搭建網路爬蟲,其中Nutch用於網頁資料爬取,MongoDB用於儲存爬蟲而來的資料,ElasticSearch用來作Index索引,Kibana用來形象化檢視索引結果。具體步驟如下:

配置環境:

系統環境:Ubuntu 14.04

JDK版本:jdk1.8.0_45
通過wget獲取下載安裝包:

gannyee@ubuntu:~/download$ wget https://www.reucon.com/cdn/java/jdk-8u45-linux-x64.tar.gz
tar zxvf jdk-8
u45-linux-x64.tar.gz

解壓後得到jdk1.8.0_45這個資料夾,先檢視/usr/lib/路徑下有沒有jvm這個資料夾,若沒有,則新建一個jvm資料夾:

gannyee@ubuntu:~/download$ mkdir /usr/lib/jvm

將當前解壓得到的jdk1.8.0_45複製到/usr/lib/jvm中:

gannyee@ubuntu:~/download$mv jdk1.8.0_45 /usr/lib/jvm

開啟profile設定環境變數:

gannyee@ubuntu:~/download$vim /etc/profile

在profile的末尾加入以下內容:

export
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_45 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin

然後使用以下命令使得環境變數生效:

gannyee@ubuntu:~/download$source /etc/profile

到此為止,JDK就安裝完成了。檢視JDK的版本:

gannyee@ubuntu:~/download$java –version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

若以上命令沒有成功顯示版本資訊,那有可能是之前的操作出現問題,請仔細檢查之前的操作。

gannyee@ubuntu:~/download$ wget https://archive.apache.org/dist/ant/binaries/binaries/apache-ant-1.9.4-bin.tar.gz

解壓後可得到apache-ant-1.9.6這個資料夾,將其移動到/usr/local/ant資料夾中:

gannyee@ubuntu:~/download$sudo tar -zvxf apache-ant-1.9.4-bin.tar.gz
gannyee@ubuntu:~/download$sudo mkdir /usr/local/ant
gannyee@ubuntu:~/download$mv apache-ant-1.9.4 /usr/local/ant

開啟profile設定環境變數:

gannyee@ubuntu:~/download$vim /etc/profile

在profile檔案末尾加入以下內容:

export ANT_HOME=/usr/local/ant/apache-ant-1.9.4
export PATH=$PATH:$ANT_HOME/bin

使用以下命令使得環境變數生效:

 gannyee@ubuntu:~/download$source /etc/profile

檢視Ant版本:

gannyee@ubuntu:~/download$ant -version
Apache Ant(TM) version 1.9.4 compiled on April 29 2014

至此,配置引擎所需的環境預先配置完成!

引擎資料流如圖示:

這裡寫圖片描述

Mongodb下載、安裝、啟動

開源文件資料庫,Nosql資料典型代表之一。
版本:MongoDB-2.6.11

[email protected]:~/download$ wget https://fastdl.mongodb.org/src/mongodb-src-r2.6.11.tar.gz
[email protected]:~/download$ sudo tar -zxvf mongodb-src-r2.6.11.tar.gz
[email protected]:~/download$ mv mongodb-src-r2.6.11/ ../mongodb/
[email protected]:~$cd mongodb/
[email protected]:~/mongodb$ 
sudo mkdir log/ conf/ data/

從2.6版開始,mongodb使用YAML-based配置檔案格式。參考下面的配置可以在這裡找到

建立se.yml

gannyee@ubuntu:~/mongodb$ vim conf/se.yml
net:
  port: 27017
  bindIp: 127.0.0.1
systemLog:
  destination: file
  path: "/opt/mongodb/log/mongodb.log"
  logAppend: true
processManagement:
  fork: true
  pidFilePath: "/opt/mongodb/log/mongodb.pid"
storage:
  dbPath: "/opt/mongodb/data"
  directoryPerDB: true
  smallFiles: true

啟動Mongodb

gannyee@ubuntu:~/mongodb$ ./bin/mongod -f conf/se.yml

進入Mongodb以檢查Mongodb是否啟動成功

gannyee@ubuntu:~/mongodb$ ./bin/mongo
MongoDB shell version: 2.6.11
connecting to: test
> show dbs
admin (empty)
local 0.031GB
> exit
bye

關閉Mongodb:

>use admin
>db.shutdownServer() 
gannyee@ubuntu:~/mongodb$ sudo wget http://app.robomongo.org/files/linux/robomongo-0.8.5-x86_64.deb
gannyee@ubuntu:~/mongodb$sudo dpkg -i robomongo-0.8.5-x86_64.deb

[email protected]:~$robomongo就可以開啟客戶端。
建立新連線,只需要新增host和port即可。
note:我第一次安裝成功後連結也成功,但是看不到任何資料。
解決辦法:重新使用root許可權安裝即可。
軟體介面如圖所示:
這裡寫圖片描述
如果需要外網訪問的話,需要配置檔案中的bindIp: 127.0.0.1改為bindIp: 0.0.0.0

然後在瀏覽器中輸入:http://localhost:27017,如果出現以下內容,說明外網可以訪問:
It looks like you are trying to access MongoDB over HTTP on the native driver port.

如果出現無法執行./mongod的錯誤
大部分是因為mongodb 服務在不正常關閉的情況下,mongod 被鎖,想想可能是上次無故宕機造成的.
如何解決這種問題:

刪除 mongod.lock 檔案和日誌檔案 mongodb.log.2016-1-26T06-55-20 ,如果有必要把 log日誌全部刪除
mongod –repair –dbpath /home/gannyee/mongodb/data/db / –repairpath /home/gannyee/mongodb

ElasticSearch下載、安裝

從Apache Lucene提取高效能的分散式搜尋引擎。
版本:ElastricSearch-1.4.4

gannyee@ubuntu:~/download$wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.4.tar.gz
gannyee@ubuntu:~/download$tar -zxvf elasticsearch-1.4.4.tar.gz
gannyee@ubuntu:~/download$ mv elasticsearch-1.4.4 ../elasticsearch 
gannyee@ubuntu:~$cd /elasticsearch

修改config下檔案elasticsearch.yml

[email protected]:~/elasticsearch$ vim config/elasticsearch.yml
......
cluster.name: gannyee
node.name: "gannyee"
node.master: true
node.data: true
path.conf: /home/gannyee/elasticsearch/config
path.data: /home/gannyee/elasticsearch/data
http.enabled: true
network.bind_host: 127.0.0.1
network.publish_host: 127.0.0.1
network.host: 127.0.0.1
.......

後臺啟動ElasticSearch

gannyee@ubuntu:~/elasticsearch$ ./bin/elasticsearch -d

終止ElasticSearch程序
關閉單一節點

gannyee@ubuntu:~/elasticsearch$curl -XPOST 
http://localhost:9200/_cluster/nodes/_shutdown

關閉節點BlrmMvBdSKiCeYGsiHijdg

gannyee@ubuntu:~/elasticsearch$curlXPOST 
http://localhost:9200/_cluster/nodes/BlrmMvBdSKiCeYGsiHijdg/_shutdown

檢測是否成功執行ElasticSearch

gannyee@ubuntu:~/elasticsearch$ curl -XGET 'http://localhost:9200'
{
  "status" : 200,
  "name" : "gannyee",
  "cluster_name" : "gannyee",
  "version" : {
    "number" : "1.4.4",
    "build_hash" : "c88f77ffc81301dfa9dfd81ca2232f09588bd512",
    "build_timestamp" : "2015-02-19T13:05:36Z",
    "build_snapshot" : false,
    "lucene_version" : "4.10.3"
  },
  "tagline" : "You Know, for Search"
}

elasticsearch-head是一個elasticsearch的叢集管理工具,它是完全由html5編寫的獨立網頁程式,你可以通過外掛把它整合到es
安裝 elasticsearch-head外掛

gannyee@ubuntu:~/elasticsearch$ cd elasticsearch
gannyee@ubuntu:~/elasticsearch$ ./bin/plugin -install mobz/elasticsearch-head

執行重啟elasticsearch
在瀏覽器輸入:http://localhost:9200/_plugin/head/
介面的右邊有些按鈕,如:node stats, cluster nodes,這些是直接請求es的相關狀態的api,返回結果為json,如下圖:
這裡寫圖片描述

Kibana下載、安裝

基於分析和搜尋Elasticsearch儀表板的開源瀏覽器
版本:kibana-4.0.1

gannyee@ubuntu:~/download$wget https://download.elasticsearch.org/kibana/kibana/kibana-4.0.1-linux-x64.tar.gz
gannyee@ubuntu:~/download$ tar -zxvf /download kibana-4.0.1-linux-x64.tar.gz 
gannyee@ubuntu:~/download$mv kibana-4.0.1-linux-x64/ ../kibana/ 
gannyee@ubuntu:~/download$cd ../kibana/
gannyee@ubuntu:~/kibana$ ./bin/kibana
Apache Nutch 安裝、編譯、配置:

在Lucene發展來的開源網路爬蟲,本次配置只能使用nutch2.x系列,1.x系列不支援MongoDB等其他如Mysql,Habase資料庫。
版本:apache-nutch-2.3.1

Nutch2.3下載、編譯、配置

gannyee@ubuntu:~/download$  wget
http://www.apache.org/dyn/closer.lua/nutch/2.3.1/apache-nutch-2.3.1-src.tar.gz
gannyee@ubuntu:~/download$ tar -zxvf apache-nutch-2.3.1-src.tar.gz
gannyee@ubuntu:~/download$  mv apache-nutch-2.3.1 ../nutch
gannyee@ubuntu:~/download$ cd ../nutch
gannyee@ubuntu:~/nutch$ export NUTCH_HOME=$(pwd)

修改/conf/nutch-site.xml使Mongodb作為GORA的儲存單元

[email protected]:~/nutch/conf$ vim nutch-site.conf
<configuration>
  <property>
    <name>storage.data.store.class</name>
    <value>org.apache.gora.mongodb.store.MongoStore</value>
    <description>Default class for storing data</description>
  </property>
</configuration>

從/ivy/ivy.xml檔案中取消下面部分的註釋

[email protected]:~/nutch/conf$  vim $NUTCH_HOME/ivy/ivy.xml
<dependency org="org.apache.gora" name="gora-mongodb" rev="0.5" conf="*->default" />
...
</dependency>

確保MongoStore設定為預設資料儲存

[email protected]:~/nutch$ vim conf/gora.properties
/#######################
/# MongoDBStore properties #
/#######################
gora.datastore.default=org.apache.gora.mongodb.store.MongoStore
gora.mongodb.override_hadoop_configuration=false
gora.mongodb.mapping.file=/gora-mongodb-mapping.xml
gora.mongodb.servers=localhost:27017
gora.mongodb.db=nutch

開始編譯nutch

gannyee@ubuntu:~/nutch$ant runtime

如果編譯過程中有如下錯誤

Trying to override old definition of task javac
  [taskdef] Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.

ivy-probe-antlib:

ivy-download:
  [taskdef] Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.

Trying to override old definition of task javac
  [taskdef] Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.

ivy-probe-antlib:

ivy-download:
  [taskdef] Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.

是因為缺少lib包,解決辦法如下(其實可以無視):
下載 sonar-ant-task-2.1.jar,拷貝到 $NUTCH_HOME/lib 目錄下面

修改 $NUTCH_HOME/build.xml,引入上面新增

<!-- Define the Sonar task if this hasn't been done in a common script -->
 <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
  <classpath path="${ant.library.dir}" />
  <classpath path="${mysql.library.dir}" />
  <classpath><fileset dir="lib/" includes="sonar*.jar" /></classpath>
 </taskdef>

編譯後的檔案將被放在新生成的資料夾/nutch/runtime中

最後確認nutch已經正確地編譯和執行,輸出如下:

[email protected]:~/nutch/runtime/local$ ./bin/nutch
 Usage: nutch COMMAND
where COMMAND is one of:
 inject         inject new urls into the database
 hostinject     creates or updates an existing host table from a text file
 generate       generate new batches to fetch from crawl db
 fetch          fetch URLs marked during generate
 parse          parse URLs marked during fetch
 updatedb       update web table after parsing
 updatehostdb   update host table after parsing
 readdb         read/dump records from page database
 readhostdb     display entries from the hostDB
 index          run the plugin-based indexer on parsed batches
 elasticindex   run the elasticsearch indexer - DEPRECATED use the index command instead
 solrindex      run the solr indexer on parsed batches - DEPRECATED use the index command instead
 solrdedup      remove duplicates from solr
 solrclean      remove HTTP 301 and 404 documents from solr - DEPRECATED use the clean command instead
 clean          remove HTTP 301 and 404 documents and duplicates from indexing backends configured via plugins
 parsechecker   check the parser for a given url
 indexchecker   check the indexing filters for a given url
 plugin         load a plugin and run one of its classes main()
 nutchserver    run a (local) Nutch server on a user defined port
 webapp         run a local Nutch web application
 junit          runs the given JUnit test
 or
 CLASSNAME      run the class named CLASSNAME
Most commands print help when invoked w/o parameters.

定製你的爬取特性

[email protected]:~$ sudo vim /nutch/runtime/local/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.mongodb.store.MongoStore</value>
    <description>Default class for storing data</description>
  </property>

  <property>
    <name>http.agent.name</name>
    <value>Hist Crawler</value>
  </property>

  <property>
    <name>plugin.includes</name>
    <value>protocol-(httphttpclient)urlfilter-regexindex-(basicmore)query-(basicsiteurllang)indexer-elasticnutch-extensionpointsparse-(texthtmlmsexcelmswordmspowerpointpdf)summary-basicscoring-opicurlnormalizer-(passregexbasic)parse-(htmltikametatags)index-(basicanchormoremetadata)</value>
  </property>
  <property>
    <name>elastic.host</name>
    <value>localhost</value>
  </property>

  <property>
    <name>elastic.cluster</name>
    <value>hist</value>
  </property>

  <property>
    <name>elastic.index</name>
    <value>nutch</value>
  </property>

  <property>
    <name>parser.character.encoding.default</name>
    <value>utf-8</value>
  </property>

  <property>
    <name>http.content.limit</name>
    <value>6553600</value>
  </property>

</configuration>
爬取自己第一個網頁
建立一個URL種子列表
gannyee@ubuntu:~$ mkdir -p /nutch/runtime/local/urls
gannyee@ubuntu:~$ echo 'http://www.aossama.com/' >/nutch/runtime/local/urls/seed.txt

編輯conf/regex-urlfilter.txt檔案,並且替換以下內容

/# accept anything else
+.

使用正則表示式匹配你想要爬取的域名

+^http://([a-z0-9]*\.)*aossama.com/

初始化crawldb

gannyee@ubuntu:~/nutch/runtime/local$  ./bin/nutch inject urls/

從 crawldb生成urls

gannyee@ubuntu:~/nutch/runtime/local$  ./bin/nutch generate -topN 80

獲取生成的所有urls

gannyee@ubuntu:~/nutch/runtime/local$ ./bin/nutch fetch -all

解析獲取的urls

gannyee@ubuntu:~/nutch/runtime/local$./ bin/nutch parse -all

更新database資料庫

gannyee@ubuntu:~/nutch/runtime/local$  ./bin/nutch updatedb -all

索引解析的urls

gannyee@ubuntu:~/nutch/runtime/local$ bin/nutch index -all

爬取完給定網頁,mongoDB會生成一個新的資料庫:nutch_1

[email protected]:~/mongodb$ ./bin/mongo
MongoDB shell version: 2.6.11
connecting to: test
> show dbs
admin    (empty)
local    0.031GB
nutch_1  0.031GB
test     (empty)
> use nutch_1
switched to db nutch_1
> show tables
system.indexes
webpage

具體資料可以在terminal下用指令或在圖形介面下直接點選檢視!

相關推薦

Nutch+MongoDB+ElasticSearch+Kibana 搭建搜尋引擎

前言: 文章講述如何通過Nutch、MongoDB、ElasticSearch、Kibana搭建網路爬蟲,其中Nutch用於網頁資料爬取,MongoDB用於儲存爬蟲而來的資料,ElasticSearch用來作Index索引,Kibana用來形象化檢視索引

logstash+elasticsearch+kibana搭建日誌收集分析系統

input { file { type => "api_log" path => "/home/jws/app/nginxserver/logs/apiaccess.log" debug

Elasticsearch全文搜索引擎實戰】之Kibana搭建

att 進入 界面 全文搜索 host 終端 數據分析 數據 目錄 1. Kibana介紹 Kibana是一個針對Elasticsearch的開源分析及可視化平臺,用來搜索、查看交互存儲在Elasticsearch索引中的數據。使用Kibana,可以通過各種圖表進行高級數據

ELK日誌系統:Elasticsearch+Logstash+Kibana搭建教程

htpasswd ins 4.2 httpd 2.3 ted location parser oracle ELK日誌系統:Elasticsearch + Logstash + Kibana 搭建教程 安裝配置JDK環境 JDK安裝(不能安裝JRE) JDK下載地址:htt

快速搭建ELK 叢集日誌收集工具Centos7 +Logstash +Elasticsearch+Kibana 環境

應用場景: 伺服器叢集,如果程式報錯,不懂從哪一臺伺服器上檢視日誌;想更加直接了當的看到日誌,什麼伺服器,什麼錯誤。 學到什麼 通過這篇文章可以傻瓜式的安裝程式,並且瞭解分散式應用日誌收集的場景。 環境 嶄新的一臺centos7虛擬機器; 介紹 介紹就算了, 搜得到這個的大概知道是幹嘛的

ELASTICSEARCH、LOGSTASH、KIBANA 搭建高效率日誌管理系統

ELK (ElasticSearch、LogStash以及Kibana)三者組合是一個非常強大的工具,這裡我們來實現監控日誌檔案並且收到日誌到ElasticSearch搜尋引擎,利用Kibana視覺化工具實現ElasticSearch查詢. ElasticS

filebeat + kafka + logstash + Elasticsearch + Kibana日誌收集系統搭建

一、介紹        在日常運維工作中,對於系統和業務日誌的處理尤為重要。今天,在這裡分享一下自己部署的filebeat + kafka + ELK開源實時日誌分析平臺的記錄過程。 1、ELK介紹      &nbs

ELK(ElasticSearch, Logstash, Kibana)搭建實時日誌分析平臺筆記

1.ELK注意事項 1.1要求jdk1.8+ 1.2Elsearch不允許使用root啟動 1.3ELK三個包版本要一致 2.ELK下載地址 https://www.elastic.co/cn/downloads elasticsearch-6.1.1.tar.gz

Elasticsearch、Logstash、Kibana 搭建統一日誌分析平臺 ( 第一篇 )

ELKstack是Elasticsearch、Logstash、Kibana三個開源軟體的組合。目前都在Elastic.co公司名下。 ELK是一套常用的開源日誌監控和分析系統,包括一個分散式索引與搜尋服務Elasticsearch, 一個管理日誌和事件的工

CentOS 6.5搭建ELK環境ElasticSearch+Kibana+Logstash

CentOS 6.5搭建ELK環境 ELK工作流程 多個獨立的Agent(Shipper)負責收集不同來源的資料,一箇中心Agent(Indexer)負責彙總和分析資料,在中心Agent前的Broker(使用Redis實現)作為緩衝區,中心Agent後的Elasti

ELK(ElasticSearch, Logstash, Kibana)搭建實時日誌分析平臺

摘要: ELK平臺介紹 在搜尋ELK資料的時候,發現這篇文章比較好,於是摘抄一小段: 以下內容來自:http://baidu.blog.51cto.com/71938/1676798 日誌主要包括系統日誌、應用程式日誌和安全日誌。 ELK平臺介紹 在搜尋ELK資料的時候,

Logstash+Elasticsearch+Kibana 聯合使用搭建日誌分析系統(Windows系統)

        最近在做日誌分析這塊兒,要使用 Logstash+Elasticsearch+Kibana 實現日誌的匯入、過濾及視覺化管理,官方文件寫的不夠詳細,網上的文章大多要麼是針對Linux系統的用法,要麼就是抄襲別人的配置大都沒法執行。費了很大勁才搞定了這仨東西,

logstash、elasticsearchkibana搭建日誌平臺

1、下載logstash      b、解壓:tar -xzvf logstash-5.1.1.tar.gz      c、設定使用者測試的配置檔案:vim logstatsh_test.conf,編輯內容如下:input { stdin { } } outp

elasticsearch + kibana 叢集環境搭建

mysql 作為成熟穩定的資料持久化解決方案,廣泛地應用在各種領域,但是在資料分析方面稍有不足,而 elasticsearch 作為資料分析領域的佼佼者,剛好可以彌補這項不足,而我們要做的只需要將 mysql 中的資料同步到 elasticsearch 中即可,

filebeat+kafkaLogstash+ElasticSearch+Kibana windows搭建 日誌分析系統

1. 瞭解各個元件的作用Filebeat是一個日誌檔案託運工具,在你的伺服器上安裝客戶端後,filebeat會監控日誌目錄或者指定的日誌檔案,追蹤讀取這些檔案(追蹤檔案的變化,不停的讀)Kafka是一種高吞吐量的分散式釋出訂閱訊息系統,它可以處理消費者規模的網站中的所有動作流

Elasticsearch+Logstash+Kibana搭建分布式日誌平臺

esc oct index ads 虛擬 mini eat 需要 artifact 一、前言 編譯安裝 1、ELK簡介 下載相關安裝包地址:https://www.elastic.co/cn/downloads ELK是Elasticsearch+Logstas

mongodb 副本集搭建

mongodb 搭建 副本集 排錯 mongodb的副本集模式較早前的master-slave模式有了很大的改進,由於之前的master-slave模式不支持主機宕機之後切換到從機,已經逐漸被淘汰。而現在官方推薦的副本集模式,支持多個節點並存,當主節點宕機後從權重最高的副節點開始,依次切換為主

Ubuntu16.04下安裝elasticsearch+kibana實現php客戶端的中文分詞

lba 實例 exc common adding creat 啟動服務 uid dbms 1.下載安裝elasticsearch和kibana wget https://artifacts.elastic.co/downloads/elasticsearch/elasti

mongodb分片集搭建

不能 -c tex 這就是 mkdir -p 團隊 exe dds png 拓撲圖如下: 從圖中可以看到有四個組件:mongos、config server、shard、replica set。mongos,數據庫集群請求的入口,所有的請求都通過mongos進行協調,不需

ELK 學習筆記之 elasticsearch環境搭建

發現 匯總 tex 索引 零配置 1-1 nbsp 日誌分析 com ELK概述: ElasticSearch是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等 Logstash是一個