集群搭建与启动

本文详细介绍了如何在Linux环境中克隆虚拟机,设置免密登录,以及启动Hadoop集群。首先,通过VMware克隆虚拟机并更改主机名和IP地址以避免冲突。接着,使用ssh-keygen和ssh-copy-id命令实现主机间的免密登录。最后,启动Hadoop的HDFS和YARN服务,并通过web界面查看集群状态。整个过程对于构建和管理Linux集群具有实际指导意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.克隆虚拟机

2.设置免密登录

3.启动集群

4. web端集群查看


1.克隆虚拟机

       关闭master主机,在VM软件左侧系统资源中单击master,选择“管理”列表下的克隆选项,如图1-1所示。在弹出克隆虚拟机向导界面上,点击下一步,在选中"虚拟机中当前状态"下点击下一页,选择克隆类型。完整克隆的虚拟机文件相对独立并且安全,采用此处完整克隆方式。对主机命名为slave1,并确定存放地址(例:D:\CentOS\slave1,与master主机放在同一个文件下,方便管理),进度条完成说明克隆成功。

 图1-1  虚拟机克隆选项向导

        开启克隆的slave1主机,登录后,会发现主机名、ip地址与master主机一致,为了避免IP冲突,需要更改slave1主机名和静态IP,可参考之前设置master主机名和静态IP地址步骤。之前映射master主机名和IP地址时,已确定slave1主机的ip地址为192.168.38.129,因此此次设置应保持一致。

[zhao@master ~]$ su - root
Password: 
Last login: Wed Sep 29 19:57:28 CST 2021 from 192.168.38.1 on pts/2
[root@master ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:96:8a:db brd ff:ff:ff:ff:ff:ff
    inet 192.168.38.128/24 brd 192.168.38.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::268d:bf52:8b8f:b5be/64 scope link 
       valid_lft forever preferred_lft forever
    inet6 fe80::d584:59a1:6240:d215/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 52:54:00:ca:34:4d brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether 52:54:00:ca:34:4d brd ff:ff:ff:ff:ff:ff
[root@master ~]# hostnamectl set-hostname slave1
[root@master ~]# bash
[root@slave1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
[root@slave1 ~]# service network restart
Restarting network (via systemctl):                        [  OK  ]
[root@slave1 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:27:31:d8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.38.129/24 brd 192.168.38.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::d584:59a1:6240:d215/64 scope link 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 52:54:00:ca:34:4d brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether 52:54:00:ca:34:4d brd ff:ff:ff:ff:ff:ff
[root@slave1 ~]#

       若以上步骤是利用远程连接软件操作,网络服务重新启动后,连接会中断,是因为slave1主机IP已经改为192.168.38.129,而之前连接是通过192.168.38.128IP连接的。

         重复以上步骤,可克隆slave2主机,该主机的静态IP为192.168.38.130。

2.设置免密登录

       下面以master主机为例,让主机master免密进入master、slave1和slave2主机。确保三台主机都开启,并利用远程连接软件连接master主机。

        输入ssh-keygen -t rsa命令,并按四次回车,/root目录下生成密钥文件。执行命令ssh-copy-id slave1,将生成的公钥复制到slave1,实现master主机到slave1主机的单向免密登录。

[root@master ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:OAaMu3EAxiiEnbuepVUHdde1tW5QV9W6RtL9B/oI+qI root@master
The key's randomart image is:
+---[RSA 2048]----+
|*+ .   .. . .. oX|
|=ooo  .  . .  o *|
|. o.o  .     o = |
|  .o ....   . B .|
|  o...+.S    + =.|
|  .+o. .  . . + o|
| ..=     . . +  .|
|  +     o   . .  |
|      E. o.      |
+----[SHA256]-----+
[root@master ~]# ssh-copy-id slave1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'slave1 (192.168.38.129)' can't be established.
ECDSA key fingerprint is SHA256:CYMn0hmNUEip41Lu/4wLlpu0HI/CTfEWInMellcOKk4.
ECDSA key fingerprint is MD5:6c:fe:5c:9b:0e:bb:9f:85:dd:0f:3c:27:0a:e2:05:8b.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@slave1's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'slave1'"
and check to make sure that only the key(s) you wanted were added.

[root@master ~]# ssh slave1
Last login: Thu Sep 30 19:44:40 2021 from 192.168.38.1
[root@slave1 ~]#

        实现master主机到slave2以及master主机的单向免密登录,执行命令ssh-copy-id slave2和ssh-copy-id master即可。注意以上命令都需要在mstart主机上。

[root@slave1 ~]# ssh master
[root@master ~]# ssh-copy-id slave2
[root@master ~]# ssh-copy-id master

       主机slave1和slave2主机实现免密登录,重复上述步骤即可。所以,要实现3台主机自由登录,需要执行ssh-copy-id 这条命令9次。

3.启动集群

        如果集群是第一次启动,需要格式化NameNode。

[root@master ~]# cd /export/servers/hadoop-2.6.4/
[root@master hadoop-2.6.4]# bin/hdfs namenode -format

        输入对应命令后,若出现图3-1所示标志,说明NameNode格式化成功。后续若出现节点集群不能正常启动时,需要重新格式化NameNode时,一定要先停止上次启动的所有Namenode和datanode进程,然后再删除tmp和log数据。

 图3-1 格式化NameNode成功界面

        整体启动hdfs和yarn。NameNode和ResourceManger不在同一台主机上,应在拥有NameNode节点上的master主机上启动hdfs,在拥有ResouceManager节点的slave2主机上启动yarn。

[root@master hadoop-2.6.4]# start-dfs.sh
[root@slave2 ~]# start-yarn.sh

         输入jps命令,查看主机节点启动情况。

[root@master ~]# jps
2806 Jps
2490 NameNode
[root@slave1 ~]# jps
3973 DataNode
4071 SecondaryNameNode
4264 NodeManager
4505 Jps
[root@slave2 ~]# jps
4466 ResourceManager
4167 NodeManager
4042 DataNode
4767 Jps

        若需关闭集群,在各主机上输入相应关闭的命令。启动集群是先hdfs后yarn,关闭集群是先yarn后hdfs。

4. web端集群查看

在浏览器输入http://192.168.38.128:50070,查看hdfs信息,如图4-1所示。

 图4-1 hdfs的web端界面

在浏览器输入http://192.168.38.130:8088,查看yarn信息,如图4-2所示。

  图4-2 yarn的web端界面

在浏览器输入http://192.168.38.129:50090,查看SecondaryNameNode信息,如图4-3所示。

 

   图4-3 SecondaryNameNode的web端界面

 

 

 

<think>嗯,用户想了解如何搭建启动Elasticsearch集群。我需要先理清楚步骤,确保覆盖所有关键点。首先,我应该从准备工作开始,比如环境准备和节点规划。用户可能对Elasticsearch的基本概念不太熟悉,所以得解释一下集群、节点、分片这些术语。 接下来,安装Elasticsearch。可能需要说明不同操作系统下的安装方法,比如用apt-get或者手动下载。配置环节很重要,每个节点的设置需要详细说明,比如节点名称、网络地址、集群名称、发现和选举设置。用户可能会遇到配置错误,所以要提醒他们注意参数的正确性,比如discovery.seed_hosts的正确格式。 然后,启动集群的步骤。需要分节点启动,强调检查日志的重要性,以及如何验证集群状态。这里可能需要介绍curl命令和_cat API的使用方法。如果用户是新手,可能不知道如何查看节点状态,所以给出具体的命令示例会很有帮助。 安全方面也不能忽视,尤其是生产环境。需要提到设置密码、HTTPS和防火墙规则。可能用户会忽略安全配置,导致集群暴露在风险中,所以得提醒他们这些步骤的重要性。 最后,维护和优化的部分。监控工具如Elasticsearch Head或Cerebro的使用,分片分配的策略,备份恢复的方法,这些都能帮助用户更好地管理集群。可能用户在实际操作中会遇到性能问题,所以优化建议是必要的。 还要考虑用户的实际场景,他们可能是在测试环境还是生产环境搭建集群。如果是测试环境,可能只需要单节点多个实例,而生产环境需要多节点和高可用性配置。需要区分这些情况,给出不同的建议。 用户的问题中没有提到版本问题,但不同版本的Elasticsearch配置可能有差异,特别是7.0之后的版本默认启用bootstrap.memory_lock,可能需要特别说明。此外,系统配置如vm.max_map_count的设置,在Linux系统中容易出错,需要强调修改方法。 总结下来,回答需要结构清晰,分步骤讲解,同时包含必要的注意事项和常见问题处理。确保用户按照步骤操作时不会遗漏关键配置,遇到问题能够找到解决方法。语言要简洁明了,避免使用过于专业的术语,或者在使用时进行解释,让新手也能理解。</think>好的!以下是Elasticsearch(ES)集群搭建启动的逐步说明: --- ### 一、基础概念 1. **集群(Cluster)**:多个ES节点组成的分布式系统 2. **节点(Node)**:单个ES实例,分为主节点(Master)、数据节点(Data)、协调节点(Coordinating)等角色 3. **分片(Shard)**:索引数据的存储单元,分为主分片(Primary)和副本分片(Replica) --- ### 二、搭建步骤 #### 1. 环境准备 - **操作系统**:Linux(推荐CentOS/Ubuntu) - **Java**:JDK 11+(ES 7.0+要求) - **硬件要求**: - 内存:至少4GB(生产环境建议16GB+) - 磁盘:SSD最佳 - 文件描述符:`ulimit -n 65535` #### 2. 节点规划 ```bash # 示例集群(3节点): 节点1:192.168.1.10 (主节点 + 数据节点) 节点2:192.168.1.11 (数据节点) 节点3:192.168.1.12 (协调节点) ``` #### 3. 安装ES ```bash # 以Ubuntu为例 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.3-linux-x86_64.tar.gz tar -zxvf elasticsearch-8.5.3-linux-x86_64.tar.gz mv elasticsearch-8.5.3 /usr/local/elasticsearch ``` #### 4. 配置节点 修改`config/elasticsearch.yml`: ```yaml # 节点1配置 cluster.name: my-es-cluster node.name: node-1 node.roles: [master, data] # 主节点+数据节点 network.host: 192.168.1.10 discovery.seed_hosts: ["192.168.1.10", "192.168.1.11", "192.168.1.12"] cluster.initial_master_nodes: ["node-1"] ``` ```yaml # 节点2配置 node.name: node-2 node.roles: [data] # 纯数据节点 network.host: 192.168.1.11 ``` ```yaml # 节点3配置 node.name: node-3 node.roles: [] # 默认协调节点 network.host: 192.168.1.12 ``` #### 5. 系统配置 ```bash # 修改内核参数(所有节点) sudo sysctl -w vm.max_map_count=262144 echo "vm.max_map_count=262144" >> /etc/sysctl.conf ``` --- ### 三、启动集群 1. **逐个启动节点**: ```bash cd /usr/local/elasticsearch ./bin/elasticsearch -d # -d表示后台运行 ``` 2. **验证启动状态**: ```bash curl -XGET 'http://192.168.1.10:9200/_cat/nodes?v' ``` 3. **预期输出**: ``` ip heap.percent ram.percent cpu load node.role master name 192.168.1.10 35 95 3 0.45 dim * node-1 192.168.1.11 28 93 2 0.32 d - node-2 192.168.1.12 22 89 1 0.12 - - node-3 ``` --- ### 四、安全配置(生产环境必做) 1. **启用安全功能**(在`elasticsearch.yml`中): ```yaml xpack.security.enabled: true xpack.security.transport.ssl.enabled: true ``` 2. **设置密码**: ```bash ./bin/elasticsearch-setup-passwords auto # 自动生成密码 ``` --- ### 五、常见问题处理 1. **节点无法加入集群**: - 检查`discovery.seed_hosts`配置 - 确认防火墙开放端口(默认9200/9300) 2. **脑裂问题**: - 配置`discovery.zen.minimum_master_nodes: (N/2)+1`(7.x之前版本) - 8.x版本已自动优化选举机制 3. **内存不足**: - 修改`config/jvm.options`: ```bash -Xms4g # 最小内存 -Xmx4g # 最大内存(不超过物理内存50%) ``` --- ### 六、维护建议 1. **监控工具**: - Kibana Monitoring - Cerebro(第三方管理工具) 2. **定期备份**: - 使用快照(Snapshot)到共享存储(NFS/S3) 3. **滚动升级**: - 逐个节点停机更新,确保集群高可用 --- 按照以上步骤操作,即可完成ES集群搭建启动。实际部署时请根据硬件资源和业务需求调整节点角色配置参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值