集群基础服务配置(NTP / HTTP / MariaDB)
本文以搭建 Hadoop 集群为背景,梳理在 master 节点上部署内网时间同步服务、HTTP 服务以及MariaDB 数据库的完整流程。所有操作均基于 CentOS 7,使用
yum管理软件包。每个步骤都附带通俗解释,方便理解为什么这样做。
一、NTP 时间同步服务
1.1 为什么要统一时间?
在分布式集群中,所有机器的时间必须高度一致,否则会导致:
- 日志时间错乱,排查问题困难;
- 定时任务(crontab)执行时间不同步;
- 分布式组件(如 HBase、Kafka)依赖时间戳,可能引发数据冲突或选举失败。
目标:将当前 master 节点作为内网 NTP 服务器,其余 slave 节点都从这里同步时间。
1.2 Master 节点配置(NTP 服务端)
① 安装 NTP 服务
yum-yinstallntp② 手动检查 / 校对时间(可选)
date# 查看当前系统时间date-s"2026-7-20 10:31:00"# 如果时间偏差较大,可先手动校对③ 修改 NTP 配置文件
编辑/etc/ntp.conf:
vi/etc/ntp.conf找到默认的上游 NTP 服务器配置(一般在文件头部),将其注释或删除。例如,注释掉如下四行:
# server 0.centos.pool.ntp.org iburst # server 1.centos.pool.ntp.org iburst # server 2.centos.pool.ntp.org iburst # server 3.centos.pool.ntp.org iburst然后在原来位置添加本地时钟源,让本机作为时间服务器:
server 127.127.1.0 fudge 127.127.1.0 stratum 10理解这两行的含义
127.127.1.0是 NTP 中的特殊地址,代表“本地时钟”(即本机的系统时间)。当无法连接外部 NTP 服务器时,就使用本地时钟作为时间源。fudge 127.127.1.0 stratum 10是设置该本地时钟的**层级(stratum)**为 10。Stratum 数值越小优先级越高(1 是最高权威,如原子钟),10 表示这是一个较低层级的时钟源,仅供内网客户端使用,不会去跟公网服务器竞争。
④ 启动 NTP 服务并设置开机自启
systemctl start ntpd systemctlenablentpd⑤ 检查服务状态
systemctl status ntpd或者用ntpstat查看同步情况(需稍等几分钟服务才会稳定)。
1.3 Slave 节点配置(时间同步客户端)
从节点不需要运行 NTP 服务,只需使用ntpdate一次性同步即可,但为了持久保持时间一致,通常还会配合crontab或ntpd服务。这里先介绍手动同步方式。
① 安装 ntpdate 工具
yum-yinstallntpdate
ntpdate是一个轻量级时间同步工具,它直接向 NTP 服务器请求当前时间并立即校准本机时钟,不会常驻后台运行。
② 手动同步时间
ntpdate hadoop01.org将hadoop01.org替换为你 master 节点的主机名或 IP 地址。
③ 自动同步(可选)
手动同步的缺点是:一旦机器重启或关机再开机,又需要重新执行命令。解决办法:
- 把同步命令写入 crontab定时执行,例如每 10 分钟同步一次;
- 或者在从节点也安装
ntp服务,配置其为客户端,指向 master 的 IP,长期自动同步(更推荐)。
二、Apache HTTP 服务(简要)
Apache(httpd)是一个常用的 Web 服务器,在集群环境中有时用于提供网页界面或作为镜像仓库。
2.1 安装与启动
yum-yinstallhttpd# 安装whichhttpd# 查看可执行文件位置,验证安装成功systemctl start httpd# 启动systemctl status httpd# 查看运行状态2.2 配置文件位置
主配置文件:/etc/httpd/conf/httpd.conf
网站根目录:/var/www/html(默认)
2.3 重要补充:文件权限与 lrzsz
- 查看文件权限时会看到类似
drwxrwxrwx的字符串,其中:d表示目录(-表示普通文件)- 后面每三个字符为一组,依次代表所有者、所属组、其他人的权限:
r(读)w(写)x(执行)
lrzsz工具用于在 Xshell 等终端里方便地上传/下载文件:rz上传,sz 文件名下载。
三、MariaDB 数据库安装与配置
MariaDB 是 MySQL 的一个开源分支,完全兼容 MySQL。这里我们用它来存储 Hive 的元数据。
3.1 安装与初始启动
在hadoop01节点上执行:
# 安装 MariaDB 服务端、客户端以及 Java 连接驱动yum-yinstallmariadb mariadb-server mysql-connector-java# 启动服务systemctl start mariadb# 设置开机自启systemctlenablemariadb# 查看服务状态systemctl status mariadb3.2 数据库安全设置
首次安装后,需要运行安全脚本:
mysql_secure_installation这是一个交互式过程,请严格按照以下指引输入:
- Enter current password for root (enter for none)
→ 直接按回车(初始无密码) - Set root password? [Y/n]
→ 输入Y,然后设置 root 用户的数据库密码(例如Root@123456,务必妥善保管) - Remove anonymous users? [Y/n]
→Y(删除匿名用户,更安全) - Disallow root login remotely? [Y/n]
→n(不禁止 root 远程登录,因为后续可能需要在其他节点远程授权,若选Y则只能本机登录 root) - Remove test database and access to it? [Y/n]
→Y(删除测试库) - Reload privilege tables now? [Y/n]
→Y(立即刷新权限表,使设置生效)
3.3 登录数据库并创建 Hive 元数据库
# 用 root 账户登录数据库mysql-uroot-p# 输入刚才设置的密码进入 MariaDB 命令行后,执行:
-- 创建 hive 数据库(用于存储 Hive 元数据)CREATEDATABASEhive;-- 查看所有数据库,确认创建成功SHOWDATABASES;-- 退出exit;3.4 验证数据库服务是否正常运行
netstat-ano|grep3306如果看到类似下面的一行,说明 MariaDB 正在监听 3306 端口,服务正常:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN off (0.00/0/0)3.5 为 Hive 业务创建专用账户并授权
强烈建议:不要直接使用 root 账户连接 Hive,而是创建一个独立的hive账户,并只授予hive数据库的完整权限。
-- 在 MySQL/MariaDB 命令行中执行(需要先以 root 登录)GRANTALLPRIVILEGESONhive.*TO'hive'@'localhost'IDENTIFIEDBY'123456';语句解释:
hive.*:作用范围为hive这个数据库的所有表。'hive'@'localhost':仅允许本机(127.0.0.1)使用hive账号连接。若需要远程访问,可改为'hive'@'%'(任意主机)或指定 IP。IDENTIFIED BY '123456':设置该账号的登录密码为123456。ALL PRIVILEGES:赋予增、删、改、查、建表、删库等全部操作权限。
执行后返回Query OK, 0 rows affected即表示成功。最后刷新一下权限确保立即生效:
FLUSHPRIVILEGES;四、小结
| 服务 | 核心步骤 | 作用 |
|---|---|---|
| NTP | 主节点配置本地时钟源并启动 ntpd;从节点用 ntpdate 定期同步 | 统一集群所有机器时间 |
| HTTP | 安装 httpd 并启动,了解配置文件与权限 | 提供 Web 服务基础 |
| MariaDB | 安装、安全配置、创建 hive 库并授权 hive 用户 | 作为 Hive 元数据库 |
以上配置完成后,集群的时间、基础数据服务就已就绪。