阅读量:3
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.defaultFSname> <value>hdfs://hadoop-clustervalue> property> <property> <name>ha.zookeeper.quorumname> <value>zoo1:2181,zoo2:2181,zoo3:2181value> property>hdfs-site.xml:配置NameService、NameNode节点、共享存储(JournalNode)、自动故障转移等参数。<property> <name>dfs.nameservicesname> <value>hadoop-clustervalue> property> <property> <name>dfs.ha.namenodes.hadoop-clustername> <value>nn1,nn2value> property> <property> <name>dfs.namenode.rpc-address.hadoop-cluster.nn1name> <value>namenode1:9000value> property> <property> <name>dfs.namenode.rpc-address.hadoop-cluster.nn2name> <value>namenode2:9000value> property> <property> <name>dfs.namenode.shared.edits.dirname> <value>qjournal://journalnode1:8485;journalnode2:8485;journalnode3:8485/hadoop-clustervalue> property> <property> <name>dfs.ha.automatic-failover.enabledname> <value>truevalue> property> <property> <name>dfs.client.failover.max.attemptsname> <value>5value> 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.enabledname> <value>truevalue> property> <property> <name>yarn.resourcemanager.cluster-idname> <value>yarn-clustervalue> property> <property> <name>yarn.resourcemanager.ha.rm-idsname> <value>rm1,rm2value> property> <property> <name>yarn.resourcemanager.zk-addressname> <value>zoo1:2181,zoo2:2181,zoo3:2181value> property> <property> <name>yarn.resourcemanager.ha.automatic-failover.enabledname> <value>truevalue> property>
2.4 配置DataNode
在所有DataNode节点上,修改hdfs-site.xml文件,配置DataNode数据存储路径:
<property>
<name>dfs.datanode.data.dirname>
<value>/home/hadoop/datanodevalue>
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宕机、磁盘空间不足等)。
以上就是关于“Hadoop在Linux上如何配置高可用性”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm