高可用大数据集群搭建--集群规划

服务版本列表

服务名称版本号下载链接
Zookeeperv3.6.4https://archive.apache.org/dist/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz
Hadoopv2.8.5https://archive.apache.org/dist/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz
Hivev2.3.9https://archive.apache.org/dist/hive/stable-2/apache-hive-2.3.9-bin.tar.gz

节点角色规划表

主机名称主机IP角色部署服务列表资源详情操作系统版本
mapper-node1192.168.0.101Master、WorkerZookeeper、Namenode、Datanode、Resourcemanager、NodeManager、HiveServer2、HiveMetastore、JournalNode、ZKFC256G40CCentOS Linux release 7.6.1810 (Core)
mapper-node2192.168.0.102Master、WorkerZookeeper、Namenode、Datanode、Resourcemanager、NodeManager、JournalNode、ZKFC32G8CCentOS Linux release 7.6.1810 (Core)
mapper-node3192.168.0.103Master、WorkerZookeeper、Namenode、Datanode、Resourcemanager、NodeManager、HiveServer2、HiveMetastore、JournalNode、ZKFC32G8CCentOS Linux release 7.6.1810 (Core)

角色介绍

Zookeeper:分布式协调服务,可以由单个或多个节点组成。在Zookeeper集群中,有一个节点作为Leader,其他节点作为Follower。Leader节点负责协调所有客户端请求,并将它们发送到相应的Follower节点进行处理。Zookeeper还支持数据发布/订阅和通知机制,可以通过监视节点上的变化来实现配置管理和同步。

JournalNode:主要用于提供高可用性和容错性支持。JournalNode存储了HDFS中所有的数据修改操作,包括文件创建、修改、删除等操作,以及NameNode的元数据变更操作。JournalNode节点之间通过复制协议来保证数据的可靠性和一致性。通过向所有JournalNode节点广播数据变更请求,将变更操作记录在一个共享的日志文件中。在NameNode宕机或出现其他故障时,可以通过读取日志文件来恢复HDFS的数据。

ZKFC:主要用于实现HDFS的自动故障转移。当HDFS的NameNode节点出现故障时,zkfc会自动将故障节点转移给备用节点,以保证HDFS的高可用性和可靠性。主要作用是监控Active节点的健康状况,并在Active节点出现故障时,自动将Standby节点转变为Active节点,以保证HDFS的高可用性和可靠性。当Active节点出现故障时,zkfc会通过Zookeeper协调服务发现故障,并将Standby节点转变为Active节点。转变过程中,zkfc会执行一系列的操作,包括启动新的NameNode进程、配置HDFS、同步元数据等,以保证新的Active节点能够正常工作。

Namenode:主要用于管理和控制整个文件系统的命名空间和数据块。Namenode维护了HDFS中所有文件和目录的层次结构,以及数据块的位置和副本数量等元数据信息。NameNode也负责处理所有的读写请求,并通过数据块副本机制保证数据的可靠性和高可用性。Namenode作为HDFS的控制节点,负责处理客户端的所有读写请求。当客户端需要读取或写入一个文件时,客户端首先向NameNode发送请求,NameNode返回文件的块列表和位置信息,客户端然后直接与数据块所在的DataNode节点进行通信,进行数据的读取或写入操作。

Datanode:主要用于存储文件数据块,并提供读写数据块的服务。通常有多个DataNode节点,Datanode分布在不同的服务器上,用于存储HDFS中的数据块。当客户端需要读取一个文件时,客户端首先向NameNode发送请求,NameNode返回文件的块列表和位置信息,客户端然后直接与数据块所在的DataNode节点进行通信,进行数据的读取操作。当客户端需要写入一个文件时,它向NameNode发送请求,NameNode返回文件的块列表和位置信息,客户端将数据块写入相应的DataNode节点中。

Resourcemanager:ResourceManager在YARN框架中主要用于管理和分配集群资源,协调任务的运行和监控。作为整个YARN控制节点,负责管理集群中的所有资源和任务。主要任务有管理资源、协调任务、监控任务、管理队列等。

NodeManager:NodeManager主要用于管理和监控运行在NodeManager本地节点上的任务。通常有多个NodeManager节点,它们分布在不同的服务器上,用于执行任务和管理任务运行的环境。主要负责执行任务、管理容器、监控资源、发送心跳和状态报告,作为真正的工作节点。

HiveServer2:Hive中用于提供远程客户端访问Hive服务的组件,基于Thrift协议实现的,可以为不同的客户端提供多种访问接口,包括JDBC、ODBC和Hive的原生CLI等。

HiveMetaStore:Hive中用于存储Hive元数据的组件。MetaStore将Hive表、分区、列等元数据存储在关系型数据库中,包括MySQL、PostgreSQL等,以便Hive可以对数据进行查询、分析和管理。

部署前准备

  1. 配置主机名映射,确保IP能够相互访问
  2. 准备合适大小磁盘200G以上
  3. 关闭系统防火墙以及系统SELinux
  4. 配置节点相互免密
  5. 安装JDK环境

涉及到LVM的操作,可以参考文章LVM操作

#######################  每台主机都需要做  ##################

# 分别在各个主机上配置主机名
hostnamectl --static set-hostname mapper-node1 # 第一个节点
hostnamectl --static set-hostname mapper-node2 # 第二个节点
hostnamectl --static set-hostname mapper-node3 # 第三个节点
# 配置主机映射,每台主机/etc/hosts文件添加以下内容
192.168.0.101 mapper-node1
192.168.0.102 mapper-node2
192.168.0.103 mapper-node3
# -----------------------------------------------------------------
# 磁盘方面 (可以选择使用lvm或物理磁盘分区,这里使用使用lvm)
# 格式化磁盘为xfs格式完成后,要在/etc/fstab文件中写入挂载点
mkdir /data
blkid # 查看磁盘UUID
echo 'UUID="a7fdcbb9-eda4-4174-9512-de4cc3d2fb90" /data xfs defaults 0 0' >> /etc/fstab
mount -a && df -h # 查看是否挂载成功
# -----------------------------------------------------------------
# 关闭防火墙及selinux
systemctl stop firewalld && systemctl disable firewalld
# 关闭selinux,需要重启服务器
echo "SELINUX=disabled" > /etc/selinux/config
# -----------------------------------------------------------------
# 免密操作
ssh-keygen # 使用默认选项,一直回车即可
for hostNum in {1..3};do ssh-copy-id mapper-node$hostNum;done
# -----------------------------------------------------------------
# 安装JDK环境(略过)
# -----------------------------------------------------------------
# 操作完成后下载所有服务的的安装包
mkdir /opt/soft && cd /opt/soft # 个人习惯放在/opt/soft目录下
wget $SERVICES_DOWNLOAD_URL

Zookeeper集群搭建

cd /opt/soft
tar -zxvf apache-zookeeper-3.6.4-bin.tar.gz && mv apache-zookeeper-3.6.4-bin zookeeper
# 配置环境变量
cat > /etc/profile.d/zookeeper.sh  << EOF
export ZOOKEEPER_HOME=/opt/soft/zookeeper
export ZOOCFGDIR=/opt/soft/zookeeper/conf
export ZOO_LOG_DIR=/data/bigdata/logs/zookeeper
export ZOOPIDFILE=/var/run/zookeeper/zookeeper_server.pid
export PATH=$PATH:$ZOOKEEPER_HOME/bin
EOF

解压出安装包内容后,需要对zookeeper的默认配置进行更改

cd /opt/soft/zookeeper/conf
mv zoo_sample.cfg zoo.cfg
# -------- 
dataDir=/data/bigdata/zookeeper # 更改默认数据目录
admin.serverPort=12182 # zookeeper在3.5.0版本后增加该参数,默认8080,防止端口冲突换成其他端口
# 2888端口和3888端口都是用于服务器之间进行通信的端口,分别用于Leader选举期间的服务器间通信和Follower服务器与Leader服务器之间的通信
server.1=mapper-node1:2888:3888
server.2=mapper-node2:2888:3888
server.3=mapper-node3:2888:3888
# ----- 拷贝zookeeper安装目录、环境变量脚本到其他机器
scp /opt/soft/zookeeper root@mapper-node2:/opt/soft
scp /etc/profile.d/zookeeper.sh root@mapper-node2:/etc/profile.d
scp /opt/soft/zookeeper root@mapper-node3:/opt/soft
scp /etc/profile.d/zookeeper.sh root@mapper-node3:/etc/profile.d

配置更改完成后,需要在zookeeper数据目录写入对应主机的myid文件,完成后在每台机器上启动zookeeper

for hostNum in {1..3};do ssh mapper-node$hostNum 'echo '${hostNum}' > /data/bigdata/zookeeper/myid';done
for hostNum in {1..3};do ssh mapper-node$hostNum 'zkServer.sh start';done
for hostNum in {1..3};do echo "mapper-node$hostNum";ssh mapper-node$hostNum 'zkServer.sh status';done

在这里插入图片描述

出现上图所示,即表示zookeeper集群搭建完成,如果在启动时出现问题,可以进入日志目录查看相关报错信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值