楼主: z_fisher_m
159 0

[其他] 搭建基于HA的Hadoop全分布式模式集群 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2018-10-8
最后登录
2018-10-8

楼主
z_fisher_m 发表于 2025-11-27 16:53:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

实验目标

构建具备高可用性(HA)的Hadoop全分布式集群,并部署Kafka大数据处理环境与Flume数据采集开发环境,实现项目中的数据生成、采集、消费、存储、分析及可视化展示。

一、集群基础环境准备

搭建包含五个节点的分布式系统架构。需预先下载并安装以下核心组件:JDK、Hadoop、HDFS、Hive、HBase、ZooKeeper、Kafka、MySQL 和 Flume。

为确保各节点间通信畅通,需关闭防火墙并禁止其开机自启:

修改 SELinux 配置文件以禁用安全策略限制:

随后验证当前 SELinux 的运行状态,确认已正确设置为禁用模式:

二、网络初始化配置

实施网络分配方案,包括调整网卡设置、设定主机名以及配置 hosts 映射关系。

使用命令 # vim /etc/hostname 对每个节点的主机名称进行重命名操作。

同时,在各节点的 hostname 文件中配置 IP 地址与域名的对应映射:

完成配置后,通过 ping 命令测试节点间的连通性,检查是否存在丢包现象,确保网络连接稳定有效:

三、SSH 免密登录配置

由于 Hadoop 集群由多个物理节点构成,频繁的密码输入会极大降低运维效率,因此需要配置节点之间的 SSH 免密码访问机制。

以 master1 节点为例:

首先执行命令生成 RSA 密钥对:

进入 .ssh 目录并将本地公钥写入 authorized_keys 文件:

cd /root/.ssh
cat id_rsa.pub >> authorized_keys

接着将其他节点的公钥也合并至 master1 的 authorized_keys 中:

ssh root@master2 cat /root/.ssh/id_rsa.pub >> authorized_keys  
ssh root@slave1 cat /root/.ssh/id_rsa.pub >> authorized_keys
ssh root@slave2 cat /root/.ssh/id_rsa.pub >> authorized_keys
ssh root@slave3 cat /root/.ssh/id_rsa.pub >> authorized_keys

将整合后的 authorized_keys 文件分发至所有集群节点:

最后测试从 master1 到其他节点的 SSH 连接是否无需密码即可成功建立:

ssh root@master2

四、JDK 安装与环境变量配置

检查各节点 JDK 的安装情况,若未安装则进行部署并配置全局环境变量。

以 slave3 节点为例:

进入相应目录查看是否存在 JDK 压缩包:

解压文件后,配置 JAVA_HOME 等相关环境参数:

五、ZooKeeper 集群部署

ZooKeeper 在 HA 架构中用于主节点故障时的领导者选举,根据其投票机制要求,集群节点数量应为奇数个(即 2n+1,n ≥ 1)。本次在 slave1、slave2、slave3 上部署 ZooKeeper 服务。

以 slave2 为例,使用如下命令解压安装包至指定路径:

tar -zxf zookeeper-3.4.13.tar.gz -C /opt/app/

在三个 slave 节点上分别编辑 /etc/profile 文件,添加 ZooKeeper 用户环境变量:

随后配置 ZooKeeper 的核心参数文件,包括 dataDir 等关键选项:

将 slave3 上已完成配置的内容同步复制到 slave1 和 slave2 节点,保持配置一致性:

最后启动三个节点上的 ZooKeeper 服务,形成高可用集群:

六、Hadoop 集群安装与配置

将 Hadoop 安装包解压至目标目录:

在所有集群节点上配置 Hadoop 运行环境:

接下来仅在 master 节点执行以下操作:

依次修改 Hadoop 相关的 XML 配置文件:

打开 hadoop-env.sh 文件,设置正确的 JAVA_HOME 路径:

vim hadoop-env.sh

编辑 slaves 文件(位于 $HADOOP_HOME/etc/hadoop 目录下),删除默认的 localhost 条目,并添加三个从节点的 IP 或主机名:

创建必要的目录结构,并将配置文件复制到对应路径:

在所有节点上执行环境加载命令,使配置生效:

七、启动高可用 Hadoop 集群并处理潜在问题

首先格式化 ZKFC(ZooKeeper Failover Controller)组件:

配置 HDFS 的 HA 集群名称,并查看已有命名空间:

ls /hadoop-ha

在每个 slave 节点上启动 journalnode 服务:

hadoop-daemon.sh start journalnode

对 NameNode 进行格式化操作,并将 master1 上的元数据同步至 master2 的 NameNode。

在 master1 上完成同步后,启动整个 HDFS 及 YARN 集群服务:

最后通过 jps 或相关命令查看各节点上的守护进程运行状态,确认服务正常启动。

在集群架构中,主节点与从节点的角色分配如下:

  • master1 节点:运行 NameNode、ResourceManager 和 DFSZKFailoverController 服务
  • master2 节点:同样部署了 NameNode、ResourceManager 和 DFSZKFailoverController 组件
  • slave1 节点:作为从节点,承载 DataNode、NodeManager、JournalNode 以及 QuorumPeerMain 服务
  • slave2 节点:配置与 slave1 一致,包含 DataNode、NodeManager、JournalNode 和 QuorumPeerMain
  • slave3 节点:同样运行 DataNode、NodeManager、JournalNode 及 QuorumPeerMain 进程

9. HBase 的安装与部署流程

首先对 HBase 安装包进行解压,并完成环境变量的配置。

接着进入配置阶段,主要包括以下几个关键文件的设置:

  • 修改 hbase-env.sh 文件,配置 Java 环境及相关参数
  • 编辑 hbase-site.xml 文件,定义 HBase 的运行模式和存储路径
  • 创建并配置 backup-masters 文件,用于指定备用 Master 节点

随后配置 regionservers 文件,列出所有运行 RegionServer 的主机名。

为了使 HBase 能够访问 HDFS,需将 Hadoop 的核心配置文件(如 core-site.xml 和 hdfs-site.xml)复制到 HBase 的 conf 目录下。

继续完善环境脚本 env.sh 的配置,确保各项参数正确无误。完成上述三个主要配置文件后,将其同步分发至集群其他节点对应目录。

全部配置就绪后,启动 HBase 集群,验证各组件是否正常运行。

10. 在 Hadoop 集群中部署 Hive

执行以下命令解压 Hive 安装包到指定目录:

tar -xzvf apache-hive-2.3.4-bin.tar.gz -C /opt/app/

将位于 /opt/software/ 目录下的 MySQL JDBC 驱动程序拷贝至 $HIVE_HOME/lib 路径下,以支持元数据存储连接。

接下来进行核心配置文件的设定:

  • 配置 hive-site.xml,设置数据库连接信息、仓库路径等
  • 修改 hive-env.sh,声明 Hadoop 和 Hive 的环境路径

配置系统环境变量,确保 hive 命令可在任意路径下调用。

具体复制命令如下:

cp /opt/software/mysql-connector-java-5.1.47-bin.jar $HIVE_HOME/lib

完成配置后,初始化 Hive 的元数据结构,使用 schematool 工具创建数据库表。

最后启动 Hive 客户端,进入交互式查询界面。

11. 安装与配置 Java、Kafka 和 Zookeeper

首先确保 Java 环境已正确安装并配置,然后进行 Kafka 和 Zookeeper 的部署。

进入 Kafka 配置环节:

为 Kafka 创建专用的数据存储目录,用于保存日志片段。

编辑 server.properties 配置文件,设置当前 Broker 的唯一标识符:

broker.id=1

将配置好的 Kafka 目录复制到 slave2 和 slave3 节点,并分别修改其 server.properties 文件中的 broker.id 值。例如,在 slave2 上设为 2,在 slave3 上设为 3。

随后在 slave1、slave2 和 slave3 上依次启动 Kafka 的后台守护进程,确保集群通信正常。

12. Flume 环境的搭建与配置

Flume 的安装步骤如下:

  1. 解压 Flume 安装包至目标目录
  2. 配置全局环境变量,便于命令调用
  3. 修改 conf 目录下的配置文件,根据业务需求定义数据流
  4. 通过远程方式获取 Flume 所采集的数据内容
  5. 将采集到的数据输出并存储至 HDFS 系统中

执行解压命令:

tar -xzf apache-flume-1.9.0-bin.tar.gz -C /opt/app/

在环境变量配置文件中添加以下内容:

export FLUME_HOME=/opt/app/apache-flume-1.9.0-bin
export PATH=$PATH:$FLUME_HOME/bin
    

进入 $FLUME_HOME/conf 目录,将模板文件 flume-env.sh.template 复制并重命名为 flume-env.sh,然后编辑该文件,添加如下配置:

JAVA_HOME=/opt/app/jdk1.8.0_181
JAVA_OPTS="-Xms100m -Xmx200m -Dcom.sun.management.jmxremote"
    

在相同目录下,修改 flume-conf.properties.template 文件,复制一份并更名为 flume-conf.properties,用于自定义 agent 的数据源、通道和接收器。

启动 Flume agent 的命令如下:

flume-ng agent -c ./conf/ -f ./conf/flume-conf.properties -n a1 -Dflume.root.logger=INFO,console

完成环境搭建后,进入数据生产、存储与分析阶段。

基于前期配置的环境,在 IDEA 开发工具中进行编码实现。

创建 producer 包,清理 Maven 缓存,并对整个项目执行打包操作。

生成可执行 jar 包的命令行指令如下:

cd /root/IdeaProjects/ct_producer/target
cp ct_producer-1.0-SNAPSHOT.jar /opt/app/
touch /opt/app/productlog.sh

数据采集、消费与存储流程

基于 Flume 构建的数据处理链路如下图所示:

利用 Flume 实现数据的实时采集,并将采集结果发送至消息中间件 Kafka 中;Kafka 接收后对数据进行缓冲与分发,最终由下游应用将处理完成的数据写入 Hive 数据仓库,供后续分析使用。

将Hadoop的【core-site.xml】、【hdfs-site.xml】以及HBase的【hbase-site.xml】配置文件复制到项目的resources目录中,确保项目能够正确读取集群配置信息。随后,在pom.xml文件中添加所需的坐标依赖,完成项目的构建配置。 在本地开发环境中使用IDEA导入实验步骤中的相关代码,确保代码结构完整且无编译错误。 完成代码开发后,进行以下操作: 1) 对ct_analysis项目执行打包操作,生成对应的jar文件。 2) 将MySQL的驱动包(JDBC驱动)放置于Hadoop安装目录下的lib文件夹中,以保证Hadoop任务执行时可加载数据库连接支持。
cp /opt/software/mysql-connector-java-5.1.47-bin.jar $HADOOP_HOME/share/hadoop/
scp /opt/software/mysql-connector-java-5.1.47-bin.jar master2:$HADOOP_HOME/share/hadoop/
scp /opt/software/mysql-connector-java-5.1.47-bin.jar slave1:$HADOOP_HOME/share/hadoop/
scp /opt/software/mysql-connector-java-5.1.47-bin.jar slave2:$HADOOP_HOME/share/hadoop/
scp /opt/software/mysql-connector-java-5.1.47-bin.jar slave3:$HADOOP_HOME/share/hadoop/
将打包生成的jar文件上传至HDFS指定路径。随后,启动HBase命令行工具,通过执行【hbase shell】进入命令行界面,并将协处理器注册到目标表中,以实现数据写入时的自定义逻辑处理。 采集的数据最终存储于HBase中,需满足既定的业务需求与数据结构设计要求。 分析结果的展示部分采用SSM框架结合Tomcat服务器实现动态网页呈现。 系统提供可视化界面,用户可通过点击查询按钮(btn)实时获取数据并生成对应图表,直观展示分析结果。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Hadoop 分布式 Had Properties controller
相关内容:Hadoop集群部署

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-5 18:24