一.软件版本
-
jdk-8u191-linux-x64.tar.gz
-
elasticsearch-5.4.3.tar.gz
-
kibana-5.4.3-linux-x86_64.tar.gz
-
word-master.zip
二.环境搭建
1.jdk8安装
1.1.下载地址
从https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html中获取安装包
1.2.在usr目录下建立java安装目录
以root用户登录
cd /usr
mkdir java
1.3.解压jdk至当前目录
tar -zxvf jdk-8u60-linux-x64.tar.gz
1.4.安装完毕为他建立一个链接以节省目录长度
ln -s /usr/java/jdk1.8.0_60/ /usr/jdk
1.5.配置环境变量
vim /etc/profile
添加如下内容:JAVA_HOME根据实际目录来
JAVA_HOME=/usr/java/jdk1.8.0_60
CLASSPATH=$JAVA_HOME/lib/
PATH= JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
1.6.执行命令使jdk生效
source /etc/profile
1.7.查看安装情况
java -version
1.8.若以前jdk是低版本,需要执行以下命令再执行1.6步骤使生效
使用which java 和 which javac 分别可以看到原来的安装记录
which java
which javac
然后删掉原来的版本记录
rm -rf /usr/bin/java*
2.elasticsearch-5.4.3集群安装
2.1.解压
从https://www.elastic.co/downloads/past-releases/elasticsearch-5-4-3获取安装包
解压到安装路径下:
tar zxvf elasticsearch-5.4.1.tar.gz
2.2.配置es
查看配置文件:
vim elasticsearch-5.4.1/config/elasticsearch.yml
vim elasticsearch-5.4.1/config/jvm.options
2.2.1.elasticsearch.yml配置详情如下:
cluster.name: cluster_name //自己的集群名称,相同的集群名称需要保持一致。确保不要在不同的环境中重用相同的集群名称,否则可能会导致节点加入错误的集群。
node.name: master //节点名称
node.master: true //是否作为master,默认为true
node.data: true //是否作为data,默认为true
path.data: /var/log/elasticsearch //默认是放在es的安装目录下,但为了避免升级丢失数据,最好不要放在安装目录上,比如/var/log/elasticsearch
path.logs: /var/data/elasticsearch //默认是放在es的安装目录下,但为了避免升级丢失数据,最好不要放在安装目录上,比如/var/data/elasticsearch
network.host: 192.168.2.36 //节点ip,生产地址一般使用IP地址
http.port: 9200 //访问端口,默认为9200
discovery.zen.ping.unicast.hosts: ["slave1", "slave2","master"] //实现节点到节点的集群和主选择
discovery.zen.minimum_master_nodes: 2 //为避免数据丢死(脑裂),数量应该为(master_eligible_nodes / 2) + 1
2.2.2.jvm.options主要用来配置堆大小:
-Xms2g //最小堆大小
-Xmx2g //最大堆大小
设置堆大小的注意事项:
-
Xms与Xmx大小设置成一致
-
es可用的堆大小越大,它可用于缓存的内存越大,但过大的堆大小将导致垃圾回收时间增长
-
将Xmx设置为不超过物理内存的50%,以确保为内核文件系统缓存保留足够的物理内存
-
不要将Xmx设置为高于JVM用于压缩对象指针的截止值;确切的截止时间有所不同,但接近32gb
-
尽量保持在零基础压缩oops的阈值以下;确切的截止时间各不相同,但在大多数系统上26gb是安全的,但在某些系统上可能高达30gb。您可以通过使用JVM选项
-XX:+UnlockDiagnosticVMOptions
-XX:+PrintCompressedOopsMode
启动Elasticsearch来验证您的限制是否达到了
2.2.3.安装时系统常见问题
2.2.3.1.设置系统文件
通过编辑/etc/security/limits.conf来设置:
# Elasticsearch使用大量的文件描述符或文件句柄。耗尽文件描述符可能是灾难性的,并且很可能导致数据丢失。确保将运行Elasticsearch的用户打开的文件描述符的数量限制增加到65,536或更高
elasticsearch soft nofile 65536
elasticsearch hard nofile 65536
# Elasticsearch为不同类型的操作使用了许多线程池。确保Elasticsearch用户能够创建的线程数至少是4096个
elasticsearch soft nproc 2048
elasticsearch hard nproc 2048
#给予elasticsearch用户锁定内存的权限,用来避免内存交换
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
2.2.3.2.避免内存交换
交换对于性能、节点稳定性都是非常糟糕的,应该不惜一切代价加以避免。它可能导致垃圾收集持续几分钟而不是几毫秒,还可能导致节点响应缓慢,甚至与集群断开连接。在弹性分布式系统中,让操作系统杀死节点更有效。可以通过在config/elasticsearch.yml中设置bootstrap.memory_lock: true
将进程地址空间锁定到RAM中,以防止交换。
2.2.3.3.设定虚拟内存
es默认使用mmapfs目录去存储索引,操作系统默认的mmap计数限制可能太低,这可能导致内存不足异常。通过在/etc/sysctl.conf中设置max_map_count为262144将解决该问题。
vi /etc/sysctl.conf
# 在sysctl.conf中增加
vm.max_map_count = 262144
通过sysctl -p
命令查看以上配置是否生效
2.3.es启动
cd elasticsearch-5.4.0/bin
# 启动 -d为守护进程运行
./elasticsearch -d
2.4.查看es集群状态
通过浏览器访问:http://192.168.2.36:9200/_cat/health?v即可以看到集群的基本状况,效果如下:
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1540807979 18:12:59 search yellow 3 1 10 10 0 0 10 0 - 50.0%
3.kibana的安装
kibana可以作为es的图形化界面
3.1.解压
从https://www.elastic.co/downloads/past-releases/kibana-5-4-3获取安装包,然后解压即可
tar zxvf kibana-5.4.3-linux-x86_64.tar.gz
3.2.启动
需要远程访问kibana的话,需要修改config/kibana.xml的配置:
#设置ip不限制
server.host: "0.0.0.0"
#es地址
elasticsearch.url: "http://192.168.2.36:9200"
执行命令bin/kibana
,然后访问http://192.168.2.36:5601查看
4.word分词插件的安装
该插件支持中文分词和词性分析
4.1.解压
从https://github.com/ysc/word中获取插件压缩包,然后解压至es安装目录plugins下,且每个es服务都应该安装该插件!将es重新启动即可。
4.2.测试中文分词效果
在浏览器中访问:http://192.168.2.36:9200/_analyze?pretty&analyzer=word&text=杨尚川是APDPlat应用级产品开发平台的作者,可以看到如下效果就说明中文分词已经生效。analyzer=word表示采用的分词器是word,且与es目录plugins中的文件名保持一致。
{
“tokens” : [
{
“token” : “杨尚川”,
“start_offset” : 0,
“end_offset” : 3,
“type” : “word”,
“position” : 0
},
{
“token” : “是”,
“start_offset” : 3,
“end_offset” : 4,
“type” : “word”,
“position” : 1
},
{
“token” : “APDPlat”,
“start_offset” : 4,
“end_offset” : 11,
“type” : “word”,
“position” : 2
},
{
“token” : “应用”,
“start_offset” : 11,
“end_offset” : 13,
“type” : “word”,
“position” : 3
},
{
“token” : “级”,
“start_offset” : 13,
“end_offset” : 14,
“type” : “word”,
“position” : 4
},
{
“token” : “产品”,
“start_offset” : 14,
“end_offset” : 16,
“type” : “word”,
“position” : 5
},
{
“token” : “开发”,
“start_offset” : 16,
“end_offset” : 18,
“type” : “word”,
“position” : 6
},
{
“token” : “平台”,
“start_offset” : 18,
“end_offset” : 20,
“type” : “word”,
“position” : 7
},
{
“token” : “的”,
“start_offset” : 20,
“end_offset” : 21,
“type” : “word”,
“position” : 8
},
{
“token” : “作者”,
“start_offset” : 21,
“end_offset” : 23,
“type” : “word”,
“position” : 9
}
]
}
参考链接: