码迷,mamicode.com
首页 > 其他好文 > 详细

(二)Hadoop高可用HA搭建

时间:2020-06-26 23:52:47      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:port   配置文件   red   enabled   png   data   pre   out   provider   

一.集群规划

 

Master

Slave1

Slave2

Slave3

IP

192.168.2.131

192.168.2.132

192.168.2.133

192.168.2.134

namenode

datanode

resourcemanager

nodemanager

zookeeper

journalnode

zkfc

二.安装HA

# tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local/  解压到对应的安装目录
# mv /usr/local/hadoop-2.7.7 /usr/local/Hadoop
# vim ~/.bashrc  添加环境变量
export HADOOP_HOME=/usl/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# source ~/.bashrc  生效环境变量
# cd /usr/local/hadoop/etc/hadoop/  转至配置文件
# vim hadoop-env.sh  配置1添加                                    【官网配置】
export JAVA_HOME= /usr/java/jdk1.8.0_221
# vim slaves  配置2
master
slave1
slave2
slave3
# vim core-site.xml  配置3
<!-- 指定hdfs的nameservice为myha01 -->
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://myha01/</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/data/hadoopdata/</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
        <name>ha.zookeeper.quorum</name>
        <value>master:2181,slave1:2181,slave2:2181</value>
</property>
<!-- hadoop链接zookeeper的超时时长设置 -->
<property>
        <name>ha.zookeeper.session-timeout.ms</name>
        <value>1000</value>
        <description>ms</description>
</property>
# cp mapred-site.xml.template mapred-site.xml && vim mapred-site.xml  配置4
<!-- 指定mr框架为yarn方式 -->
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>
<!-- 指定mapreduce jobhistory地址 -->
<property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
</property>
<!-- 任务历史服务器的web地址 -->
<property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
</property>
# vim hdfs-site.xml  配置5
<!-- 指定副本数 -->
<property>
        <name>dfs.replication</name>
        <value>2</value>
</property>
<!-- 配置namenode和datanode的工作目录-数据存储目录 -->
<property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/data/hadoopdata/dfs/name</value>
</property>
<property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/data/hadoopdata/dfs/data</value>
</property>
<!-- 启用webhdfs -->
<property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
</property>
<!--指定hdfs的nameservice为myha01,需要和core-site.xml中的保持一致 
dfs.ha.namenodes.[nameservice id]为在nameservice中的每>一个NameNode设置唯一标示符。 
配置一个逗号分隔的NameNode ID列表。这将是被DataNode识别为所有的NameNode。 
例如,如果使用"myha01"作为nameservice ID,并且使用"nn1""nn2"作为NameNodes标示符 
-->
<property>
        <name>dfs.nameservices</name>
        <value>myha01</value>
</property>
<!-- myha01下面有两个NameNode,分别是nn1,nn2 -->
<property>
        <name>dfs.ha.namenodes.myha01</name>
        <value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
        <name>dfs.namenode.rpc-address.myha01.nn1</name>
        <value>master:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
        <name>dfs.namenode.http-address.myha01.nn1</name>
        <value>master:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
        <name>dfs.namenode.rpc-address.myha01.nn2</name>
        <value>slave1:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
        <name>dfs.namenode.http-address.myha01.nn2</name>
        <value>slave1:50070</value>
</property>
<!-- 指定NameNode的edits元数据的共享存储位置。也就是JournalNode列表 
     该url的配置格式:qjournal://host1:port1;host2:port2;host3:port3/journalId 
     journalId推荐使用nameservice,默认端口号是:8485 -->
<property>
        <name>dfs.namenode.shared.edits.dir</name>    <value>qjournal://master:8485;slave1:8485;slave2:8485/myha01</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/usr/local/hadoop/data/journaldata</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
        <name>dfs.client.failover.proxy.provider.myha01</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>ha.failover-controller.cli-check.rpc-timeout.ms</name>
        <value>60000</value>
</property>
# vim yarn-site.xml  配置6
<!-- 开启RM高可用 -->
<property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>yrc</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>slave2</value>
</property>
<property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>slave3</value>
</property>
<!-- 指定zk集群地址 -->
<property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>master:2181,slave1:2181,slave2:2181</value>
</property>
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
</property>
<property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>86400</value>
</property>
<!-- 启用自动恢复 -->
<property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
</property>
<!-- 制定resourcemanager的状态信息存储在zookeeper集群上 -->
<property>
        <name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>

三.配置→启动→验证→测试

3.1配置

# scp -r /usr/local/hadoop root@slave1:/usr/local/  分发至slave1~3结点(这里演示一台)
# scp ~/.bashrc root@slave1:/root/  分发环境至slave1~3结点(这里演示一台)
# source ~/.bashrc  生效环境(四台)
# zkServer.sh start  启动zookeeper(master、slave1、slave2)
# zkServer.sh status  查看角色
# hadoop-daemon.sh start journalnode 启动进程journalnode (master\slave1\slave2)
# jps 查看进程
技术图片

# hadoop namenode -format  格式化namenode节点(这里选master)

 

 

 

 

(二)Hadoop高可用HA搭建

标签:port   配置文件   red   enabled   png   data   pre   out   provider   

原文地址:https://www.cnblogs.com/Agent9527/p/13196867.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!