ElasticSearch異常歸納(能力工場小馬哥)

来源:https://www.cnblogs.com/hadoop2015/archive/2018/08/04/9420287.html
-Advertisement-
Play Games

異常1: can not run elasticsearch as root 異常1解決方式: 在es-linux環境中,不允許使用root用戶運行ElasticSearch,所以添加一個新的普通用戶就可以了(linux命令如下) 異常2: failed to obtain lock on ... ...


  • 異常1: can not run elasticsearch as root
[WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-2] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.cli.Command.main(Command.java:88) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:89) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:82) ~[elasticsearch-5.1.2.jar:5.1.2]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:100) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:176) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:306) ~[elasticsearch-5.1.2.jar:5.1.2]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-5.1.2.jar:5.1.2]
... 6 more

 

  • 異常1解決方式: 

在es-linux環境中,不允許使用root用戶運行ElasticSearch,所以添加一個新的普通用戶就可以了(linux命令如下)

1 groupadd es      -- 創建一個用戶組(我使用的es作為組名)
2 useradd -g es es   -- 創建一個用戶(我使用es作為用戶名,並加入到es組裡面)
3 passwd es       -- 為剛剛創建的es用戶添加密碼
4 su es         -- 切換到es用戶下
5 $ElasticSearch_Home/bin/elasticsearch  --啟動ElasticSearch

 

  • 異常2: failed to obtain lock on ...
 1 Caused by: java.io.IOException: failed to obtain lock on /bigdata/env/elasticsearch512/data/nodes/0
 2     at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:238) ~[elasticsearch-5.1.2.jar:5.1.2]
 3     at org.elasticsearch.node.Node.<init>(Node.java:249) ~[elasticsearch-5.1.2.jar:5.1.2]
 4     at org.elasticsearch.node.Node.<init>(Node.java:229) ~[elasticsearch-5.1.2.jar:5.1.2]
 5     at org.elasticsearch.bootstrap.Bootstrap$6.<init>(Bootstrap.java:214) ~[elasticsearch-5.1.2.jar:5.1.2]
 6     at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:214) ~[elasticsearch-5.1.2.jar:5.1.2]
 7     at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:306) ~[elasticsearch-5.1.2.jar:5.1.2]
 8     at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-5.1.2.jar:5.1.2]
 9     ... 6 more
10 Caused by: java.nio.file.AccessDeniedException: /bigdata/env/elasticsearch512/data/nodes/0/node.lock
11     at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84) ~[?:?]
12     at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) ~[?:?]
13     at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) ~[?:?]
14     at sun.nio.fs.UnixFileSystemProvider.newFileChannel(UnixFileSystemProvider.java:177) ~[?:?]
15     at java.nio.channels.FileChannel.open(FileChannel.java:287) ~[?:1.8.0_181]
16     at java.nio.channels.FileChannel.open(FileChannel.java:335) ~[?:1.8.0_181]
17     at org.apache.lucene.store.NativeFSLockFactory.obtainFSLock(NativeFSLockFactory.java:113) ~[lucene-core-6.3.0.jar:6.3.0 a66a44513ee8191e25b477372094bfa846450316 - shalin - 2016-11-02 19:47:11]
18     at org.apache.lucene.store.FSLockFactory.obtainLock(FSLockFactory.java:41) ~[lucene-core-6.3.0.jar:6.3.0 a66a44513ee8191e25b477372094bfa846450316 - shalin - 2016-11-02 19:47:11]
19     at org.apache.lucene.store.BaseDirectory.obtainLock(BaseDirectory.java:45) ~[lucene-core-6.3.0.jar:6.3.0 a66a44513ee8191e25b477372094bfa846450316 - shalin - 2016-11-02 19:47:11]
20     at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:225) ~[elasticsearch-5.1.2.jar:5.1.2]
21     at org.elasticsearch.node.Node.<init>(Node.java:249) ~[elasticsearch-5.1.2.jar:5.1.2]
22     at org.elasticsearch.node.Node.<init>(Node.java:229) ~[elasticsearch-5.1.2.jar:5.1.2]
23     at org.elasticsearch.bootstrap.Bootstrap$6.<init>(Bootstrap.java:214) ~[elasticsearch-5.1.2.jar:5.1.2]
24     at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:214) ~[elasticsearch-5.1.2.jar:5.1.2]
25     at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:306) ~[elasticsearch-5.1.2.jar:5.1.2]
26     at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-5.1.2.jar:5.1.2]
27     ... 6 more
  • 異常2解決方式: 

由於上面使用root創建的es目錄,導致ElasticSearch安裝目錄的所屬用戶和所屬組都是root,現在使用es用戶去啟動elasticsearch命令,導致沒有許可權獲取node.lock

最直接的解決方式: 將es所有目錄更改所屬用戶到es下就可以了

1 chown -R es:es ./elasticsearch512
2     --(elasticsearch512是我對es安裝目錄的命名)
3     --(-R選項: 將elasticsearch512目錄及內部所有子目錄都更改所屬用戶)
4     --(es:es  代表:  用戶:用戶組)

 

  • 異常3: BindTransportException[Failed to bind to [9300-9400]]
 1 [WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-2] uncaught exception in thread [main]
 2 org.elasticsearch.bootstrap.StartupException: BindTransportException[Failed to bind to [9300-9400]]; nested: BindException[Cannot assign requested address];
 3     at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-5.1.2.jar:5.1.2]
 4     at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-5.1.2.jar:5.1.2]
 5     at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) ~[elasticsearch-5.1.2.jar:5.1.2]
 6     at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) ~[elasticsearch-5.1.2.jar:5.1.2]
 7     at org.elasticsearch.cli.Command.main(Command.java:88) ~[elasticsearch-5.1.2.jar:5.1.2]
 8     at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:89) ~[elasticsearch-5.1.2.jar:5.1.2]
 9     at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:82) ~[elasticsearch-5.1.2.jar:5.1.2]
10 Caused by: org.elasticsearch.transport.BindTransportException: Failed to bind to [9300-9400]
11     at org.elasticsearch.transport.TcpTransport.bindToPort(TcpTransport.java:636) ~[elasticsearch-5.1.2.jar:5.1.2]
12     at org.elasticsearch.transport.TcpTransport.bindServer(TcpTransport.java:601) ~[elasticsearch-5.1.2.jar:5.1.2]
13     at org.elasticsearch.transport.netty4.Netty4Transport.doStart(Netty4Transport.java:182) ~[?:?]
14     at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:69) ~[elasticsearch-5.1.2.jar:5.1.2]
15     at org.elasticsearch.transport.TransportService.doStart(TransportService.java:188) ~[elasticsearch-5.1.2.jar:5.1.2]
16     at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:69) ~[elasticsearch-5.1.2.jar:5.1.2]
17     at org.elasticsearch.node.Node.start(Node.java:577) ~[elasticsearch-5.1.2.jar:5.1.2]
18     at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:234) ~[elasticsearch-5.1.2.jar:5.1.2]
19     at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:308) ~[elasticsearch-5.1.2.jar:5.1.2]
20     at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-5.1.2.jar:5.1.2]
21     ... 6 more
22 Caused by: java.net.BindException: Cannot assign requested address
23     at sun.nio.ch.Net.bind0(Native Method) ~[?:?]
24     at sun.nio.ch.Net.bind(Net.java:433) ~[?:?]
25     at sun.nio.ch.Net.bind(Net.java:425) ~[?:?]
26     at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) ~[?:?]
27     at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:127) ~[?:?]
28     at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:554) ~[?:?]
29     at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1258) ~[?:?]
30     at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:512) ~[?:?]
31     at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:497) ~[?:?]
32     at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:980) ~[?:?]
33     at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:250) ~[?:?]
34     at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:363) ~[?:?]
35     at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) ~[?:?]
36     at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:418) ~[?:?]
37     at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:454) ~[?:?]
38     at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:873) ~[?:?]
39     at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
  • 異常3解決方式
1 network.host: 0.0.0.0     -- 綁定IP到本機        
  • 啟動失敗1:
1 ERROR: bootstrap checks failed
2 max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
  • 啟動失敗1解決方式:

  原因: elasticsearch 能夠打開的最大句柄數為65536,這個數量不能滿足最低65536的要求,更改一下可以linux的配置文件解決

1 vi /etc/security/limits.conf
2 
3 root soft nofile 65535
4 root hard nofile 65535
5 * soft nofile 65536  --將所有用戶能夠打開的最大句柄數都修改為65536
6 * hard nofile 65536
  • 啟動失敗2:

  原因: 直接翻譯就是虛擬記憶體65530太低

1 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
  • 啟動失敗2解決方式:
1 vi /etc/sysctl.conf
2 vm.max_map_count=655360
3 按Esc-->按Shift+:-->輸入wq 保存退出
4 sysctl -p       -- 命令意思: 從指定的文件載入系統參數,如不指定即從/etc/sysctl.conf中載入

 

  • 從節點加入集群失敗1:  failed to send join request to master
1 [INFO ][o.e.d.z.ZenDiscovery     ] [node-2] failed to send join request to master [{node-1}{7Wy1WO3fQZmBDwcDQRDh2Q}{kqmtZtjiSuC79opYfj1jzg}{172.31.87.193}{172.31.87.193:9300}], 
  reason [RemoteTransportException[[node-1][172.31.87.193:9300][internal:discovery/zen/join]];
nested: IllegalArgumentException[can't add node {node-2}{7Wy1WO3fQZmBDwcDQRDh2Q}{HW7YhCEBRbGti1ra7WXTYg}{172.31.87.192}{172.31.87.192:9300},
found existing node {node-1}{7Wy1WO3fQZmBDwcDQRDh2Q}{kqmtZtjiSuC79opYfj1jzg}{172.31.87.193}{172.31.87.193:9300} with the same id but is a different node instance]; ]
  • 從節點加入集群失敗1解決方式:

出錯原因: 該節點(node2)的安裝文件都是妥妥的在主節點(node1)拷貝過來的,所以,數據文件(data文件夾下麵的數據也拷貝過來了),按照拋錯意思,可能是裡面保存了node1的id等信息導致了衝突

1 rm -rf $ElasticSearch_home/data/*    --刪除data目錄下麵的從Node1考來的所有數據
2 在node2節點上重啟elasticsearch
3 在node1主節點上會發現如下狀態信息: 4 [node-1] added {{node-2}{Qg2j8WLgQpy10mzs-r42Eg}{85mIKdCRRG-BAb42g8YhDg}{172.31.87.192}{172.31.87.192:9300},}, reason: zen-disco-node-join[{node-2}{Qg2j8WLgQpy10mzs-r42Eg}{85mIKdCRRG-BAb42g8YhDg}{172.31.87.192}{172.31.87.192:9300}] 5 [2018-08-04T23:40:25,006][INFO ][o.e.c.r.a.AllocationService] [node-1] Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[megacorp][4]] ...]).

 

 

 

JavaAPI開發異常1:  NoNodeAvailableException: None of the configured nodes are available

 1 Exception in thread "main" NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{9zZ22lWuQpKTZlroNRCrNg}{47.105.116.201}{47.105.116.201:9300}]]
 2     at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:328)
 3     at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:226)
 4     at org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59)
 5     at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:345)
 6     at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:403)
 7     at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80)
 8     at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54)
 9     at org.elasticsearch.action.ActionRequestBuilder.get(ActionRequestBuilder.java:62)
10     at com.nengli51.es.data.Demo.main(Demo.java:23)

異常原因: 通過 TransportClient 連接集群時,需要配置 cluster.name 信息,出錯原因可能是 使用Settings.EMPTY選項,或者使用了錯誤的Setting配置,導致連接集群失敗

1 Settings settings = Settings.builder().put("cluster.name", "estest").build();
2 TransportClient client = new PreBuiltTransportClient(settings);   //這裡是連接配置了cluster.name的集群的連接方式,如果你的ElasticSearch集群使用的預設集群名字(壓根就沒設置elasticsearch)那麼直接使用下麵的
* TransportClient client = new PreBuiltTransportClient(Settings.EMPTY);

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 微信小程式不存在 ,那麼它是如何實現數據請求功能的呢?在微信中提供了 的調用 ,這個是很不錯的。下麵就講一下如何請求數據,簡單到不行。 wx.request 看文檔時,提供了示例模板如下: 如何調取數據這是個難題,但是要模擬調用是有可能的。因為有個網址:https://easy mock.co ...
  • 今天我們來說一下for 和while迴圈 Python迴圈語句的控制結構圖如下所示: for 是Python程式員使用最多的語句,for 迴圈用於迭代容器對象中的元素,這些對象可以是列表、元組、字典、集合、文件,甚至可以是自定義類或者函數 Python 布爾迴圈實例: 輸出如下:a b c d in ...
  • 類中可以存在的成員: 類載入過程: 1、JVM會先去方法區中找有沒有類對應的.class存在,如果有,就直接使用;如果沒有,就把對應類的.class載入到方法區; 2、將.class載入到方法區的時候,分為兩部分,首先將非靜態內容載入到方法區的非靜態區域內; 3、再將靜態內容載入到方法區的靜態區域內 ...
  • 下麵整合SpringMVC和MyBatis框架,並做一個小案例 創建資料庫springmvc,並創建兩張表,加入一些數據: 兩張表:商品表,用戶表 新建Dynamic Web Project: 導包: 先把簡單的資料庫配置完成: db.properties: MyBatis的配置文件sqlMapCo ...
  • `目錄 start` "Gradle" "書籍" "發行版本列表" "安裝配置" "SDKMAN方式" "Chocolate" "命令行選項" "守護進程" "Docker安裝" "配置鏡像源" "關鍵配置文件" "build.gradle" "初始化一個新項目" "dependency" "統一依 ...
  • c/c++ 用克魯斯卡爾(kruskal)演算法構造最小生成樹 最小生成樹(Minimum Cost Spanning Tree)的概念: 假設要在n個城市之間建立公路,則連通n個城市只需要n 1條線路。這時,自然會考慮,如何在最節省經費的前提下建立這個公路網路。 每2個城市之間都可以設置一條公路,相 ...
  • ThinkPHP 提供了一個 Model 類,供其他的 Model 進行繼承。Model 類中是 MVC 中的模型類,它是調用 持久層 的上層類。感覺這麼描述問題很多,但是有什麼辦法呢?但是,這個 Model 有時無法滿足我們的一些需求,因此我們需要自定義一個 Model 類出來,不過自定義的 Mo ...
  • 開啟idea的tomcat 遠程調試,需要connect 1099埠,也就是開啟JMX功能。 我是centos yum功能重度依賴者,所以tomcat 肯定也是yum 安裝,但預設沒有開啟這個埠。 於是需要開啟這個埠,網上的教程千篇一律,要求添加以下修改 catalina.sh 。然後在通過 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...