[大數據]-Elasticsearch5.3.1+Kibana5.3.1從單機到分布式的安裝與使用<1>


一、Elasticsearch,Kibana簡介:

Elasticsearch是一個基於Apache Lucene(TM)的開源搜索引擎。無論在開源還是專有領域 Lucene可以被認為是迄今為止最先進、性能最好的、功能最全的搜索引擎庫。 Elasticsearch也使用Java開發並使用Lucene作為其核心來實現所有索引和搜索的功能,但是它的目的是通過簡單的 RESTful API 來隱藏Lucene的復雜性,從而讓全文搜索變得簡單

Elasticsearch支持分布式的實時文件存儲以及實時分析搜索,具有高度的可擴展性可擴展至上百台服務器,能夠處理PB級的結構化和非結構化數據。

Elasticsearch同時也為各種語言調用提供了接口(Curl,JavaC#,Python,JavaScript PHP,Perl,Ruby),包括hadoop,spark都可以做對接

Kibana是一個開源的分析與可視化平台,設計出來用於和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的數據,使用各種不同的圖表、表格、地圖等kibana能夠很輕易地展示高級數據分析與可視化。Kibana讓我們理解大量數據變得很容易。它簡單、基於瀏覽器的接口使你能快速創建和分享實時展現Elasticsearch查詢變化的動態儀表盤。

二、Elasticsearch,Kibana的安裝使用:

1、環境准備:

  • 安裝環境:centos6.5,Jdk1.8,Elasticsearch5.3.1,Kibana5.3.1
  • 下載地址:https://www.elastic.co/cn/products可下載ES和Kibana。
  • 安裝虛擬機centos6.5。
  • 安裝JDK1.8:解壓縮包-》配環境變量。
  • tar –zxvf jdk-8u121-linux-x64.tar.gz
    mv jdk1.8.0_121  java
    sudo vim /etc/profile
    export JAVA_HOME=/home/rzxes/java
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

2、默認配置安裝Elasticsearch5.3.1,Kibana5.3.1:

  • EK安裝非常簡單,開箱即用,如果只是簡單的使用,無需配置,解壓兩個壓縮包之后可直接啟動。(默認ES訪問:localhost:9200,Kibana訪問:localhost:5601,這種配置在虛擬機外無法通過IP訪問)kibana啟動之后會默認的去連接localhost:9200。
  • [rzxes@rzxes ~]$ ls
     elasticsearch-5.3.1  kibana
    
    [rzxes@rzxes ~]$ elasticsearch-5.3.1/bin/elasticsearch  //啟動ES
    [rzxes@rzxes ~]$ kibana/bin/kibana                      //啟動kibana

3、編輯配置安裝EK(單機單節點):

  • 編輯ES配置文件: [rzxes@rzxes ~]$ vim elasticsearch-5.3.1/config/elasticsearch.yml 修改如下兩個即可http.port可改。
  • network.host:本機IP   #也有配置為 0.0.0.0 表示任何一個IP都可以訪問到。這種方式在本機可以,但是外部訪問的話可能會有問題。
    http.port: 9200
  • 編輯Kibana配置: [rzxes@rzxes ~]$ vim kibana/config/kibana.yml
  • server.port: 5601
    server.host: "本機IP"
    elasticsearch.url: "http://本機IP:9200"
  • 啟動EK:
  • [rzxes@rzxes ~]$ elasticsearch-5.3.1/bin/elasticsearch  //啟動ES
    [rzxes@rzxes ~]$ kibana/bin/kibana                      //啟動kibana
  • 訪問端口: [rzxes@rzxes elasticsearch-5.3.1]$ curl -XGET http://192.168.230.150:9200/ 結果如下則成功。
  • {
      "name" : "node-1",
      "cluster_name" : "es",
      "cluster_uuid" : "bbCPwel7Tn-1cip2rsFWRQ",
      "version" : {
        "number" : "5.3.1",
        "build_hash" : "5f9cf58",
        "build_date" : "2017-04-17T15:52:53.846Z",
        "build_snapshot" : false,
        "lucene_version" : "6.4.2"
      },
      "tagline" : "You Know, for Search"
    }
  • 瀏覽器訪問9200:http://192.168.230.150:9200可得到上一步同樣結果。
  • 瀏覽器訪問5601:http://192.168.230.150:5601.第一次Kibana會進入創建索引的界面,這里創建名為*的索引匹配數據(由於開始沒有數據)。(取消掉所有打鈎的地方)點擊Create成功會顯示在左側。可以看到所有的功能組件。

4、Es-head插件的安裝使用:

   Es-head是一個界面化的集群操作和管理工具 ,可以和ES集成,也可以作為單獨的一個app,通過界面可以清楚的看到集群的索引,分片,節點的分布,以及進行各種查詢操作。

  • 安裝node.js:下載編譯好的包,解壓,配置環境變量
  • sudo vim /etc/profile
    #末尾node添加環境變量
    #node bin
    export PATH=/home/rzxes/node/bin:$PATH
  • 保存退出,使其立即生效: source /etc/profile
  • 在node包的bin目錄下有兩個腳本:node和npm,查看是否配置成功: npm -version , node -v  顯示版本號則成功

  • 進入ES安裝目錄,獲取ES-head安裝包:  git clone git://github.com/mobz/elasticsearch-head.git
  • 配置Es-head: 

    • 編輯Gruntfile.js: [rzxes@rzxes elasticsearch-head]$ vim Gruntfile.js 
    • 修改監聽hostname為:*
    • connect: {
          server: {
              options: {
                  port: 9100, hostname: '*', base: '.', keepalive: true } } }
    • 修改head的連接地址localhost換為本機IP: [rzxes@rzxes elasticsearch-head]$ vim _site/app.js  
    • 找到init function(options){ this._super(); }: this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://IP:9200"; localhost換成ip####不過我這里原本並沒有這一行,是自己直接添加上的,后面再搭建集群的時候把這一句注釋掉了也並沒有出現問題。
  • 進入Es-head目錄:執行以下命令:[grunt是一個很方便的構建工具,可以進行打包壓縮、測試、執行等等的工作,5.x里的head插件就是通過grunt啟動的。因此需要安裝一下grunt]
  • npm install grunt
    npm install -g grunt-cli  
    npm install

    每一步執行成功進行下一步,[可能存在以下資源配置不了,是由於網絡問題(可以連VPN,或者用天貓鏡像)]若出現以下問題:

  • error: Failed at the phantomjs-prebuilt@2.1.14 install script ‘node install.js’

    解決方法: npm install phantomjs-prebuilt@2.1.14 --ignore-scripts

  • 若以上nmp install 成功,則直接用 grunt server 啟動服務(es要先啟動),如下則成功:

    [rzxes@rzxes elasticsearch-head]$ grunt server
    Running "connect:server" (connect) task
    Waiting forever...
    Started connect web server on http://localhost:9100

    訪問:http://ip:9100/  可以看到如下節點則說明成功。

  • 到此單機版EK安裝完畢。

三、Elasticsearch,Kibana安裝中的異常解決:

1、[ WARN]:seccomp unavailable:requires kernel 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled in。

  • 警告內核版本太低!,忽略警告。

2、[ERROR]:max number of threads [1024] for user [rzxes] is too low, increase to at least [2048]。

  • sudo vim /etc/security/limits.d/90-nproc.conf 把1024改成2048。

3、[ERROR]:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]。

  • Sudo vim /etc/security/limits.conf ,末尾添加如下兩行:
  • * hard nofile 65536
  • * soft nofile 65536
  • 查看: ulimit -Hn 結果是65536則修改成功。 

4、[ERROR]:system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk。

  • vim config/elasticsearch.yml 添加如下:

  • bootstrap.system_call_filter: false

5、[ERROR]:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]。

  • 修改/etc/sysctl.conf sudo vim /etc/sysctl.conf ,最后添加: vm.max_map_count=262144 。
  • 使用 sysctl -p 查看修改后的結果。

四、Elasticsearch,Kibana分布式安裝:

ES的分布式和Kibana沒什么關系哦,分布式數據分散在各個節點以分片和副本保證安全容災,Kibana並不參與,仍舊只是做可視化。ES的分布式搭建也非常簡單,沒有什么復雜的配置,我們只需要將以上單機部署的虛擬機進行克隆分別命名為rzxesn2,rzxesn3。然后稍加配置即可。

1、基本環境配置:

  • 虛擬機rzxes克隆(完全克隆)出rzxesn2,rzxesn3,並打開虛擬機。
  • 修改hostname:因為克隆后用戶名密碼hostname完全相同,但是IP不同,所以需要修改hostname將其區分開。修改后如下:
  • hostname     IP                user   pass
    --------------------------------------------
    rzxes        192.168.230.150   rzxes  123456
    rzxesn2      192.168.230.151   rzxes  123456
    rzxesn3      192.168.230.152   rzxes  123456
  • 修改配置文件:主要是三點:集群名相同,端口號不同,節點名不同。配置如下:紅色標記為不同之處。
  • rzxes配置: [rzxes@rzxes elasticsearch-5.3.1]$ vim config/elasticsearch.yml 詳細如下:
  • #集群名必須統一,否則是不能組成集群的
    cluster.name: es
    #節點名需不同 node.name: node
    -1
    # IP換成各自本機IP,三個端口號需要修改成不同 network.host: 192.168.230.150 http.port: 9200
    #主機請求列表[集群節點自動發現和Master選舉的配置],
    discovery.zen.
    ping.unicast.hosts: ["192.168.230.150", "192.168.230.151", "192.168.230.152"] #這兩個路徑可以不配,默認es根路徑下的data,logs,但是如果單機運行了就需要刪除生成的這兩個文件夾,否側會出錯,因為啟動生成instance的信息會保存,修改配置后再啟動出現instance ID不匹配就不能夠夠形成集群。
    path.data:
    /path/to/data path.logs: /path/to/logs
    bootstrap.system_call_filter:
    false bootstrap.memory_lock: false #配置跨域請求允許 http.cors.enabled : true http.cors.allow-origin: "*"
  • rzxesn2配置: [rzxes@rzxesn2 elasticsearch-5.3.1]$ vim config/elasticsearch.yml 詳細如下:
  • cluster.name: es  
    #節點名需不同 node.name: node-2 # IP換成各自本機IP,三個端口號需要修改成不同 network.host: 192.168.230.151 http.port: 9202
    discovery.zen.ping.unicast.hosts: ["192.168.230.150", "192.168.230.151", "192.168.230.152"]
    path.data: /path/to/data
    path.logs: /path/to/logs
    bootstrap.system_call_filter: false
    bootstrap.memory_lock: false
    http.cors.enabled : true
    http.cors.allow-origin: "*"
  • rzxesn3配置: [rzxes@rzxesn3 elasticsearch-5.3.1]$ vim config/elasticsearch.yml 詳細如下:
  • cluster.name: es  
    #節點名需不同 node.name: node-3 # IP換成各自本機IP,三個端口號需要修改成不同 network.host: 192.168.230.152 http.port: 9203
    discovery.zen.ping.unicast.hosts: ["192.168.230.150", "192.168.230.151", "192.168.230.152"]
    path.data: /path/to/data
    path.logs: /path/to/logs
    bootstrap.system_call_filter: false
    bootstrap.memory_lock: false
    http.cors.enabled : true
    http.cors.allow-origin: "*"

2、分布式啟動:

  • 分別啟動三個ES: bin/elasticsearch 。正常起動會共同推舉一個節點做Master。詳情如下:
  • node-1最先啟動,當node-2啟動,node-1 added (node-2)到集群,
  • node-2推舉master為node-1
  • node-3推舉master為node-1
  • 啟動es-head,查看集群狀況: [rzxes@rzxes elasticsearch-head]$ grunt server 結果如下:(如下是再導入數據之后,后面會詳細寫)
  • 訪問9100端口:http://192.168.230.150:9100/
  • 如此,分布式就搭建完成了,這里默認的是5個分片(0,1,2,3,4)一個副本。

3、分布式搭建可能遇到的問題:

  • [ERROR]:with the same id but is a different node instance    

 解決:刪除data,logs目錄(所有節點都要刪除)重新啟動。(這也是我在前面配置文件中提到的Cluster ID不同造成的問題)

注意:

1、所有復制粘貼的空格重新敲一遍,配置的冒號“:”后面必須跟空格,一旦提示找不到":"則說明是空格有問題。

2、Es不能以root啟動,需要創建自己的用戶:[因為我是直接在用戶目錄下操作的,不存在這種問題,所以放在后面寫給用root角色啟動的用戶]

# 創建用戶名為 rzxes的用戶
useradd rzxes -p 
# 設置 rzxes 用戶的密碼
passwd 123456
# 將es目錄的擁有者設置為 es
chown -R rzxes:rzxes /home/rzxes/elasticsearch-5.3.1

 下篇:[大數據]-Elasticsearch5.3.1+Kibana5.3.1從單機到分布式的安裝與使用<2>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM