尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

hadoop高可用(续)

hadoop高可用(续) 目录hadoop高可用启动 YARN 集群扩容新增 server5 节点zookeeper集群部署Hadoop配置故障测试yarn高可用配置故障测试清理集群iphostsrole192.168.73.156server1NameNode DFSZKFailoverControllerResourceManager192.168.73.160server5NameNode DFSZKFailoverControllerResourceManager192.168.73.157server2DataNode JournalNode QuorumPeerMain192.168.73.158server3DataNode JournalNode QuorumPeerMain192.168.73.159server4DataNode JournalNode QuorumPeerMainhadoop高可用HDFSHadoop Distributed File System分布式存储【存】主从架构负责海量大文件存储默认切块128MB每个数据块默认保存3 副本分散在不同机器硬件损坏自动复制高容错、高吞吐适合一次写入、多次读取的离线场景NameNodeNN主节点保存目录、文件名、块位置等元数据DataNodeDN从节点保存真实数据块JournalNodeJNHA 高可用集群使用同步主备 NN 的编辑日志ZKFC配合 Zookeeper实现 NN 故障自动切换接上篇博客先挂载数据目录server2、server3、server4 三台节点同步执行挂载命令保证多节点目录一致性mount 192.168.73.156:home/sxy/ /home/sxy/挂载完成后在主节点 server1 使用一键脚本启动整套 Hadoop 集群包含 HDFS 分布式存储 YARN 资源调度两大组件[sxyserver1 hadoop]$ sbin/start-all.sh从节点验证进程server2 /server3 /server4集群启动完毕后在所有从节点执行jps查看 Java 常驻进程验证组件是否正常拉起启动 YARN 集群HDFS 集群验证所有 DataNode 正常上线后在 server1 执行脚本单独启动 YARN 资源调度框架[sxyserver1 hadoop]$ sbin/start-yarn.sh登录从节点使用 jps 验证 YARN 组件是否成功启动NodeManagerYARN 节点管理器管理本机 CPU、内存资源负责启动、监控运行任务的 Container 容器浏览器访问 YARN 管理界面默认端口8088测试完成后可执行脚本一键关闭整套 HadoopHDFSYARN集群[sxyserver1 hadoop]$ sbin/stop-all.sh如需彻底清空测试环境残留数据清理临时目录仅测试环境使用生产禁止执行[sxyserver1 ~]$ rm -fr /tmp/*扩容新增 server5 节点规划server1 主server5 作为备 NameNode实现双 NN 热备安装 NFS 客户端工具用于挂载共享家目录统一全集群 sxy 用户环境、JDK、Hadoop 程序包[rootserver5 ~]# yum install -y nfs-utils创建集群统一运行用户sxy并设置密码[rootserver5 ~]# useradd sxy[rootserver5 ~]# passwd sxy[rootserver5 ~]# vim /etc/hosts配置主机名解析/etc/hosts全集群所有节点必须保持 hosts 内容一致保证主机名互通[rootserver5 ~]# showmount -e server1将共享目录挂载至本地/home/sxy/实现多节点共用一套 JDK、Hadoop 安装文件免去多节点重复解压配置[rootserver5 ~]# mount 192.168.73.156:home/sxy/ /home/sxy/zookeeper集群部署集群规划ZooKeeper 三节点集群部署在server2、server3、server4用于支撑 HDFS HA 双 NameNode 自动故障切换、主备选举防止集群脑裂。 环境说明依托前面搭建的 NFS 共享/home/sxy解压包只需在 server1 操作一次其余节点共用程序。Zookeeper集群至少三台总节点数为奇数个。[rootserver1~]# mv apache-zookeeper-3.8.6-bin.tar.gz /home/sxy/[sxyserver1~]$ tar zxf apache-zookeeper-3.8.6-bin.tar.gz[sxyserver1 apache-zookeeper-3.8.6-bin]$ cd conf/[sxyserver1 conf]$ cp zoo_sample.cfg zoo.cfg[sxyserver1 conf]$ vim zoo.cfg新增集群节点配置端口说明2888集群内部通信端口3888选举端口所有 ZK 节点创建数据目录与 myid 文件server2、server3、server4 分别执行myidZK 节点唯一编号必须和 zoo.cfg 里server.X的 X 保持一致 server2myid1server3myid2server4myid3[sxyserver2 ~]$ mkdir /tmp/zookeeper[sxyserver2 ~]$ echo 1 /tmp/zookeeper/myid[sxyserver3 ~]$ echo 2 /tmp/zookeeper/myid[sxyserver4 ~]$ echo 3 /tmp/zookeeper/myid各节点启动ZK若报错则添加环境变量vim ~/.bashrcsource ~/.bashrc一台节点修改其余节点配置文件同步修改但是还得再每台节点刷新生效source ~/.bashrc[sxyserver2 apache-zookeeper-3.8.6-bin]$ bin/zkServer.sh startHadoop配置进入下述路径/home/sxy/hadoop/etc/hadoop架构回顾nameservicemastersh1server1192.168.73.156主 Active NNh2server5192.168.73.160备 Standby NNJournalNode、ZooKeeperserver2/server3/server4[sxyserver1 hadoop]$ vim core-site.xmlfs.defaultFS指定使用 HA 逻辑集群名masters客户端不需要感知真实主备 NN 地址ha.zookeeper.quorum指定 ZK 集群地址用于 HA 自动故障切换。[sxyserver1 hadoop]$ vim hdfs-site.xml注意ssh 免密私钥路径需要和环境保持一致如果用户是 sxy 用户这里路径建议改为/home/sxy/.ssh/id_rsa否则隔离失败发生脑裂[sxyserver2 ~]$ jpsQuorumPeerMain ZooKeeper 的服务主进程启动 JournalNodeserver2、server3、server4 三台 DN 节点分别执行JournalNode 作用保存 NameNode 编辑日志作为主备 NN 之间共享数据保证元数据同步一致HA 集群必备组件[sxyserver2 hadoop]$ bin/hdfs --daemon start journalnode[sxyserver2 hadoop]$ jps格式化HDFS集群server1上执行前置检查三台 ZK、三台 JournalNode 全部正常启动运行[sxyserver1 hadoop]$ bin/hdfs namenode -format将格式化后的namenode元数据目录拷贝到备节点server5同步初始元数据[sxyserver1 tmp]$ scp -r /tmp/hadoop-sxy server5:/tmp格式化ZK中HA集群状态记录Active/Standby选举信息[sxyserver1 hadoop]$ bin/hdfs zkfc -formatZK一键启动整套HA HDFS集群NN、DN、ZKFC[sxyserver1 hadoop]$ sbin/start-dfs.sh各节点进程校验查看各个节点的 jpsserver1http://192.168.73.156:9870 角色active对外提供读写server5http://192.168.73.160:9870 角色standby热备实时同步 edits 日志 页面展示standby代表备 NameNode 工作正常。server1 activeserver5 standby若在网址没有存活节点live nodes则可能是三台DN节点的进程闪退了现象页面看不到在线 DN一般是DataNode 进程闪退、clusterID 和 NameNode 不匹配停止datanode[sxyserver4 hadoop]$ bin/hdfs --daemon stop datanode清理旧data目录残留元数据[sxyserver4 hadoop]$ rm -rf /tmp/hadoop-sxy/dfs/data/*重新启动datanode[sxyserver4 hadoop]$ bin/hdfs --daemon start datanode三台全部重启完成后刷新 9870 页面即可看到三台 DataNode 正常 In operation。现象解释多次重复格式化 NameNode 会生成全新 clusterID旧 DataNode 目录内 VERSION 文件 ID 不一致导致启动后自动退出清空 data 目录重启 DN 会自动向 NN 注册生成匹配的 clusterID。故障测试[sxyserver1 hadoop]$ jps杀掉server1对应的 NameNode 进程[sxyserver1 hadoop]$ kill -9 4409此时server1的网址无法访问server5变成 active重新开启server1[sxyserver1 hadoop]$ bin/hdfs --daemon start namenode[sxyserver1 hadoop]$ jps此时再次访问server1变成standby节点yarn高可用配置集群规划RM1server1192.168.73.156RM2server5192.168.73.160依赖 ZK 集群server2/server3/server42181 端口NodeManagerserver2/server3/server4[sxyserver1 hadoop]$ vim mapred-site.xml配置说明指定 MR 程序运行在 YARN 资源调度框架上。[sxyserver1 hadoop]$ vim yarn-site.xml 原理YARN-RM HA 依靠 ZK 完成主备选举运行中的任务状态持久化在 ZKActive RM 宕机后Standby RM 自动升级接管调度任务不会丢失。启动 YARN 集群[sxyserver1 hadoop]$ sbin/start-yarn.shjpsserver5 同样会存在 ResourceManager 进程 server2/3/4 会存在 NodeManager 进程故障测试[sxyserver1 hadoop]$ kill -9 5856此时server1的网页无法访问server5变成active[sxyserver1 hadoop]$ bin/yarn --daemon start resourcemanagerserver1重启变为standby清理集群[sxyserver1 hadoop]$ jps4769 DFSZKFailoverController5025 NameNode6611 Jps6302 ResourceManager[sxyserver1 hadoop]$ kill -9 6302[sxyserver1 hadoop]$ sbin/stop-yarn.sh[sxyserver1 hadoop]$ sbin/stop-dfs.sh三台ZK节点均操作[sxyserver2 ~]$ cd apache-zookeeper-3.8.6-bin/[sxyserver2 apache-zookeeper-3.8.6-bin]$ bin/zkServer.sh stop[rootserver2 ~]# rm -fr /tmp/*[rootserver2 ~]# umount /home/sxy[rootserver1 ~]# systemctl disable --now nfs-server.service[rootserver1 ~]# userdel -r sxy今天的博客到这里就结束啦886~
返回列表