Hadoop-HA

该博客详细介绍了如何关闭防火墙并配置Hadoop高可用性(HA)集群,包括修改hdfs-site.xml和core-site.xml文件,设置JournalNodes,启动相关服务,并进行故障切换测试。步骤涵盖从配置文件修改到集群启动的全过程。

关闭防火墙

[root@moyue01 bin]# vim firewalld.sh
#!/bin/bash
for i in moyue01 moyue02 moyue03
do
        ssh $i "systemctl stop firewalld"
done
[root@moyue01 bin]# firewalld.sh

 修改hdfs-site.xml

[root@moyue01 hadoop]# pwd
/usr/local/hadoop/etc/hadoop
#添加    
    <property>
        <name>dfs.nameservices</name>
        <value>supercluster</value>
    </property>
    <property>
        <name>dfs.ha.namenodes.supercluster</name>
        <value>a1,b1</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.supercluster.a1</name>
        <value>moyue01:8020</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.supercluster.b1</name>
        <value>moyue02:8020</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.supercluster.a1</name>
        <value>moyue01:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.supercluster.b1</name>
        <value>moyue02:50070</value>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://moyue01:8485;moyue02:8485;moyue03:8485/journalData</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.supercluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>
                sshfence
                shell(/bin/true)
        </value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
    </property>
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>

 修改core-site.xml

#修改fs.defaultFS
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://supercluster</value>
    </property>
#添加
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>moyue01:2181,moyue02:2181,moyue03:2181</value>
    </property>

 配置其他节点

[root@moyue01 hadoop]# scp /usr/local/hadoop/etc/hadoop/* moyue02:/usr/local/hadoop/etc/hadoop/
[root@moyue01 hadoop]# scp /usr/local/hadoop/etc/hadoop/* moyue03:/usr/local/hadoop/etc/hadoop/

 启动HA

启动三个节点上的journalnode服务
[root@moyue01 hadoop]# hadoop-daemon.sh start journalnode
[root@moyue02 ~]# hadoop-daemon.sh start journalnode
[root@moyue03 ~]# hadoop-daemon.sh start journalnode
同步日志到journalnode集群上
[root@moyue01 hadoop]# hdfs namenode - initializeSharedEdits
启动以前的节点namenode进程
[root@moyue01 hadoop]# hadoop-daemon.sh start namenode
在新namenode拉取镜像文件
[root@moyue02 hadoop]# hdfs namenode - bootstrapStandby
格式化zkfc
[root@moyue01 hadoop]# zkServer.sh start
[root@moyue02 hadoop]# zkServer.sh start
[root@moyue03 hadoop]# zkServer.sh start
[root@moyue01 hadoop]# hdfs zkfc -formatZK

测试

测试
start-dfs.sh
[root@moyue01 hadoop]# jps
12936 QuorumPeerMain
26360 Jps
24393 NameNode
25195 DFSZKFailoverController
24893 JournalNode
24575 DataNode
[root@moyue02 logs]# jps
22384 JournalNode
22004 NameNode
22183 DataNode
22604 DFSZKFailoverController
11391 QuorumPeerMain
23615 Jps
Overview 'moyue01:8020' (active)
Overview 'moyue02:8020' (standby)
[root@moyue01 hadoop]# jps
12936 QuorumPeerMain
26360 Jps
24393 NameNode
25195 DFSZKFailoverController
24893 JournalNode
24575 DataNode
[root@moyue01 hadoop]# kill -9 24393
Overview 'moyue02:8020' (active)
### 配置Hadoop环境变量并正确设置HADOOP_HOME路径 为了确保Hadoop能够正常工作,必须正确配置系统的环境变量,并指定`HADOOP_HOME`指向正确的安装路径。以下是详细的说明和操作步骤: #### 1. **编辑 `/etc/profile` 文件** 打开全局环境变量文件进行编辑,添加必要的Hadoop相关路径: ```bash sudo nano /etc/profile ``` 在文件末尾追加以下内容: ```bash export HADOOP_HOME=/export/servers/hadoop-HA/hadoop-3.3.0 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` 这里明确了`HADOOP_HOME`的具体路径为`/export/servers/hadoop-HA/hadoop-3.3.0`[^4]。 #### 2. **使更改立即生效** 使用 `source` 命令重新加载 `/etc/profile` 文件以应用新配置: ```bash source /etc/profile ``` #### 3. **验证环境变量是否生效** 可以通过以下命令来检查环境变量是否已被正确加载: ```bash echo $HADOOP_HOME ``` 输出应该显示为 `/export/servers/hadoop-HA/hadoop-3.3.0`。 同样也可以测试Hadoop命令是否可用: ```bash hadoop version ``` 正确配置后该命令将返回Hadoop的版本号及相关信息。 #### 4. **同步至其他节点(适用于分布式集群场景)** 如果是在多节点环境中部署Hadoop,则需要将相同的环境变量配置复制到所有参与计算的节点上。利用SCP工具完成这一过程非常方便快捷: ```bash scp -r /export/servers/hadoop-HA/hadoop-3.3.0 root@nodeX:/export/servers/ ``` 替换其中的`nodeX`为目标主机名或IP地址即可实现跨机拷贝[^4]。 --- ### 注意事项 - 确认所选路径确实存在并且具有可读写的权限。 - 每次修改完profile类文件之后都要记得执行`souce`指令刷新缓存。 - 对于不同操作系统可能存在细微差别,请参照官方文档进一步核实具体参数名称与语法结构。 ```python # Python脚本可用于自动化检测环境变量状态 import os if 'HADOOP_HOME' in os.environ: print(f"HADOOP_HOME is set to {os.environ['HADOOP_HOME']}") else: print("Environment variable HADOOP_HOME not found.") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值