Hadoop在Linux上如何配置高可用性
导读:Hadoop在Linux上配置高可用性(HA)的完整步骤 1. 环境准备 操作系统:推荐使用CentOS 7或Ubuntu 20.04(需提前安装gcc、openssl-devel等依赖)。 Java环境:安装JDK 8(或更高版本),配...
Hadoop在Linux上配置高可用性(HA)的完整步骤
1. 环境准备
- 操作系统:推荐使用CentOS 7或Ubuntu 20.04(需提前安装
gcc
、openssl-devel
等依赖)。 - Java环境:安装JDK 8(或更高版本),配置
JAVA_HOME
环境变量(如export JAVA_HOME=/usr/java/jdk1.8.0_201/
)。 - 网络配置:所有节点(NameNode、ResourceManager、JournalNode、ZooKeeper等)需配置静态IP,确保主机名与IP映射正确(通过
/etc/hosts
文件或DNS)。 - ZooKeeper集群:提前搭建3节点ZooKeeper集群(Hadoop HA依赖其实现故障检测与自动转移),配置
zoo.cfg
文件(如server.1=zoo1:2888:3888; server.2=zoo2:2888:3888; server.3=zoo3:2888:3888
)。
2. 安装与配置Hadoop
2.1 下载与解压
下载Hadoop安装包(如Apache Hadoop或CDH版本),解压至指定目录(如/usr/app/hadoop-3.3.6
),配置环境变量HADOOP_HOME
(如export HADOOP_HOME=/usr/app/hadoop-3.3.6
),并将$HADOOP_HOME/bin
添加至PATH
。
2.2 配置NameNode高可用(HDFS HA)
- 核心配置文件:
core-site.xml
:定义HDFS的默认文件系统地址(指向NameService)和ZooKeeper集群地址。< property> < name> fs.defaultFS< /name> < value> hdfs://hadoop-cluster< /value> < !-- NameService名称 --> < /property> < property> < name> ha.zookeeper.quorum< /name> < value> zoo1:2181,zoo2:2181,zoo3:2181< /value> < !-- ZooKeeper集群地址 --> < /property>
hdfs-site.xml
:配置NameService、NameNode节点、共享存储(JournalNode)、自动故障转移等参数。< property> < name> dfs.nameservices< /name> < value> hadoop-cluster< /value> < !-- NameService名称,需与core-site.xml一致 --> < /property> < property> < name> dfs.ha.namenodes.hadoop-cluster< /name> < value> nn1,nn2< /value> < !-- NameNode节点ID --> < /property> < property> < name> dfs.namenode.rpc-address.hadoop-cluster.nn1< /name> < value> namenode1:9000< /value> < !-- nn1的RPC地址 --> < /property> < property> < name> dfs.namenode.rpc-address.hadoop-cluster.nn2< /name> < value> namenode2:9000< /value> < !-- nn2的RPC地址 --> < /property> < property> < name> dfs.namenode.shared.edits.dir< /name> < value> qjournal://journalnode1:8485; journalnode2:8485; journalnode3:8485/hadoop-cluster< /value> < !-- JournalNode共享存储路径 --> < /property> < property> < name> dfs.ha.automatic-failover.enabled< /name> < value> true< /value> < !-- 启用自动故障转移 --> < /property> < property> < name> dfs.client.failover.max.attempts< /name> < value> 5< /value> < !-- 客户端故障转移重试次数 --> < /property>
- 启动JournalNode:在3个JournalNode节点上执行
hdfs --daemon start journalnode
,启动JournalNode服务(用于同步NameNode元数据)。
2.3 配置ResourceManager高可用(YARN HA)
- 核心配置文件:
yarn-site.xml
:配置ResourceManager集群、ZooKeeper地址等参数。< property> < name> yarn.resourcemanager.ha.enabled< /name> < value> true< /value> < !-- 启用ResourceManager HA --> < /property> < property> < name> yarn.resourcemanager.cluster-id< /name> < value> yarn-cluster< /value> < !-- ResourceManager集群ID --> < /property> < property> < name> yarn.resourcemanager.ha.rm-ids< /name> < value> rm1,rm2< /value> < !-- ResourceManager节点ID --> < /property> < property> < name> yarn.resourcemanager.zk-address< /name> < value> zoo1:2181,zoo2:2181,zoo3:2181< /value> < !-- ZooKeeper集群地址 --> < /property> < property> < name> yarn.resourcemanager.ha.automatic-failover.enabled< /name> < value> true< /value> < !-- 启用自动故障转移 --> < /property>
2.4 配置DataNode
在所有DataNode节点上,修改hdfs-site.xml
文件,配置DataNode数据存储路径:
<
property>
<
name>
dfs.datanode.data.dir<
/name>
<
value>
/home/hadoop/datanode<
/value>
<
!-- DataNode数据目录 -->
<
/property>
2.5 配置环境变量
在hadoop-env.sh
文件中,指定Java路径:
export JAVA_HOME=/usr/java/jdk1.8.0_201/
3. 启动Hadoop高可用集群
- 格式化NameNode:仅在主NameNode(如
namenode1
)上执行一次:hdfs namenode -format
- 启动JournalNode:在3个JournalNode节点上执行:
hdfs --daemon start journalnode
- 启动主NameNode:在主NameNode(如
namenode1
)上执行:hdfs --daemon start namenode
- 启动备用NameNode:在备用NameNode(如
namenode2
)上执行:hdfs namenode -bootstrapStandby # 同步主NameNode元数据 hdfs --daemon start namenode
- 启动ResourceManager:在主ResourceManager(如
resourcemanager1
)上执行:yarn --daemon start resourcemanager
- 启动备用ResourceManager:在备用ResourceManager(如
resourcemanager2
)上执行:yarn --daemon start resourcemanager
- 启动DataNode与NodeManager:在所有DataNode节点上执行:
hdfs --daemon start datanode yarn --daemon start nodemanager
4. 验证高可用性
- 检查进程状态:使用
jps
命令检查各节点进程是否正常(如主NameNode有NameNode
进程,备用NameNode有NameNode
和ZKFC
进程)。 - 模拟故障转移:
- 停止主NameNode(如
namenode1
)的NameNode进程:hdfs --daemon stop namenode
。 - 检查备用NameNode(如
namenode2
)是否自动切换为Active状态(通过jps
命令查看NameNode
进程,或访问http://namenode2:9870
查看NameNode状态)。 - 恢复主NameNode,验证其是否自动切换为Standby状态。
- 停止主NameNode(如
- 验证YARN HA:停止主ResourceManager(如
resourcemanager1
)的ResourceManager进程,检查备用ResourceManager是否自动接管。
5. 监控与告警(可选但推荐)
- 内置监控:使用Hadoop的Web UI(如NameNode的
http://namenode1:9870
、ResourceManager的http://resourcemanager1:8088
)监控集群状态。 - 第三方工具:集成Prometheus+Granafa(监控集群资源、HDFS存储、YARN任务等),或Ganglia(实时监控集群性能),设置告警规则(如NameNode宕机、ResourceManager宕机、磁盘空间不足等)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Hadoop在Linux上如何配置高可用性
本文地址: https://pptw.com/jishu/728407.html