A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 chenquanyi626 于 2018-11-15 12:37 编辑

ELKStack入门之Elasticsearch安装和配置(1)

一、Elasticsearch的由来


       许多年前,一个叫Shay Banon的待业工程师跟随他的新婚妻子来到伦敦,他的妻子想在伦敦学习做一名厨师。而他在伦敦寻找工作的期间,接触到了Lucene的早期版本,他想为自己的妻子开发一个方便搜索菜谱的应用。
​        直接使用Lucene构建搜索会有很多的坑以及重复性的工作,所以Shay便在Lucene的基础上不断进行抽象来让Java程序嵌入搜索变得更容易一些,经过一段时间的打磨,就诞生了他的第一个开源作品,他给自己的这个作品起了个名字,叫 “Compass”,中文即“指南针”的意思。之后,Shay找到了一份新工作,新工作是处在一个高性能分布式的开发环境中。他在工作中渐渐发现,越来越需要一个易用的高性能、实时、分布式搜索服务,于是他决定重写Compass,将它从一个库打造成了一个独立的server,并将其改名为Elasticsearch。
​        Elasticsearch发布的第一个版本是在2010年的二月份,从那之后,Elasticsearch便成了Github上最受人瞩目的项目之一,并且很快就有超过300名开发者加入进来贡献了自己的代码。后来Shay和另一位合伙人成立了公司专注打造Elasticsearch,他们对Elasticsearch进行了一些商业化的包装和支持。但是,Elasticsearch承诺,永远都将是开源并且免费的。
​        不过悲剧的是,Shay承诺为妻子开发的菜谱搜索应用,到现在还没做出来……




二、Elasticsearch简介
        Elasticsearch是基于Apache Lucene构建的开源搜索引擎,采用java编写,提供简单易用的RestFul API,简单明了的实现搜索功能,而不必如面对Lucene的复杂性,elasticSearch目标就是屏蔽复杂性,让全文搜索变得相对简单。同时ElasticSearch能够进行大规模的横向扩展,支持PB级的结构化和非结构化数据的处理。
        简单地说,当我们存储机器不够的时候,或者说存储容量不足的时候,我们可以通过不断的横向加节点,也就是加机器来解决存储容量的问题,通过这种方式可以让我们的存储从GB到TB甚至于PB级的转化。

三、应用场景

  • 海量数据的分析引擎
       假设你有海量的日志数据,每天有几百GB或者TB甚至PB级别的日志数据,当你要分析一些指标数据的时候就可以使用ES的聚合搜索功能,来分析解决。而不用花费大量的人力精力来设计一个新的系统。这样不仅节省大量的成本,还能有不错的使用效果。
  • 站内搜索引擎
      当你想搭建一站内搜索的时候,不用花费大量的成本,去开发,只需要简单的继承,并进行一些简单的封装,即可使用。
  • 数据仓库
       可以利用elasticsearch强大的分布式存储能力,可以作为数据仓库来使用。存储PB级别的结构化或者非结构化数据,为上层应用提供强大的数据存储能力。
  • 一线公司实际应用场景
       英国卫报:实时分析公众对文章的回应
       百度:实时日志监控平台
       维基百科,GitHub,站内实时搜索
       阿里,腾讯,小米,京东,Google 等公司都在使用。

四、elasticsearch安装
       4.1  elasticsearch安装包下载(选择版本6.4.0

Window系统下载zip版本,linux系统下载tar版本
下载指定版本的安装包:
        linux 系统下载: elasticsearch-6.4.0.tar.gz
        Windows系统下载:elasticsearch-6.4.0.zip
       4.2 Elasticsearch安装
为了模拟真实场景,我们将在linux下安装Elasticsearch。
       第一步:创建新的用户
[Shell] 纯文本查看 复制代码
[root@quanyi ~]# useradd quanyi
[root@quanyi ~]# passwd quanyi
Changing password for user quanyi.
New password: 
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.

注:Elasticsearch出于安全考虑,禁止使用root账户操作Elasticsearch。当我们在使用elasticsearch的时候,如果是以root权限来执行elasticsearch:

./elasticsearch

则会有以下报错:

Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.

所以我们要创建新的用户。

第二步:切换用户

[Shell] 纯文本查看 复制代码
[root@quanyi lib]# su quanyi

第三步:规划安装目录,上传安装文件到指定目录

[Shell] 纯文本查看 复制代码
#规划安装目录:
/home/quanyi

打开FTP文件传输工具,上传安装文件到安装目录




第四步:解压安装包 重命名解压文件名称
[AppleScript] 纯文本查看 复制代码
[quanyi@quanyi ~]$ tar -zxvf elasticsearch-6.4.0.tar.gz
[quanyi@quanyi ~]$ mv elasticsearch-6.4.0 elasticsearch

第五步:查看安装目录


五、elasticsearch配置
          进入到 cd elasticsearch/config/ 需要修改的配置文件有两个:
          elasticsearch.yml
          jvm.options
扩展:[YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的。
它的基本语法规则如下:
        1.大小写敏感
        2.使用缩进表示层级关系
        3.缩进时不允许使用Tab键,只允许使用空格。
        4.缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
        5.表示注释,从这个字符一直到行尾,都会被解析器忽略]

      第一步:修改 elasticsearch.yml 文件
[Shell] 纯文本查看 复制代码
#配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,
#如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。        
cluster.name: my-es
#当前节点的名称
node.name: quanyi
# 添加日志目录和数据存放目录:
path.data: /home/yunwu/elasticsearch/data # 数据目录位置
path.logs: /home/yunwu/elasticsearch/logs # 日志目录位置
# 设置当前的ip地址,通过指定相同网段的其他节点会加入该集群中
network.host: 192.168.57.101 
#设置对外服务的http端口,默认9200
http.port: 9200
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["[backcolor=yellow]quanyi[/backcolor]"]
扩展:
[Shell] 纯文本查看 复制代码
#主机名映射
[root@quanyi ~]# vim /etc/hosts
[root@quanyi ~]# source /etc/hosts
    192.168.57.101   quanyi
       第二步:修改jvm.options
      Elasticsearch基于Lucene的,而Lucene底层是java实现,因此我们需要配置jvm参数,Jvm.options默认配置是:
               -Xms1g
               -Xmx1g
     教学需要默认配置参数太大了,我们调小一些(在实际生产中根据需要增加或者减少jvm大小的配置):
               -Xms512m
               -Xmx512m
     第三步:创建data目录和logs的目录
     刚才我们修改配置,把data和logs目录修改指向了elasticsearch的安装目录。但是这两个目录并不存在,因此我们需要创建出来。如果存在就不用创建。
    进入Elasticsearch的根目录,然后创建:
[Shell] 纯文本查看 复制代码
mkdir data
mkdir logs
到此Elasticsearch安装配置已经完成,可以进入elasticsearch/bin 目录使用 ./elasticsearch 启动。但是会报错。我们下面解决启动报错的问题。

六、解决启动报错
第一个报错(内核过低):
       我们使用的是centos6,其linux内核版本为2.6。而Elasticsearch的插件要求至少3.5以上版本。不过没关系,我们禁用这个插件即可。
       解决方案:
       修改elasticsearch.yml文件,在最下面添加以后配置:
      
[Shell] 纯文本查看 复制代码
bootstrap.system_call_filter: false
       重启这个错误解决。
      第二个报错(文件权限不足):
      我们用的是quanyi用户,而不是root,所以文件权限不足。
     解决方案:
            首先用root用户登录。
            修改配置文件limits.conf
[Shell] 纯文本查看 复制代码
[root@quanyi /]# vim /etc/security/limits.conf
            添加如下配置:
[Shell] 纯文本查看 复制代码
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096

扩展
nofile 是针对用户打开最大文件数的限制的一个设置,nproc是操作系统级别对每个用户创建的进程数的限制,在Linux下运行多线程时,每个线程的实现其实是一个轻量级的进程,对应的术语是:light weight process(LWP)。
soft nproc: 可打开的文件描述符的最大数(软限制)
hard nproc:可打开的文件描述符的最大数(硬限制)
soft nofile:单个用户可用的最大进程数量(软限制)
hard nofile:单个用户可用的最大进程数量(硬限制)
        第三个报错(线程数不够):
[Shell] 纯文本查看 复制代码
[2]: max number of threads [1024] for user [quanyi] is too low, increase to at least [4096]
        解决方案:
       继续修改配置:90-nproc.conf
[Shell] 纯文本查看 复制代码
[root@quanyi /]# vim /etc/security/limits.d/90-nproc.conf
第四个报错(进程中内存映射区域的最大数量过小):
[Shell] 纯文本查看 复制代码
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
        解决方案:
       继续修改配置:sysctl.conf
[Shell] 纯文本查看 复制代码
vim /etc/sysctl.conf
       添加下面内容:
[Shell] 纯文本查看 复制代码
vm.max_map_count = 655360
      然后执行命令:-p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
[Shell] 纯文本查看 复制代码
sysctl -p
从启终端窗口,所有错误修改完毕,一定要重启你的 Xshell终端,否则配置在当前Xshell窗口无效。
重新启动Elasticsearch。
浏览器访问elasticsearch服务:


3 个回复

正序浏览
回复 使用道具 举报
回复 使用道具 举报
66666艺哥给力
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马