Elasticsearch 部署以及报错解决
前言
Elasticsearch 是一个非常值得学习和使用的分布式存储
此次部署将采用 centos6.9
一、初步了解 ES
简谈概念
Elasticsearch 是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。
Elasticsearch 也使用 Java 开发并使用 Lucene 作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。
运维角度个人理解
Lucene 是一个相当好的开源的搜索框架,但是其原理对于运维比较难于理解,ES 在 Lucene 基础上进行开发,降低了这类搜索引擎的操作难度,
运维需要做的就是部署,简易使用以及了解会有何种问题出现,并预防将会出现的问题。
二、安装 ES 前准备工作
同一系统以及内核版本
[root@web01 ~]# uname -r
2.6.32-696.el6.x86_64
[root@web01 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
提前准备所需 tar 包
1.下载 jdk8
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2.下载新版 ES
http://pub.datahunter.cn/elastic/elasticsearch-6.4.0.tar.gz
安装 jdk
1.创建专属目录
mkdir -p /application/java
将 jdk 的 tar 包传入
2.解压 tar 包
tar -zxvf jdk-8u60-linux-x64.tar.gz
3.简化复杂目录
ln -s /application/java/jdk1.8.0_60/ /application/jdk
4.配置环境变量
vim /etc/profile
在文本的末尾添加如下内容:
JAVA_HOME=/application/jdk
CLASSPATH=JAVAHOME/lib/PATH=PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
5.生效配置内容
source /etc/profile
6.查看安装情况
java -verison
看到此行说明成功:java version “1.8.0_60”
7.有可能出现的问题
bash: ./java: cannot execute binary file
问题原因:系统位数与安装 jdk 不同
uname -m 查看系统位数
三、开始安装 ES
同一目录并解压 tar 包
将下载好的 tar 包放到 /application 下
tar xf elasticsearch-6.4.0.tar.gz
解压完成后删掉原 tar 包
简化目录并直接运行 ES
ln -s /application/elasticsearch-6.4.0 /application/elasticsearch
cd /application/elasticsearch/bin
./elasticsearch
四、运行过程中遇到的问题以及解决办法
问题一:can not run elasticsearch as root
ES 必须使用非 root 用户启动
原因:这是出于系统安全考虑设置的条件。由于 ElasticSearch 可以接收用户输入的脚本并且执行,为了系统安全考虑, 建议创建一个单独的用户用来运行 ElasticSearch
解决方法:
groupadd elsearch #创建ES用户组
useradd elsearch -g elsearch -p elasticsearch #创建ES用户并归于ES用户组
chown -R elsearch:elsearch /application/elasticsearch #赋予其权限
su elsearch #切换账户
cd /application/elasticsearch/bin
./elasticsearch
问题二:ERROR: bootstrap checks failed(此问题解决中囊括多个类似问题,可以一步到位)
分别加大打开文件的最大数目和进程的最大数目
vim /etc/security/limits.conf 添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
问题三:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
elasticsearch 用户拥有的内存权限太小,至少需要262144(这里只是需要这些内存权限,但不会都用到,还是要看业务)
vim /etc/sysctl.conf
在最后一行添加如下内容:
vm.max_map_count=655360
执行命令使生效:
sysctl -p
问题四:不能后台运行问题
ES 在执行后会夯住,我们需要将它调整至后台运行,一般采用&实现
ES 较特殊,这里使用 nohup 命令
nohup ..../bin/elasticsearch &
问题五:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000e5330000, 449642496, 0) failed; error='Cannot allocate memory' (errno=12)
ES 内存分配不足
解决办法:
1、进入/application/elasticsearch-6.4.0/config
2、修改jvm.options 的配置 vim jvm.options
3、修改为 -Xms512m
-Xmx512m
问题六:如何设置外网访问
使用 find 搜索 elasticsearch.yml
vim elasticsearch.yml
将原来默认 ip 更换为0.0.0.0
network.host: 0.0.0.0
http.port: 9200
再次启动后即可外网访问
Elasticsearch 部署以及报错解决的更多相关文章
- Elasticsearch聚合操作报错解决办法
1. 当根据一个类型为text的字段idc进行聚合操作时,查询语句如下: { "aggs": { "top_10_states": { "terms& ...
- 部署php程序报错解决---TP框架
1.TP框架中 出现如下错误: 访问网站 http://192.168.0.204/ STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/51620d75af91aa7 ...
- Maven-008-Nexus 私服部署发布报错 Failed to deploy artifacts: Failed to transfer file: ... Return code is: 4XX, ReasonPhrase: ... 解决方案
我在部署构件至 maven nexus 私服时,有时会出现 Failed to deploy artifacts: Failed to transfer file: ... Return code i ...
- CentOS 6.5 Maven 编译 Apache Tez 0.8.3 踩坑/报错解决记录
最近准备学习使用Tez,因此从官网下载了最新的Tez 0.8.3源码,按照安装教程编译使用.平时使用的集群环境是离线的,本打算这一次也进行离线编译,无奈一编译就开始报缺少jar包的错,即使手动下载ja ...
- MyEclipse Server view报错解决方法
MyEclipse Server view报错解决方法 方法/步骤 启动MyEclipse,弹出一个框,报错. ---------------------------------------- ...
- 【spring boot】【elasticsearch】spring boot整合elasticsearch,启动报错Caused by: java.lang.IllegalStateException: availableProcessors is already set to [8], rejecting [8
spring boot整合elasticsearch, 启动报错: Caused by: java.lang.IllegalStateException: availableProcessors ], ...
- sphinx :undefined reference to `libiconv' 报错解决办法
sphinx :undefined reference to `libiconv' 报错解决办法 2013-11-30 21:45:39 安装sphinx时不停报错...郁闷在make时报错,错误 ...
- redis运用连接池报错解决
redis使用连接池报错解决redis使用十几小时就一直报异常 redis.clients.jedis.exceptions.JedisConnectionException: Could not g ...
- linux下启动dbca或netmgr类的图形界面报错解决
linux下启动dbca或netmgr类的图形界面报错解决 Xlib: connection to ":0.0" refused by server Xlib: No pro ...
随机推荐
- element-ui 中 el-table 相关操作
1.带checkbox 获取所有选择的行. this.$refs.multipleTable.selection 获取选中的单行 this.$refs.roleTable.store.states. ...
- 常见python面试题-手写代码系列
1.如何反向迭代一个序列 #如果是一个list,最快的方法使用reversetempList = [1,2,3,4]tempList.reverse()for x in tempList: pr ...
- beego从入门到弃坑(一)
最近由于要写课程设计的原因,我便开始一边学习beego,一边开始用它写一个小型的管理系统.但是只有你真正的去用的时候,才会发现这个框架巨坑,他是第一个让我写出了心里阴影的框架,也是第一个让我写着写 ...
- easyUi的组合表格
公司之前的项目是用easyui写的里面还混搭着php...把分支下来,有点蒙.晚上回来恶补一下吧,今天渲染这个表格,我开始自己写假数据,然后用ajax操作再使用 obj.datagrid('loadD ...
- SpringMVC【二、项目搭建】
HelloWorld搭建 1.用Maven WebApp框架创建一个项目 红框中的是后添加的 2.添加pom引用(此处因为要引用多个spring包,建议把版本号提出来放到Properties) 会导入 ...
- IDEA找不到maven仓库无法下载依赖解决办法
1.确认Maven安装正常,在cmd窗口输入mvn -version 可以获得版本号: 2. 确认maven安装包下/conf/setting.xml配置文件正确 本地仓库位置: <localR ...
- Makefile中代码写在同一行和分开几行写有什么区别?
在Makefile中,写在同一行的代码就相当于是在Linux中的同一行命令行写的代码一样,是一次性执行的:如程序中如下编写Makefile代码(请注意,两个命令之间应该使用分号“:”来进行分隔): a ...
- STM32L15x——ADC采集DMA数据只第一次正确(已解决)
前提:我用的芯片是STM32L系列,可能对其它STM32系列不完全适用,仅供参考! 一.问题描述 我在使用DMA方式读取单ADC单通道采集的数据时,发现只能正确的采集一次数据,后来的就一直与第一次的相 ...
- git回退到历史版本
问题描述 在开发的过程中,想要修改一个参数的命名.然后修改各种地方,并且push上码云的远程仓库.然后突然发现还要改很多地方,突然后悔不想改动了.那该怎么办呢? 处理步骤 回退本地的git版本 将本地 ...
- 归并排序C程序详解
#include <iostream> #include <cstring> #include <cstdlib> using namespace std; //归 ...