hadoop集群搭建完整教程 满满干货

发布时间:2025-12-10 11:47:03 浏览次数:21

1.集群环境准备

1.1 服务器的准备

本案例使用VMware Workstation Pro虚拟机创建虚拟服务器来搭建hadoop集群,所用软件及版本如下:

这里我就不提供了,相信大家都有.

1.2三台虚拟机创建

  • 我直接从我搭建好的虚拟机克隆另外两台
  • 克隆第二台虚拟机,注意克隆node1虚拟机的时候,先将node1启动一下,查看node1是否正常,然后关闭该虚拟机开始克隆,右键点击node1

    下一步

    下一步

    创建完整克隆,下一步

    指定虚拟机名字和存放位置,三台虚拟机的存放路径尽量在一起,不在一起也没关系

    等待克隆完毕

    关闭

    2)克隆第三台虚拟机,通过node1虚拟机克隆,克隆方式是一样的,注意修改虚拟机的名称和存放位置。
  • 1.3 设置三台虚拟机的内存

    三台虚拟机再加上windows本身, 需要同时运行4台机器, 所以在分配的时候, 每台虚拟机的内存为: 总内存 ÷ 4,比如电脑总内存为16G,则每台虚拟机内存为4G即4096。

    下面是以node1为例对内存进行配置:

    1.4配置MAC地址

    node2和node3都是从node1克隆过来的,他们的MAC地址都一样,所以需要让node2和node3重新生成MAC地址,生成方式如下:
    1、配置node2的MAC地址
    1)使用VMware打开node2
    2)右键点击node2,选择设置


    3)生成新的MAC地址

    2、配置node3的MAC地址
    node3的配置方式和node2相同,不再重复

    1.5.配置IP地址

    三台虚拟机的IP地址配置如下:
    node1: 192.168.88.161
    node2 192.168.88.162
    node3: 192.168.88.163

    node1的IP地址是原有的已经配置好了,接下来配置node2和node3:

    1:配置node2主机IP

    1)修改ip配置文件,设置IP地址vim /etc/sysconfig/network-scripts/ifcfg-ens33 2)重启网络服务systemctl restart network # 重启网络服务 3)查看ip地址ifconfig 4)测试网络连接ping www.baidu.com


    2:配置node3主机IP
    node3主机IP的配置方式和node2一样,将其IP地址设置为:192.168.88.163,在这里不再重复。

    1.6使用xshell连接三台虚拟机

    1.7设置主机名和域名映射

    1、配置每台虚拟机主机名:分别编辑每台虚拟机的hostname文件,直接填写主机名,保存退出即可。vim /etc/hostname我这里设置主机名:第一台主机主机名为:node1第二台主机主机名为:node2第三台主机主机名为:node3 2、配置每台虚拟机域名映射分别编辑每台虚拟机的hosts文件,在原有内容的基础上,填下以下内容:注意:不要修改文件原来的内容,三台虚拟机的配置内容都一样。vim /etc/hosts192.168.88.161 node1 node1.xxyl.cn192.168.88.162 node2 node2.xxyl.cn192.168.88.163 node3 node3.xxyl.cn

    1.8.关闭三台虚拟机的防火墙和Selinux

    1、关闭每台虚拟机的防火墙在每台虚拟机上分别执行以下指令:systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动关闭之后,查看防火墙状态:systemctl status firewalld.service 2、关闭每台虚拟机的Selinux1)什么是SELinux ?1)SELinux是Linux的一种安全子系统2)Linux中的权限管理是针对于文件的, 而不是针对进程的, 也就是说, 如果root启动了某个进程, 则这个进程可以操作任何一个文件。3)SELinux在Linux的文件权限之外, 增加了对进程的限制, 进程只能在进程允许的范围内操作资源2)为什么要关闭SELinux如果开启了SELinux, 需要做非常复杂的配置, 才能正常使用系统, 在学习阶段, 在非生产环境, 一般不使用SELinuxSELinux的工作模式:enforcing 强制模式permissive 宽容模式disabled 关闭4)关闭SELinux方式编辑每台虚拟机的Selinux的配置文件:vim /etc/selinux/config

    Selinux的默认工作模式是强制模式,配置如下:

    将Selinux工作模式关闭:

    5)分别重启三台虚拟机reboot

    1.9 三台机器机器免密码登录

    1、为什么要免密登录
    Hadoop 节点众多, 所以一般在主节点启动从节点, 这个时候就需要程序自动在主节点登录到从节点中, 如果不能免密就每次都要输入密码, 非常麻烦。

    2、免密 SSH 登录的原理

  • 需要先在 B节点 配置 A节点 的公钥
  • A节点 请求 B节点 要求登录
  • B节点 使用 A节点 的公钥, 加密一段随机文本
  • A节点 使用私钥解密, 并发回给 B节点
  • B节点 验证文本是否正确

  • 3、实现步骤
    第一步:三台机器生成公钥与私钥
    在三台机器执行以下命令,生成公钥与私钥

    在三台机器执行以下命令,生成公钥与私钥ssh-keygen -t rsa

    执行该命令之后,按下三个回车即可,然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥),默认保存在/root/.ssh目录。

    第二步:拷贝公钥到同一台机器

    三台机器将拷贝公钥到第一台机器三台机器执行命令:ssh-copy-id node1

    在执行该命令之后,需要输入yes和node1的密码:

    第三步:复制第一台机器的认证到其他机器

    将第一台机器的公钥拷贝到其他机器上在第一台机器上指行以下命令scp /root/.ssh/authorized_keys node2:/root/.sshscp /root/.ssh/authorized_keys node3:/root/.ssh执行命令时,需要输入yes和对方的密码

    第四步:测试SSH免密登录

    可以在任何一台主机上通过ssh 主机名命令去远程登录到该主机,输入exit退出登录例如:在node1机器上,免密登录到node2机器上ssh node1exit

    效果如下:

    1.10 三台机器时钟同步

    为什么需要时间同步
    因为很多分布式系统是有状态的, 比如说存储一个数据, A节点 记录的时间是1, B节点 记录的时间是2, 就会出问题。

    时钟同步方式

    1.10.1.方式一:通过网络进行时钟同步
    通过网络连接外网进行时钟同步,必须保证虚拟机连上外网启动定时任务crontab -e随后在输入界面键入以下内容,每隔一分钟就去连接阿里云时间同步服务器,进行时钟同步* * * * * /usr/sbin/ntpdate ntp4.aliyun.com;
    1.10.2 方式二:通过某一台机器进行同步

    在业务环境中,有时候为了安全,大数据集群的节点不允许连接外网,这时,我们可以采用第二种方式来进行时钟同步。

    以192.168.88.161这台服务器的时间为准进行时钟同步

    第一步:在node1虚拟机安装ntp并启动:

    安装ntp服务yum -y install ntp启动ntp服务systemctl start ntpd 设置ntpd的服务开机启动#关闭chrony,Chrony是NTP的另一种实现systemctl disable chrony #设置ntp服务为开机启动systemctl enable ntpd

    第二步:编辑node1的/etc/ntp.conf文件

    编辑node1机器的/etc/ntp.confvim /etc/ntp.conf 在文件中添加如下内容(授权192.168.88.0-192.168.88.255网段上的所有机器可以从这台机器上查询和同步时间)restrict 192.168.88.0 mask 255.255.255.0 nomodify notrap注释一下四行内容:(集群在局域网中,不使用其他互联网上的时间)#server 0.centos.pool.ntp.org#server 1.centos.pool.ntp.org#server 2.centos.pool.ntp.org#server 3.centos.pool.ntp.org去掉以下内容的注释,如果没有这两行注释,那就自己添加上(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)server 127.127.1.0 fudge 127.127.1.0 stratum 10 配置以下内容,保证BIOS与系统时间同步 vim /etc/sysconfig/ntpd 添加一行内容 SYNC_HWLOCK=yes


    第三步:另外两台机器与第一台机器时间同步

    另外两台机器与192.168.88.161进行时钟同步,在node2和node3机器上分别进行以下操作crontab -e添加以下内容:(每隔一分钟与node1进行时钟同步)*/1 * * * * /usr/sbin/ntpdate 192.168.88.161

    到此结束!!! 一个完整的hadoop集群搞定.

    需要做网站?需要网络推广?欢迎咨询客户经理 13272073477