ES是一个基于RESTful web接口并且构建在Apache Lucene 的开源分布式搜索引擎。它的特点是:高可用,高扩展,是一种NOSQL的数据存储工具。
需要下载以下5个下载包:
下载包的链接地址是:链接:https://pan.baidu.com/s/1wr4Xt1Z8DBWX7xygHB0Zfg 提取码:8dw0
除此之外,还需要安装一下jdk,jdk的版本不唯一,可使用自己平时用的jdk版本,我这里使用的是:jdk-8u221-linux-x64.tar.gz。
除了准备下载包,还要讲虚拟机搭建好,我这里依然采用MobaXterm来实现(这里可以参考第一篇文章来搭建虚拟机)
以上工作做好后,进入MobaXterm环境,在根目录下建一个software文件夹,将上面下载好的6个拖到里面去,进行追个解压。由于最新的工程没有unzip解压命令,需要先下载:yum install -y unzip,下载好后,进入software目录下,
分别输入一下命令进行解压:
tar -zxf elasticsearch-6.2.2.tar.gz -C /opt
tar -zxf kibana-6.2.2-linux-x86_64.tar.gz -C/opt
tar -zxf logstash-6.2.2.tar.gz -C /opt
tar -zxf node-v8.9.1-linux-x64.tar.gz -C/opt
tar -zxf jdk-8u221-linux-x64.tar.gz -C/opt
unzip -d /opt elasticsearch-head-master.zip
将所有解压好的文件都变更到opt目录下(注意unzip命令和tar命令的变更目录命令不一样)。解压好后使用命令:rm -rf * 将software文件里的东西全部删除,然后切到opt目录下查看一下下载好的6个文件:
为了便于记忆和书写,我们将这6个文件都进行重命名:
配置之前,需要将主机名和主机列表修改一下:
[root@promote opt]# vi /etc/hostname
[root@promote opt]# vi /etc/hosts
进入到hostname中将原有的主机名(第一行)直接删除,输入bigdata01(这里可以自行设置),然后保存退出;
进入到hosts中:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.102 bigdata01
前两行是原有的地址和主机名,在其下方输入:192.168.56.102 bigdata01 即自己虚拟机的地址和刚刚在hostname中设置的主机名,然后保存退出。
配置ES参数,输入命令:
vi /opt/es622/config/elasticsearch.yml
进入之后,直接按shift+g跳到最后一行,按o直接在下行进行输入,需要输入一下参数设置:
cluster.name : bigdata --集群名
node.name : master --节点名
node.master : true --是否是主节点
network.host : 192.168.56.102 --本机地址
discovery.zen.ping.unicast.hosts : ["192.168.56.102"] --本机地址
http.cors.enabled : true
http.cors.allow-origin : "*"
注意这里的冒号前后要有空格,不然后面运行会报错,然后保存退出。
配置系统参数,输入命令:
[root@promote opt]# vi /etc/sysctl.conf
进入后,在最后一行按o进行插入:
vm.max_map_count=655360
输入完后保存退出,最好在输入以下命令使之立即生效:
[root@promote opt]# sysctl -w vm.max_map_count=655360
vm.max_map_count = 655360
[root@promote opt]#
出现之前配置的参数说明配置参数成功。还需要配置另外一个系统参数,输入命令:
[root@promote opt]# vi /etc/security/limits.conf
进入之后仍然是跳到最后一行,按o在其下面进行插入:
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
这里的*号后面要有空格,然后保存退出。
新建一个es用户,然后给es设置分组以及赋权:
useradd es
chown -R es:es es622
将es622文件赋给es组下的es用户,然后使用命令切换到es用户,输入命令来启动es:
su es
./es622/bin/elasticsearch
这时候可能会报以下错误:
[root@promote opt]# su es
[es@promote opt]$ ./es622/bin/elasticsearch
which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
could not find java; set JAVA_HOME or ensure java is in PATH
[es@promote opt]$
找不到路径,此时就需要进行jdk环境变量的配置,再次之前需要输入命令:echo $PATH,获取java的路径(看后面的PS注释):
然后再输入命令:vi /etc/profile,进入到jdk文件里,还是第一篇博客一样加入一下内容:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/opt/java8
export CLASSPATH=.:$JAVA_HOME/rt.jar:$JAVA_HOME/tools.jar:$JAVA_HOME/dt.jar
export JRE_HOME=$JAVA_HOME/jre
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
这里需要注意,第二行的jdk名称如果之前有重命名过就要在这里更改,还需要加上一行上面获取的java路径(即倒数第二行),然后保存退出。(PS:需要先将其他环境变量配置好后才可以得到PATH的值,然后再回来加上倒数第二行!!!)退出后依然需要使之立即生效:source /etc/profile,然后输入命令:java -version,能够正确显示版本号就说明配置成功。这时候再去重新 启动es:./es622/bin/elasticsearch ,这里要在es用户下启动,如果还是报之前的错误,只需要将MobaXterm重启一下就可以了。
重启之后,再次输入:./es622/bin/elasticsearch,会加载数据,最后显示的界面是:
然后使用windows,在浏览器中输入网址:192.168.56.102:9200(主机号+9200),可以出现下面的界面就说明ES配置成功。
首先还是需要进入jdk文件添加配置:vi /etc/profile,
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/opt/java8
export CLASSPATH=.:$JAVA_HOME/rt.jar:$JAVA_HOME/tools.jar:$JAVA_HOME/dt.jar
export JRE_HOME=$JAVA_HOME/jre
export NODE_HOME=/opt/node891
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$NODE_HOME/bin
一定要在PATH上方加:export NODE_HOME=/opt/node891(node891是之前设置的别名),然后再最后一行的末尾加上:$NODE_HOME/bin(以冒号连接)。然后保存退出,使之立即生效。输入:node -v 可以查看是否配置成功,出现node的版本号说明配置成功。
下面开始安装Head-master,可以安装一个加速器:
npm config set registry https://registry.npm.taobao.org
然后输入命令:
[root@promote opt]# cd /opt/eshead
[root@promote eshead]# npm install -g grunt-cli
此时需要等待一段时间(要有耐心啊,伙伴们)。出现下面结果即安装成功。
added 150 packages in 28.177s
除此之外,还要安装一个映像文件:
[root@bigdata01 eshead]# npm install phantomjs-prebuilt@2.1.14 --ignore-scripts
出现下面版本号即安装成功:
+ phantomjs-prebuilt@2.1.14
added 95 packages in 7.697s
[root@bigdata01 eshead]#
安装成功后需要配置两个js文件,输入命令:vi Gruntfile.js,进入之后:
在port: 9100下一行加入:
hostname: '*',
完成后保存退出。在输入命令:vi _site/app.js。进入后找到4360行,输入:4360gg直接跳到4360行。
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.56.102:9200";
将localhost改成自己的主机地址。保存退出。输入命令:npm run start 启动head-master,(这里如果不成功,需要输入命令:npm install,安装成功之后,要确保之前的es622的启动状态),然后再启动head-master。启动成功之后,在windows输入网址:192.168.56.102:9100,出现下面结果说明head-master安装成功。
输入命令: cd /opt/kibana622/,再输入:vi config/kibana.yml,进入之后跳到最后一行,在下一行加入参数:
server.host: "192.168.56.102"
elasticsearch.url: "http://192.168.56.102:9200"
然后保存退出。输入命令:./bin/kinana 启动kinana。在windows输入网址:192.168.56.102:5601,出现以下结果就说明kinaba配置成功。
输入命令:cd /opt/logstash622 切换到logstash目录下,输入命令来测试logstash能否正常工作,等待时间要一小段时间:
[root@promote logstash622]# ./bin/logstash -e 'input { stdin{} } output { stdout{} }'
这里最好在input和output的{}前后都有空格。出现下面结果表明可以正常工作:
abc 和 123是我输入的内容,最后一行会有等待输入的光标。
当然这里将输入的结果转成json格式输出,只需要在输出命令里加上转json格式的代码:
[root@promote logstash622]# ./bin/logstash -e 'input { stdin{} } output { stdout{ codec => json } }'
可以得到输出的结果为json格式
也可以转成rubydebug类型输出,命令如下:
[root@promote logstash622]# ./bin/logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug } elasticsearch { hosts => ["192.168.56.111"] } }'
结果如下:
同时已经将这些数据上传到es上,可以登录网址:192.168.56.111:9100进行查看
可以看到之前输入的数据都上传到es上面了。这样就可以实现数据的共享。
除此之外,我们还可以使用logstash读取文件信息。建一个文件夹tmp,然后在里面新建两个文件test.txt和test.conf,在test.txt文件中随便输入几行内容然后保存退出,在test.conf中输入以下内容:
input{
file{
path => "/opt/logstash622/tmp/test.txt"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
output{
stdout{
codec => rubydebug
}
elasticsearch{
hosts => ["192.168.56.111"]
}
}
然后保存退出,test.conf文件读取的文件内容是test.txt的文件,从头开始读取,增加sincedb_path,即linux系统特殊的空洞文件,当logstash每次重启读取sincedb内容,都是空的,也就理解成之前没有记录,自然从头开始读取。
配置完成后,输入命令开始读取文件内容:
./bin/logstash -f tmp/test.conf
可以成功打印test.txt文件的内容,并以rubydebug格式输出,即可以正常使用logstash读取文件。
此外,这些数据也自动上传到es上,可以自行查看。这样我们就完成了logstash的简单的实例测试。