Hadoop2X HA环境部署

目录

一、前期准备

1.1安装了jdk

1.2安装了zookeeper分布式

1.3配置免密码登录

1.4机器准备

二、安装部署

2.1上传

2.2解压

2.3配置环境变量(每一台都要)

2.4修改hadoo-env.sh

2.5修改core-site.xml

2.6修改hdfs-site.xml

2.7修改mapred-site.xml

2.8修改yarn-site.xml

2.9修改slaves

2.10拷贝到其他节点

三、验证

3.1启动zookeeper集群(每一台都要)

3.2启动

3.3jps查看进程

3.4浏览器验证


一、前期准备

1.1安装了jdk

没有的可以参考:

Linux系统CentOS7安装jdk_一个人的牛牛的博客-CSDN博客

1.2安装了zookeeper分布式

没有的可以参考:

​​​​​​zookeeper单机和集群(全分布)的安装过程_一个人的牛牛的博客-CSDN博客

1.3配置免密码登录

没有的可以参考:

Linux配置免密登录单机和全分布_一个人的牛牛的博客-CSDN博客

1.4机器准备

主节点从节点
hadoop01hadoop02
hadoop02hadoop03

 笔记本性能不够,没有安装多的虚拟机,hadoop02重复使用。

二、安装部署

2.1上传

MobaXterm_Portable的简单使用_一个人的牛牛的博客-CSDN博客_mobaxterm portable和installer区别

2.2解压

进入安装包目录,执行:

tar -zvxf hadoop-2.7.3.tar.gz /training/

2.3配置环境变量(每一台都要)

vi ~/.bash_profile

#hadoop
export HADOOP_HOME=/training/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

 环境变量生效

source ~/.bash_profile

2.4修改hadoo-env.sh

进入hadoop目录的etc/hadoop目录,如:/training/hadoop-2.7.3/etc/hadoop,执行:

vi hadoo-env.sh

添加内容:

export JAVA_HOME=/training/jdk1.8.0_171

2.5修改core-site.xml

进入hadoop目录的etc/hadoop目录,如:/training/hadoop-2.7.3/etc/hadoop,执行:

vi core-site.xml

添加内容:

<configuration>

<property>
     <name>fs.defaultFS</name>
     <value>hdfs://HAhadoop01</value>
 </property>
 <property>
     <name>hadoop.tmp.dir</name>
     <value>/training/hadoop-2.7.3/tmp</value>
 </property>
<property>
     <name>ha.zookeeper.quorum</name>
     <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>

</configuration>

2.6修改hdfs-site.xml

进入hadoop目录的etc/hadoop目录,如:/training/hadoop-2.7.3/etc/hadoop,执行:

vi hdfs-site.xml

添加内容:

<configuration>
    <!--指定hdfs的nameservice为HAhadoop01,需要和core-site.xml中的保持一致 -->
    <property>
        <name>dfs.nameservices</name>
        <value>HAhadoop01</value>
    </property>

    <!-- HAhadoop01下面有两个NameNode,分别是HAhadoop02,HAhadoop03 -->
    <property>
        <name>dfs.ha.namenodes.HAhadoop01</name>
        <value>HAhadoop02,HAhadoop03</value>
    </property>

    <!-- HAhadoop02的RPC通信地址 -->
    <property>
        <name>dfs.namenode.rpc-address.HAhadoop01.HAhadoop02</name>
        <value>hadoop01:9000</value>
    </property>
    <!-- HAhadoop02的http通信地址 -->
    <property>
        <name>dfs.namenode.http-address.HAhadoop01.HAhadoop02</name>
        <value>hadoop01:50070</value>
    </property>

    <!-- HAhadoop03的RPC通信地址 -->
    <property>
        <name>dfs.namenode.rpc-address.HAhadoop01.HAhadoop03</name>
        <value>hadoop02:9000</value>
    </property>
    <!-- nn2的http通信地址 -->
    <property>
        <name>dfs.namenode.http-address.HAhadoop01.HAhadoop03</name>
        <value>hadoop02:50070</value>
    </property>

    <!-- 指定NameNode的日志在JournalNode上的存放位置 -->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://hadoop01:8485;hadoop02:8485;/HAhadoop01</value>
    </property>
    <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/training/hadoop-2.7.3/journal</value>
    </property>

    <!-- 开启NameNode失败自动切换 -->
    <property>
        <name>dfs.ha.automatic-failover.enabled.HAhadoop01</name>
        <value>true</value>
    </property>

    <!-- 配置失败自动切换实现方式 -->
    <property>
        <name>dfs.client.failover.proxy.provider.HAhadoop01</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>


    <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>

    <!-- 配置sshfence隔离机制超时时间 -->
    <property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/training/hadoop-2.7.3/data</value>
    </property>
    <property>
        <name>dfs.datanode.name.dir</name>
        <value>/training/hadoop-2.7.3/name</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>

进入hadoop目录的etc/hadoop目录,如:/training/hadoop-2.7.3/etc/hadoop,创建journal和tmp

mkdir tmp

mkdir data

mkdir name

mkdir journal

2.7修改mapred-site.xml

进入hadoop目录的etc/hadoop目录,如:/training/hadoop-2.7.3/etc/hadoop,执行:

vi mapred-site.xml

添加内容:

<configuration>

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

</configuration>

2.8修改yarn-site.xml

进入hadoop目录的etc/hadoop目录,如:/training/hadoop-2.7.3/etc/hadoop,执行:

vi yarn-site.xml

添加内容:

<configuration>
   <!-- 开启RM高可靠 -->
    <property>
       <name>yarn.resourcemanager.ha.enabled</name>
       <value>true</value>
    </property>

    <!-- 指定RM的cluster id -->
    <property>
       <name>yarn.resourcemanager.cluster-id</name>
       <value>yarn</value>
    </property>

    <!-- 指定RM的名字 -->
    <property>
       <name>yarn.resourcemanager.ha.rm-ids</name>
       <value>rm1,rm2</value>
    </property>

    <!-- 分别指定RM的地址 -->
    <property>
       <name>yarn.resourcemanager.hostname.rm1</name>
       <value>hadoop01</value>
    </property>
    <property>
       <name>yarn.resourcemanager.hostname.rm2</name>
       <value>hadoop02</value>
    </property>

    <!-- 指定zk集群地址 -->
    <property>
       <name>yarn.resourcemanager.zk-address</name>
       <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
    </property>

    <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
    </property>
</configuration>

2.9修改slaves

进入hadoop目录的etc/hadoop目录,如:/training/hadoop-2.7.3/etc/hadoop,执行:

vi slaves

添加内容:

hadoop02
hadoop03

2.10修改:yarn-env.sh

 添加

export JAVA_HOME=/training/jdk1.8.0_171

2.11拷贝到其他节点

scp -r hadoop-2.7.3/ root@hadoop02:/training/
scp -r hadoop-2.7.3/ root@hadoop03:/training/

三、验证

3.1启动zookeeper集群(每一台都要)

进入zookeeper的bin目录下执行:

zkServer.sh start

jps查看

jps、kafka、zookeeper群起脚本和rsync文件分发脚本(超详细)_一个人的牛牛的博客-CSDN博客

3.2启动

#在所有节点启动journalnode(一次,不可多次执行)
hadoop-daemon.sh start journalnode


#格式化HDFS(在hadoop01上执行)(一次,不可多次执行)
hdfs namenode -format

#将hadoop-2.7.3/name拷贝到hadoop02的/root/training/hadoop-2.7.3/name下
scp -r /training/hadoop-2.7.3/tmp/ root@hadoop02:/training/hadoop-2.7.3/

#格式化zookeeper(一次,不可多次执行)
hdfs zkfc -formatZK
会有日志Successfully created /hadoop-ha/HAhadoop01 in ZK.

#在所有节点停止journalnode(一次,不可多次执行)
hadoop-daemon.sh stop journalnode


#hadoop01和hadoop02上启动zkfc
hadoop-daemon.sh start zkfc

#在hadoop01上启动Hadoop集群
start-all.sh

#在hadoop02上启动ResourceManager
yarn-daemon.sh start resourcemanager

3.3jps查看进程

3.4浏览器验证

浏览器输入:hadoop01:50070

没有做ip地址映射的输入ip+50070如:192.168.12.134:50070

8088端口 

参考于:

 若兰幽竹的博客_CSDN博客-Kettle,Spark,Hadoop领域博主

https://blog.csdn.net/it_technologier/category_11482225.html?spm=1001.2014.3001.5482

Hadoop High Availability (HA) 集群部署是指在一个集群中设置冗余,以确保即使在某个节点故障的情况下,数据处理和任务执行也能继续进行,提高系统的可靠性和可用性。下面是Hadoop HA集群部署的基本步骤: 1. **配置Hadoop集群**: 安装Hadoop并配置多个名称节点(NameNode)和任务跟踪器(JobTracker)。在Hadoop 2.x及以上版本,NameNode被替换为两个实例:Active NameNode(处理写入请求)和Standby NameNode(备份数据)。 2. **启用HA**: 在Hadoop配置文件(如core-site.xml和hdfs-site.xml)中启用HA模式。设置`ha.zookeeper.quorum`用于ZooKeeper服务的连接,这是协调NameNode状态的关键组件。 3. **安装ZooKeeper**: ZooKeeper作为元数据存储和命名服务,管理NameNode的状态。每个NameNode会连接到ZooKeeper,以同步集群状态。 4. **配置HA组件**: 创建并配置Hadoop的资源管理器(ResourceManager)和DataNode,它们将与新的High Availability架构协同工作。 5. **配置Fencing**: Fencing机制确保在主节点故障时,不发生冲突的切换。这可能涉及到网络或硬件级别的措施。 6. **启动Standby NameNode**: 启动Standby NameNode并让其监听,等待接替Active NameNode的角色。 7. **监控与自动故障切换**: 使用Hadoop的管理工具如JMX或Web UI监控集群状态,并配置自动故障切换,当主节点失效时,Standby会自动接管。 8. **测试**: 最后,进行充分的负载测试和故障恢复演练,确保HA集群能够在实际环境中正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值