安装Elasticsearch步骤(包含遇到的问题及解决方案)

news2025/3/14 0:22:08

注:笔者是在centos云服务器环境下安装的Elasticsearch

目录

1.安装前准备

2.下载Elasticsearch

 3.启动Elasticsearch 非常容易出问题

 第一次运行时,可能出现如下错误:

一、内存不足原因启动失败

二、使用root用户启动问题

三、启动ES自动被killed

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

五、the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

后续在使用中遇到问题也会持续更新……


1.安装前准备

至少需要jdk版本8以上的java环境,笔者安装的elasticsearch需要jdk11及以上的java环境。大家可以去Oracle官网下载合适的环境

Java Downloads | Oracleicon-default.png?t=N7T8https://www.oracle.com/java/technologies/downloads/#java17jdk安装教程可以查看这篇文章,笔者也是按照这篇文章的第二个方法安装的

Linux系统下安装Java环境(史上最简单没有之一)_linux下载java-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_43329216/article/details/118385502

2.下载Elasticsearch

 推荐在 /usr/local 路径下 运行以下命令,来下载Elasticsearch压缩包

# 下载
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.1-linux-x86_64.tar.gz

# 解压
tar -xvf elasticsearch-7.11.1-linux-x86_64.tar.gz

 3.启动Elasticsearch 非常容易出问题

cd elasticsearch-7.11.1/bin
./elasticsearch
 第一次运行时,可能出现如下错误:
一、内存不足原因启动失败
Exception in thread "main" java.lang.RuntimeException: starting java failed with [1] output: 
# 
# There is insufficient memory for the Java Runtime Environment to continue. 
# Native memory allocation (mmap) failed to map 899678208 bytes for committing reserved memory.
# An error report file with more information is saved as: 
# logs/hs_err_pid653.log error: Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000ca600000, 899678208, 0) failed; error='Not enough space'(errno=12) 	
at org.elasticsearch.tools.launchers.JvmOption.flagsFinal(JvmOption.java:119) 	
at org.elasticsearch.tools.launchers.JvmOption.findFinalOptions(JvmOption.java:81) 	
at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:38) 	
at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:135) 	
at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:86)

原因:ES默认的分配内存超出了空闲内存的大小,所以出现内存不足无法启动的现象。

解决方案:先查看系统内容情况,根据需要修改内存大小

使用 free -h 命令,查看系统内容情况

[es@FrankZhang bin]$ free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        982M        393M        696K        462M        706M
Swap:            0B          0B          0B

 查看 available 大小修改配置文件里的参数大小

vim config/jvm.options

里面有两个参数
## -Xms2g
## -Xmx2g
将这两个参数修改为合适的大小即可,如果修改完后运行还不行,那就需要继续调整。推荐512m或128m即可
-Xmx128m
二、使用root用户启动问题
[2018-12-11T12:53:33,473][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] 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:127) ~[elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114) ~[elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) ~[elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) ~[elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.cli.Command.main(Command.java:88) ~[elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) ~[elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[elasticsearch-5.5.1.jar:5.5.1]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
	at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:194) ~[elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:351) ~[elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) ~[elasticsearch-5.5.1.jar:5.5.1]
	... 6 more

原因:ElasticSearch不允许直接通过 root 来登录

解决方案:需要另外设置一个账户来启动

adduser es

passwd es

# 赋予es用户权限
chown -R es:es elasticsearch-7.11.1/

chmod 770 elasticsearch-7.11.1/

# root 用户切换到 es 用户
su es

使用这个 es 用户去启动,就可以解决上面的问题。

三、启动ES自动被killed
[es@FrankZhang bin]$ ./elasticsearch
Killed

原因:服务器可用内存没有达到ES虚拟机所需内存的默认值或者是目前系统缓存占用很大

解决方案:超过默认值就是上面第一个问题,目前系统缓存占用大可以用下面的命令来回收buffer/cache

echo 1 > /proc/sys/vm/drop_caches # 仅清除页面缓存
echo 2 > /proc/sys/vm/drop_caches # 清除目录项和inode
echo 3 > /proc/sys/vm/drop_caches # 清除页面缓存、目录项以及inode
四、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

注:这个和上面的内存不足不是同一种问题

原因:elasticsearch 用户拥有的内存权限太小。至少需要262144

解决方案:编辑 /etc/sysctl.conf 文件

# 在最后添加一行
vm.max_map_count=262144

# 保存退出后需要让配置生效
sysctl -p
五、the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

原因:缺少默认配置

解决方案:

至少需要配置三个中的一个参数

  • discovery.seed_hosts:集群主机列表
  • discovery.seed_providers: 基于配置文件配置集群主机列表
  • cluster.initial_master_nodes: 启动时初始化的参与选主的node,生产环境必填

后续在使用中遇到问题也会持续更新……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1103924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据仓库】hadoop生态圈与数据仓库

文章目录 1.大数据定义2. Hadoop与数据仓库3. 关系数据库的可扩展性瓶颈4. CAP理论5. Hadoop数据仓库工具5.1. RDS和TDS5.2. 抽取过程5.3. 转换与装载过程5.4. 过程管理和自动化调度5.5.数据目录(或者称为元数据管理)5.6.查询引擎…

ELK + Filebeat 分布式日志管理平台部署

ELK Filebeat 分布式日志管理平台部署 1、前言1.1日志分析的作用1.2需要收集的日志1.3完整日志系统的基本特征 2、ELK概述2.1ELK简介2.2为什么要用ELK?2.3ELK的组件 3、ELK组件详解3.1Logstash3.1.1简介3.1.2Logstash命令常用选项3.1.3Logstash 的输入和输出流3.1.4Logstash配…

Tengine 边缘AI计算框架移植RV1126(包括opencv的交叉编译)

目录 1.编译opencv 2.拷贝SDK源码到虚拟机 3. 拉取TIM-VX代码 4.拉取Tengine源码并配置 1.编译opencv 编译opencv是为了,在编译Tengine时指定OpenCVConfig.cmake,以便寻找特定的opencv动态库 01.从github拉取opencv源代码 git clone -b 4.5.5 https://github.co…

unity 浏览器插件【embedded browser(原zfbrowser)】简单教程,使unity支持web h5页面,附软件下载链接

一 简介 这是个在项目中使用了很久的浏览器插件。 很负责任的说这是在pc平台上最好用的浏览器插件 商业付费价格78刀,相比3d webview等插件动不动就178、368的价格就显得很良心 最新版下载链接(请勿商用) 1.1 功能概述 基本和普通浏览器无…

基于Scrapyd与Gerapy部署scrapy爬虫方案【可用于分布式爬虫部署】

scrapyd部署爬虫 Scrapyd 是一个基于 Scrapy 的开源项目,它提供了一个简单的方式来部署、运行和监控 Scrapy 爬虫。它是一个用于集成 Scrapy 爬虫到分布式架构中的工具,允许您在分布式环境中运行爬虫,并提供了一组 Web API,用于管…

软考高级系统架构设计师系列之:数学与经济管理

软考高级系统架构设计师系列之:数学与经济管理 一、数学与经济管理二、图论应用-最小生成树三、图论应用-最短路径四、图论应用-网络与最大流量五、运筹方法-线性规划六、运筹方法-动态规划七、运筹方法-转移矩阵八、运筹方法-排队论九、运筹方法-决策-不确定决策十、运筹方法…

携手北大医学部、哈佛BCH顶尖平台,飞鹤全面启动脑发育战略

10月17日,“专研大脑营养 聪明中国宝宝”飞鹤脑发育战略发布会在北京举办。会上,中国飞鹤宣布启动脑发育战略。诺奖得主迈克尔莱维特、中国工程院院士朱蓓薇、中国工程院院士陈卫、北京大学神经科学研究所副所长邢国刚等海内外专家齐聚,共同探…

Redis数据结构之listpack

前言 当数据量较小时,Redis 会优先考虑用 ziplist 来存储 hash、list、zset,这么做可以有效的节省内存空间,因为 ziplist 是一块连续的内存空间,它采用一种紧凑的方式来存储元素。但是它也有缺点,比如查找的时间复杂度…

Unity2023, Unity2022, Unity2021的性能对比(帧率)

最近由于需要用到Unity最新版的一些功能,比如Spline,比如Foward渲染,新项目用了Unity2022.3.5版本,但是出包之后,感觉帧率很低。本着好奇的态度,专门写了一个测试场景,分别在Unity2023.1.15&…

激光跟踪仪在风电行业中的应用

随着全球能源行业重点从化石能源向可再生能源转移,风电行业逐渐成为我国能源供应体系的重要分支,相关的风电检测设备需求量急剧增加。 风电设备主要特点是“重、大”,在过去,主要使用大型卡尺、两点式仪表、专用模板等量具对重要尺…

PS运行中缺失d3dcompiler_47.dll问题的5个有效修复方法总结

在使用ps作图的时候,我们有时会遇到一些问题,其中之一就是“PS运行中缺失d3dcompiler_47.dll”的问题。这个问题可能会导致PS无法正常运行,“d3dcompiler_47.dll”。这是一个动态链接库文件,它是DirectX的一部分,主要负…

Docker仓库harbor私服搭建

Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。 提供分层传输机制,优化网络传输 Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FT…

Kubernetes 基础

Kubernetes是什么 K8S由google的Borg系统(博格系统,google内部使用的大规模容器编排工具)作为原型, 后经GO语言延用Borg的思路重写并捐献给CNCF基金会开源。 云原生基金会(CNCF)于2015年12月成立,隶属于Linux基金会…

Lock锁的使用方法(一)

public class LockTest01 {private Lock lock new ReentrantLock();public static void main(String[] args) throws InterruptedException {/*** Lock锁 获取锁和释放锁 需要开发人员自己定义*/LockTest01 lockTest01 new LockTest01();lockTest01.print();Thread.sleep(500…

C++基础入门详解(二)

文章目录 引用语法和使用场景基本语法使用场景引用作函数参数引用作返回值常引用 权限问题权限的放大、平移、缩小类型转化时使用的 const 引用的底层逻辑 内联函数内联函数缺点 引用 C中的引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器…

海量小文件数据传输如何确保安全性

在当今的信息化社会,企业需要处理和传输的文件越来越多,越来越大。其中,海量小文件数据是一种特殊的数据类型,它由数亿级别的小文件(通常小于1MB)组成,它在图片网站、物联网设备、日志分析等场景…

尚硅谷Flink(完)FlinkSQL

🧙FlinkSQL🏂🤺 Table API 和 SQL 是最上层的 API,在 Flink 中这两种 API 被集成在一起,SQL 执行的对象也是Flink 中的表(Table),所以我们一般会认为它们是一体的。 SQL API 是基于…

C#的数据集:DataSet对象

目录 一、合并DataSet内容 1.源码 2.生成效果 二、 复制DataSet内容 1.源码 2.生成效果 DataSet对象就像存放于内存中的一个小型数据库。它可以包含数据表、数据列、数据行、视图、约束以及关系。通常,DataSet的数据来源于数据库或者XML,为了从数…

智慧文旅推动“互联网+”深入发展、促进数字经济加速增长

1997年之后,科技开始成为旅游行业发展的重要生产要素和重要动力。 文旅1.0时代,科技所能提供的信息和服务基本都需要游客在旅游开始之前做大量的准备工作,而在旅游过程中却无法随机应变,对于旅游景点来说,也只是更换了…

如何在C程序中使用libcurl库下载网页内容

概述 爬虫是一种自动获取网页内容的程序,它可以用于数据采集、信息分析、网站监测等多种场景。在C语言中,有一个非常强大和灵活的库可以用于实现爬虫功能,那就是libcurl。libcurl是一个支持多种协议和平台的网络传输库,它提供了一…