首页主机资讯Hadoop在Linux上如何部署高可用

Hadoop在Linux上如何部署高可用

时间2025-10-31 20:55:04发布访客分类主机资讯浏览1329
导读:1. 前置准备 环境要求:至少4台Linux服务器(如node1-node4),安装JDK 1.8+、Hadoop 2.7+、ZooKeeper 3.4+;所有节点配置静态IP、主机名映射(/etc/hosts)、SSH免密登录(ssh-...

1. 前置准备

  • 环境要求:至少4台Linux服务器(如node1-node4),安装JDK 1.8+、Hadoop 2.7+、ZooKeeper 3.4+;所有节点配置静态IP、主机名映射(/etc/hosts)、SSH免密登录(ssh-keygen -t rsa并分发公钥)、时间同步(ntpdate或chrony)。
  • ZooKeeper集群部署:在3台节点(如node1-node3)上安装ZooKeeper,配置zoo.cfgserver.1=node1:2888:3888server.2=node2:2888:3888server.3=node3:2888:3888),启动ZooKeeper集群(zkServer.sh start)并验证状态(zkServer.sh status)。

2. 配置HDFS高可用(NameNode HA)

  • 核心配置文件修改
    • core-site.xml:设置HDFS的默认文件系统指向NameService(如hdfs://mycluster),指定ZooKeeper集群地址(ha.zookeeper.quorum=node1:2181,node2:2181,node3:2181)。
    • hdfs-site.xml
      • 定义NameService ID(与core-site.xml一致,如mycluster)、NameNode节点列表(dfs.ha.namenodes.mycluster=nn1,nn2)、RPC地址(dfs.namenode.rpc-address.mycluster.nn1=node1:9000dfs.namenode.rpc-address.mycluster.nn2=node2:9000)、HTTP地址(dfs.namenode.http-address.mycluster.nn1=node1:9870dfs.namenode.http-address.mycluster.nn2=node2:9870);
      • 配置共享编辑日志存储(JournalNode集群,如dfs.namenode.shared.edits.dir=qjournal://node1:8485; node2:8485; node3:8485/mycluster);
      • 开启自动故障转移(dfs.ha.automatic-failover.enabled=true);
      • 指定故障转移代理(dfs.client.failover.proxy.provider.mycluster=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider);
      • 配置隔离机制(如SSH强制终止,dfs.ha.fencing.methods=sshfencedfs.ha.fencing.ssh.private-key-files=/root/.ssh/id_rsa)。
  • JournalNode启动:在3台JournalNode节点上执行hdfs --daemon start journalnode,启动后通过jps验证进程是否存在。
  • NameNode格式化与启动
    • 在主NameNode(如node1)上执行hdfs namenode -format,初始化NameNode元数据;
    • 启动主NameNode(hdfs --daemon start namenode);
    • 在备用NameNode(如node2)上执行hdfs namenode -bootstrapStandby,同步主NameNode的元数据;
    • 启动备用NameNode(hdfs --daemon start namenode);
    • 在所有NameNode节点上启动ZKFC(hdfs zkfc -formatZK格式化ZooKeeper中的HA状态,然后hdfs --daemon start zkfc),实现自动故障转移。

3. 配置YARN高可用(ResourceManager HA)

  • 核心配置文件修改(yarn-site.xml)
    • 开启ResourceManager HA(yarn.resourcemanager.ha.enabled=true);
    • 定义集群ID(yarn.resourcemanager.cluster-id=yarn1)、ResourceManager节点列表(yarn.resourcemanager.ha.rm-ids=rm1,rm2)、ZooKeeper地址(yarn.resourcemanager.zk-address=node1:2181,node2:2181,node3:2181);
    • 配置ResourceManager的RPC地址(yarn.resourcemanager.hostname.rm1=node1yarn.resourcemanager.hostname.rm2=node2)。
  • ResourceManager启动:在2台ResourceManager节点上执行start-yarn.sh,启动ResourceManager进程;通过yarn rmadmin -getServiceState rm1验证主备状态。

4. DataNode与NodeManager配置

  • DataNode配置:在所有DataNode节点的hdfs-site.xml中配置数据存储目录(dfs.datanode.data.dir=/export/data/hadoop/datanode),启动DataNode(hdfs --daemon start datanode)。
  • NodeManager配置:在所有NodeManager节点的yarn-site.xml中配置NodeManager地址(yarn.nodemanager.hostname=nodeX),启动NodeManager(yarn --daemon start nodemanager)。

5. 验证高可用性

  • JPS验证:在各节点执行jps,确认进程正常(NameNode节点有NameNode、ZKFC;ResourceManager节点有ResourceManager;JournalNode节点有JournalNode;DataNode节点有DataNode;NodeManager节点有NodeManager)。
  • 浏览器验证:访问NameNode Web UI(如http://node1:9870),查看NameNode状态(应显示“Active”或“Standby”);访问ResourceManager Web UI(如http://node1:8088),查看ResourceManager状态。
  • 故障转移测试
    • 杀死主NameNode进程(kill -9 < NameNode_PID> ),等待10-30秒,备用NameNode应自动切换为Active状态;
    • 杀死主ResourceManager进程,备用ResourceManager应自动接管服务;
    • 验证数据完整性:上传文件至HDFS,故障转移后检查文件是否可正常读取。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Hadoop在Linux上如何部署高可用
本文地址: https://pptw.com/jishu/740322.html
Linux MinIO数据怎么恢复 Ubuntu中如何解决Laravel的依赖问题

游客 回复需填写必要信息