HBase探索篇 _ 单节点多RegionServer部署与性能测试

HBase探索篇 _ 单节点多RegionServer部署与性能测试,第1张

[toc]

随着集群中总的Region数持续增长,每个节点平均管理的Region数已达550左右,某些大表的写入流量一上来,Region Server就会不堪重负,相继挂掉。

在HBase中,Region的一个列族对应一个MemStore,通常一个MemStore的默认大小为128MB(我们设置的为256MB),见参数 hbase.hregion.memstore.flush.size 。当可用内存足够时,每个MemStore可以分配128MB的空间。

当表的写入流量上升时,假设每个Region的写入压力相同,则理论上每个MemStore会平均分配可用的内存空间。

因此,节点中Region过多时,每个MemStore分到的蠢枣内存空间就会变小。此时,写入很小的数据量,就会被强制flush到磁盘,进而导致频繁刷写,会对集群HBase与HDFS造成很大的压力。

同时,Region过多导致的频繁刷写带颂拆,又会在磁盘上产生非常多的HFile小文件,当小文件过多的时候,HBase为了优化查询性能就会做Compaction *** 作,合并HFile,减少文件数量。当小文件一直很多的时候,就会出现 “压缩风暴”。Compaction非常消耗系统的IO资源,还会降低数据的写入速度,严重时会影响正常业务的进行。

关于每个Region Server节点中,Region数量大致合理的范围,HBase官网上也给出了定义:

可见,通常情况下,每个节点拥有20-200个Region是比较正常的。

其实,每个Region Server的最大Region数量由总的MemStore内存大小决定。每个Region的每个列族会对应一个MemStore,假设HBase表都有一个列族,那么每个Region只包含一个樱弯MemStore。一个MemStore大小通常在128~256MB,见参数: hbase.hregion.memstore.flush.size 。默认情况下,RegionServer会将自身堆内存的40%(我们线上60%)(见参数: hbase.regionserver.global.memstore.size )提供给节点上的所有MemStore使用,如果所有MemStore的总大小达到该配置大小,新的更新将会被阻塞并且会强制刷写磁盘。因此,每个节点最理想的Region数量应该由以下公式计算(假设HBase表都有统一的列族配置):

((RS memory) * (total memstore fraction)) / ((memstore size)*(column families))

其中:

以我们线上集群的配置举例,我们每个RegionServer的堆内存是32GB,那么节点上最理想的Region数量应该是: 32768*0.6/256 ≈ 76 (32768*0.6/128 ≈ 153)

上述最理想的情况是假设每个Region上的填充率都一样,包括数据写入的频次、写入数据的大小,但实际上每个Region的负载各不相同,有的Region可能特别活跃、负载特别高,有的Region则比较空闲。所以,通常我们认为2 3倍的理想Region数量也是比较合理的,针对上面举例来说,大概200 300个Region左右算是合理的。

针对上文所述的Region数过多的隐患,以下内容主要从两方面考虑来优化。

提高内存的目的是为了增加每个Region拥有的MemStore的空间,避免其写入压力上升时,MemStore频繁刷写,形成小的HFile过多,引起压缩风暴,占用大量IO。

但其实RS的堆内存并不是越大越好,我们开始使用HBase的时候,对CMS和G1相关的参数,进行了大量压测,测试指标数据表明,内存分配的越大,吞吐量和p99读写平均延时会有一定程度的变差(也有可能是我们的JVM相关参数,当时调配的不合理)。

在我们为集群集成jdk15,设置为ZGC之后,多次压测并分析JVM日志之后,得出结论,在牺牲一定吞吐量的基础上,集群的GC表现能力确实提升的较为明显,尤其是GC的平均停顿时间,99.9%能维持在10ms以下。

而且ZGC号称管理上T的大内存,停顿时间控制在10ms之内(JDK16把GC停顿时间控制在1ms内,期待JDK17 LTS),STW时间不会因为堆的变大而变长。

因此理论上,增加RS堆内存之后,GC一样不会成为瓶颈。

之所以考虑在单节点上部署多个Region Server的进程,是因为我们单个物理机的资源配置很高,内存充足(三百多G,RS堆内存只分了32G)、而HBase又是弱计算类型的服务,平时CPU的利用率低的可怜,网络方面亦未见瓶颈,唯一掉链子的也就属磁盘了,未上SSD,IO延迟较为严重。

当然,也曾考虑过虚拟机的方案,但之前YCSB压测的数据都不太理想;K8s的调研又是起步都不算,没有技术积累。因此,简单、直接、易 *** 作的方案就是多RS部署了。

以下内容先叙述CDH中多RS进程部署的一些关键流程,后续将在多RS、单RS、单RS大堆环境中,对集群进行基准性能测试,并对比试验数据,分析上述两种优化方案的优劣。

我们使用的HBase版本是 2.1.0-cdh6.3.2 ,非商业版,未上Kerberos,CDH中HBase相关的jar包已替换为用JDK15编译的jar。

多Region Server的部署比较简单,最关键的是修改 hbase-site.xml 中region server的相关端口,避免端口冲突即可。可 *** 作流程如下。

修改所需配置文件

hbase-site.xml 配置文件一定不要直接从 /etc/hbase/conf 中获取,这里的配置文件是给客户端用的。CDH管理的HBase,配置文件都是运行时加载的,所以,找到HBase最新启动时创建的进程相关的目录,即可获取到服务端最新的配置文件,如:/var/run/cloudera-scm-agent/process/5347-hbase-REGIONSERVER。需要准备的目录结构如下:

不需要HBase完整安装包中的内容(在自编译的完整安装包中运行RS进程时,依赖冲突或其他莫名其妙的报错会折磨的你抓狂),只需要bin、conf目录即可,pids文件夹是自定义的,RS进程对应pid文件的输出目录,start_rs.sh、stop_rs.sh是自定义的RS进程的启动和关闭脚本。

重点修改下图标注的配置文件,

还有日志文件名的一些输出细节,可以按需在 bin/hbase-daemon.sh 中修改。

运行或关闭RS进程

中间有异常,请查看相关日志输出。

集群Region数疯涨,当写入存在压力时,会导致RS节点异常退出。为了解决目前的这种窘境,本次优化主要从单节点多Region Server部署和提高单个Region Server节点的堆内存两方面着手。

那这两种优化方案对HBase的读写性能指标,又会产生什么样的影响呢?我们以YCSB基准测试的结果指标数据做为参考,大致评价下这两种应急方案的优劣。

用于此次测试的HBase集群的配置

此次测试使用的数据集大小

测试方法

压测时选择的读写负载尽量模拟线上的读写场景,分别为:读写3/7、读写7/3、读写5/5;

压测时唯一的变量条件是:多RS部署(32G堆,在每个节点上启动3个RS进程,相当于集群中一共有15个RS节点)、单RS部署(32G小堆)和单RS部署(100G大堆),并尽可能保证其他实验条件不变,每个YCSB的工作负载各自运行20分钟左右,并且重复完整地运行5次,两次运行之间没有重新启动,以测量YCSB的吞吐量等指标,收集的测试结果数据是5次运行中最后3次运行的平均值,为了避免第一轮和第二轮的偶然性,忽略了前两次的测试。

YCSB压测的命令是:

收集实验数据后,大致得出不同读写负载场景下、各个实验条件下的指标数据,如下图。

上述的测试数据比较粗糙,但大致也能得出些结论,提供一定程度上的参考。

多RS进程部署的模式,起到了一定程度上的进程间资源隔离的作用,分担了原先单台RS管理Region的压力,最大化利用了物理机的资源,但多出来的一些Region Server,需要单独的管理脚本和监控系统来维护,增加了维护成本。多个RS依赖同一台物理机,物理节点宕机便会影响多个RS进程,同时,某一个Region Server出现热点,压力过大,资源消耗过度,也许会引起同机其他进程的不良,在一定程度上,牺牲了稳定性和可靠性。

增加单个RS进程的堆内存,MemStore在一定程度上会被分配更充裕的内存空间,减小了flush的频次,势必会削弱写入的压力,但也可能会增加GC的负担,我们或许需要调整出合适的GC参数,甚至需要调优HBase本身的一些核心参数,才能兼顾稳定和性能。然而,这就又是一件漫长而繁琐的事情了,在此不过分探讨。

面对性能瓶颈的出现,我们不能盲目地扩充机器,在应急方案采取之后,我们需要做一些额外的、大量的优化工作,这或许才是上上之策。

两台服务器手动部署大数据平台

##### 初始服务器数量

- 2台centos7

##### 建议配置

- 32G(RAM)

- 24cpu

- 10t(SATA)

### 1.环境

- 系统centos7

- jdk:1.8.0_171(64位)

- zookeeper:3.4.8

- spark-2.1.0-bin-hadoop2.6

- kafka_2.10-0.10.2.1

- hadoop-2.7.0

- hbase-1.2.6

- elasticsearch-6.3.0

### 2.系统准备

对应的安装包文件:

elasticsearch-6.3.0.tar.gz

hadoop-2.7.0.tar.gz

hbase-1.2.6-bin.tar.gz

jdk-8u171-linux-x64.tar.gz

kafka_2.10-0.10.2.1.tgz

mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar

spark2.1.0hadoop2.6.tgz.gz

zookeeper-3.4.8.tar.gz

一、 配置好hosts

```

两台设备的host

ip1 hello1

ip2 hello2

关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

二、机器之间做好免密

1. 在hello1服务器中,cd /root/

2. ssh-keygen -trsa  (全部按回车,走默认配置)

3. cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys

4. chmod 600 ~/.ssh/authorized_keys

5. scp ~/.ssh/authorized_keys root@hello2:~/.ssh/

到此处时可以实现hello1机器上通过root账户登录到hello2中,但从hello2中无法通过免密码登录到hello1服务器。

6. 在hello2服务器中,cd /root/

7. ssh-keygen -trsa  (全部按回车,走默认配置)

8. cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys

9. scp ~/.ssh/authorized_keys root@hello1:~/.ssh/

到此处时可以实现hello1机器与hello2机器之间免密码互通

三、建立一个用户 *** 作elasticsearch用户,后期所有安装软件放在该目录下(当猜竖前使用root账户安装)

1.添加用户:

useradd -m -s /bin/bash es

2.为该用户设置密码:

password es

四、安装JDK

如果系统自带openjdk,先将其卸载掉!

1.创建jdk安装路径(hello1、hello2都执行)

执行:伍闷 mkdir /usr/java

2.解压缩jdk到安装目录

执行: tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/java/

3.添加环境变量

vi /etc/profile,添加以下语句

export JAVA_HOME=/usr/java/jdk1.8.0_171

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

执行:source /etc/profile

4.复制安装包和数据目录到hello2

scp  -r /usr/java/jdk1.8.0_171 hello2:/usr/java/

scp /etc/profile hello2:/etc/

登录腔兆弯到hello2上,进入/home/es目录

执行: source /etc/profile

5、验证:

两台服务器上分别执行: java -version,查看输出的版本是否与安装的版本一致。

五、安装mysql

1.如果centos系统中自带mariadb,先卸载mariadb。

2.解压mysql安装包程序

执行:tar -xvf  mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar

3.依次安装里面rpm包组建

rpm -ivh mysql-community-common-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-devel-5.7.23-1.el7.x86_64.rpm

4.启动MySQL

执行: systemctl start mysqld

5.登录mysql服务器

这种方式安装好后,会再my.cnf文件中自动生成一个密码,

执行:cat /var/log/mysqld.log | grep password, 出现如下记录:

2017-09-15T01:58:11.863301Z 1 [Note] A temporary password is generated for root@localhost: m-NdrSG4ipuO

其中“m-NdrSG4ipuO”为mysql root账户的初始密码。

登录:

执行: mysql -uroot -p

输入密码: m-NdrSG4ipuO,即可进入mysql服务器。

后续可自行修改root密码,创建新账户等 *** 作。

六、安装zookeeper

1.解压zookeeper安装包到指定目录(/home/es)

tar -zxvf zookeeper-3.4.8.tar.gz -C /home/es

2.创建程序软连接

cd /home/es/

ln -s zookeeper-3.4.8 zookeeper

3.添加执行路径环境

vi /etc/profile

添加

export ZOOKEEPER_HOME=/home/es/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

执行

source /etc/profile

4.修改配置文件

cd /home/es/zookeeper

cp conf/zoo_sample.cfg conf/zoo.cfg

在/home/data下创建对应的zookeeper数据存储目录

mkdir /home/data/zookeeper

mkdir /home/data/zookeeper/data

mkdir /home/data/zookeeper/log

修改配置文件:conf/zoo.cfg,添加以下语句

dataDir=/home/data/zookeeper/data

dataLogDir=/home/data/zookeeper/log

server.1=hello1:2888:3888

server.2=hello2:2888:3888

5.创建server表示符文件

touch /home/data/zookeeper/data/myid

echo echo 1>/home/data/zookeeper/data/myid

6.复制安装包和数据目录到hello2

scp -r /home/es/zookeeper-3.4.8 es@hello2:/home/es

scp -r /home/data/zookeeper es@hello2:/home/data

scp  /etc/profile es@hello2:/etc

登录到hello2上

cd /home/es

ln -s zookeeper-3.4.8 zookeeper

echo echo 2>/home/data/zookeeper/data/myid

执行

source /etc/profile

7.两台机器上分别执行

zkServer.sh start

8.验证

jps | grep QuorumPeerMain,查看是否有该进程

zkServer.sh status,查看服务状态

六、安装kafka

1.解压kafka安装包到指定目录(/home/es)

tar -zxvf kafka_2.10-0.10.2.1.tgz -C /home/es

2.创建程序软连接

cd /home/es/

ln -s kafka_2.10-0.10.2.1 kafka

3.修改配置文件

备份:

cp config/server.properties config/server.properties.bak

创建kafka日志目录:

mkdir /home/data/kafka

mkdir /home/data/kafka/kafka-logs

修改:config/server.properties,具体对应字段如下:

broker.id=0

delete.topic.enable=true

num.network.threads=10

num.io.threads=32

socket.send.buffer.bytes=102400

socket.receive.buffer.bytes=102400

socket.request.max.bytes=104857600

log.dirs=/home/data/kafka/kafka-logs

num.partitions=1

num.recovery.threads.per.data.dir=1

log.retention.hours=168

log.segment.bytes=1073741824

log.retention.check.interval.ms=300000

zookeeper.connect=hello1:2181,hello2:2181

zookeeper.connection.timeout.ms=6000

6.复制安装包和数据目录到hello2

scp -r /home/es/kafka_2.10-0.10.2.1 es@hello2:/home/es

scp -r /home/data/kafka es@hello2:/home/data

修改hello2中的配置

登录到hello2上,cd /home/es/kafka,修改config/server.properties中broker.id值为2.

7.启动kafka

在两台机器的/home/es/kafka中,创建一个日志存放目录:mkdir start_log,执行以下命令:

nohup bin/kafka-server-start.sh config/server.properties >start_log/kafka_start_log 2>&1 &

8.验证运行情况

jps | grep Kafka,查看进程

通过kafka命令查看topic。

七、安装hadoop

1.解压hadoop安装包到指定目录(/home/es)

tar -zxvf hadoop-2.7.0.tar.gz -C /home/es

2.创建程序软连接

cd /home/es/

ln -s hadoop-2.7.0 hadoop

3.创建数据存放目录

mkdir /home/data/hadoop

mkdir /home/data/hadoop/tmp

mkdir /home/data/hadoop/dfs

mkdir /home/data/hadoop/dfs/data

mkdir /home/data/hadoop/dfs/name

4.修改配置文件

修改/home/es/hadoop/etc/hadoop/core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://hello1:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>file:/home/data/hadoop/tmp</value>

</property>

<property>

<name>io.file.buffer.size</name>

<value>131702</value>

</property>

</configuration>

修改/home/es/hadoop/etc/hadoop/hdfs-site.xml

<configuration>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:/home/data/hadoop/dfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:/home/data/hadoop/dfs/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>hello1:9001</value>

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

</configuration>

修改/home/es/hadoop/etc/hadoop/mapred-site.xml

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>hello1:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>hello1:19888</value>

</property>

</configuration>

修改/home/es/hadoop/etc/hadoop/yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>hello1:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>hello1:8030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>hello1:8031</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>hello1:8033</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>hello1:8088</value>

</property>

<property>

<name>yarn.nodemanager.resource.memory-mb</name>

<value>768</value>

</property>

</configuration>

配置/home/es/hadoop/etc/hadoop目录下hadoop-env.sh、yarn-env.sh的JAVA_HOME(不设置的话,启动不了)

export JAVA_HOME=/usr/java/jdk1.8.0_171

配置/home/es/hadoop/etc/hadoop目录下的slaves,删除默认的localhost,增加2个从节点,

hello1

hello2

5、将配置好的Hadoop复制到各个节点对应位置上,通过scp传送

scp  -r /home/es/hadoop-2.7.0 hello2:/home/es/

scp  -r /home/data/hadoop hello2:/home/data/

登录到hello2上,进入/home/es目录

执行: ln -s hadoop-2.7.0 hadoop

6、格式化nameNode及启动hadoop

在主服务器启动hadoop,从节点会自动启动,进入/home/es/hadoop目录

初始化,输入命令,bin/hdfs namenode -format

全部启动sbin/start-all.sh,也可以分开sbin/start-dfs.sh、sbin/start-yarn.sh

输入命令,jps,可以看到相关信息

7、验证hadoop运行情况

浏览器打开http://hello1:8088/

浏览器打开http://hello1:50070/

8、添加hadoop环境变量到/etc/profile

export HADOOP_HOME=/home/es/hadoop export PATH=$PATH:$HADOOP_HOME/sbin

export PATH=$PATH:$HADOOP_HOME/bin

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"

执行: source /etc/profile

八、安装Hbase

1.解压hbase安装包到指定目录(/home/es)

tar -zxvf hbase-1.2.6-bin.tar.gz -C /home/es

2.创建程序软连接

cd /home/es/

ln -s hbase-1.2.6 hbase

3.添加hbase环境变量到/etc/profile

export  HBASE_HOME=/home/es/hbase

export  PATH=$HBASE_HOME/bin:$PATH

执行:source /etc/profile

4.修改HBASE配置文件

vi /home/es/hbase/conf/hbase-env.sh

增加: export JAVA_HOME=/usr/java/jdk1.8.0_171

修改: export HBASE_MANAGES_ZK=false

vi /home/es/hbase/conf/hbase-site.xml

修改类容:

<configuration>

<property>

<name>hbase.rootdir</name><!-- hbase存放数据目录 -->

<value>hdfs://hello1:9000/hbase/hbase_db</value>

<!-- 端口要和Hadoop的fs.defaultFS端口一致-->

</property>

<property>

<name>hbase.cluster.distributed</name><!-- 是否分布式部署 -->

<value>true</value>

</property>

<property>

<name>hbase.zookeeper.quorum</name><!-- list of  zookooper -->

<value>hello1,hello2</value>

</property>

 <property><!--zookooper配置、日志等的存储位置 -->

<name>hbase.zookeeper.property.dataDir</name>

<value>/home/es/hbase/zookeeper</value>

 </property>

</configuration>

配置regionservers,vi /home/es/hbase/conf/regionservers

去掉默认的localhost,加入hello1、hello2

5、将配置好的hbase复制到各个节点对应位置上,通过scp传送

scp  -r /home/es/hbase-1.2.6 hello2:/home/es/

scp /etc/profile hello2:/etc/

登录到hello2上,进入/home/es目录

执行: ln -s hbase-1.2.6 hbase

source /etc/profile

6、hbase的启动

hello1中执行: start-hbase.sh

7、验证hbase运行情况

输入jps命令查看进程是否启动成功,若 hello1上出现HMaster、HRegionServer、HQuormPeer,hello2上出现HRegionServer、HQuorumPeer,就是启动成功了。

输入hbase shell 命令 进入hbase命令模式,输入status命令,查看运行状态。

在浏览器中输入http://hello1:16010就可以在界面上看到hbase的配置

注意事项:

正常安装后,创建普通不带压缩表可以正常读写,当使用snappy进行压缩创建表时,该表无法再regionServer中启动!

解决方法:

1.在hbase-site.xml文件中添加一下属性

<property>

                <name>hbase.regionserver.codecs</name>

                <value>snappy</value>

        </property>

2.每台机器中将hadoop_native.zip解压缩到hbase安装目录的lib下,执行 unzip hadoop_native.zip $HBASE_HOME/lib/

3.在$HBASE_HOME/conf/hbase-env.sh 中添加:export HBASE_LIBRARY_PATH=/home/es/hbase/lib/native

4.重启Hbase服务即可

九、Spark安装

1.解压hbase安装包到指定目录(/home/es)

tar -zxvf spark2.1.0hadoop2.6.tgz.gz -C /home/es

2.创建程序软连接

cd /home/es/

ln -s spark2.1.0hadoop2.6 spark

3.修改配置文件

mv /home/es/spark/conf/spark-env.sh.template  /home/es/spark/conf/spark-env.sh

vi /home/es/spark/conf/spark-env.sh

修改对应配置:

export JAVA_HOME=/usr/java/jdk1.8.0_171

export SPARK_MASTER_IP=hello1

export SPARK_MASTER_PORT=7077

export SPARK_LOCAL_IP=hello1

修改slaves文件

mv /home/es/spark/conf/slaves.template  /home/es/spark/conf/slaves

vi /home/es/spark/conf/slaves

将localhost修改成:

hello1

hello2

5、将配置好的hbase复制到各个节点对应位置上,通过scp传送

scp  -r /home/es/spark2.1.0hadoop2.6 hello2:/home/es/

登录到hello2上,进入/home/es目录

执行: ln -s spark2.1.0hadoop2.6 spark

在hello2中修改/home/es/spark/conf/spark-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_171

export SPARK_MASTER_IP=hello1

export SPARK_MASTER_PORT=7077

export SPARK_LOCAL_IP=hello2

6、启动spark

cd /home/es/spark

执行: sbin/start-all.sh

7、检测执行结果

jps | grep Worker,看是否有相应的进程。

十、安装elasticsearch

由于elasticsearch,用root账户无法启动,故该组件用es账户安装

1、切换到es账户: su es

2、解压hbase安装包到指定目录(/home/es)

tar -zxvf elasticsearch-6.3.0.tar.gz -C /home/es/

创建程序软连接

cd /home/es/

ln -s elasticsearch-6.3.0 elasticsearch

3、修改配置文件

vi /home/es/elasticsearch/config/elasticsearch.yml

# 集群的名字 

cluster.name: crrc-health

# 节点名字 

node.name: node-1 

# 数据存储目录(多个路径用逗号分隔) 

path.data: /home/data1/elasticsearch/data

# 日志目录 

path.logs: /home/data1/elasticsearch/logs

#本机的ip地址

network.host: hello1 

#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点

discovery.zen.ping.unicast.hosts: ["hello1", "hello2"]

# 设置节点间交互的tcp端口(集群),(默认9300) 

transport.tcp.port: 9300

# 监听端口(默认) 

http.port: 9200

# 增加参数,使head插件可以访问es 

http.cors.enabled: true

http.cors.allow-origin: "*"

4、创建elasticsearch数据和存储目录

mkdir /home/data1/elasticsearch

mkdir /home/data1/elasticsearch/data

mkdir /home/data1/elasticsearch/logs

5、修改linux系统的默认硬限制参数

切换至root用户: su root

vim /etc/security/limits.conf

添加:

es soft nofile 65536

es hard nofile 65536

退出es登录,重新用es账户登录,使用命令:ulimit -Hn查看硬限制参数。

vi /etc/sysctl.conf

添加:

vm.max_map_count=655360

执行:

sysctl -p

6、将配置好的elasticsearch复制到各个节点对应位置上,通过scp传送

scp  -r /home/es/elasticsearch-6.3.0 hello2:/home/es/

scp  -r /home/data1/elasticsearch hello2:/home/data1/

登录到hello2上,进入/home/es目录

执行: ln -s elasticsearch-6.3.0 elasticsearch-6.3.0

在hello2中修改/home/es/elasticsearch/config/elasticsearch.yml

修改: network.host: hello2

7、启动elasticsearch

使用es账户

执行:

/home/es/elasticsearch/bin/elasticsearch -d

8、验证

控制台中输入:curl http://hello1:9200


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12492774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存