hadoop学习笔记-HA的配置
来源:互联网 发布:氮泵 副作用 知乎 编辑:程序博客网 时间:2024/06/11 06:32
这里我们的系统环境不变,还是使用单节点的系统环境
这个是HA架构原理
这里我们增加到三台服务器,分别为:
yangyi 192.168.6.101wanger 192.168.6.102zhagnsan 192.168.6.103
yangyi : NameNode ZKFC DataNode JournalNode NodeManager Zookeeperwanger: NameNode ZKFC DataNode JournalNode NodeManager Zookeeper ResourceManagerzhangsan: ResourceManager DataNode JournalNode Zookeeper NodeManager
准备工作:
首先是 hostname配置,hosts配置,这里就不示例了
然后是 server iptables stop(关闭防火墙)chkconfig iptables off(开机不自启动)
最后是 设置免密钥登陆
1.在三台机器上生成密钥(ssh-keygen - t rsa)
2.分别在每台机器上将密钥发送给集群中的机器,包括自己(ssh-copy-id [hostname] )
1.安装zookeeper
首先我们要将zookeeper上传到第一台机器并解压到/opt/modules/目录下
这里我们需要进行zookeeper集群配置
复制 zookeeper 安装目录下 conf目录下的 zoo_sample.cfg 为 zoo.cfg
编辑 zoo.cfg
修改 datadir属性为 zookeeper安装目录下的data目录,并配置集群
# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/opt/modules/zookeeper-3.4.5/data# the port at which the clients will connectclientPort=2181## Be sure to read the maintenance section of the # administrator guide before turning on autopurge.## http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance## The number of snapshots to retain in dataDir#autopurge.snapRetainCount=3# Purge task interval in hours# Set to "0" to disable auto purge feature#autopurge.purgeInterval=1server.1=yangyi:2888:3888server.2=wanger:2888:3888server.3=zhangsan:2888:3888
这里可以看到,我配置的三个节点,分别为yangyi,wanger,zhangsan
这是我们还需要在 datadir目录下新建一个 myid文件,并在文件中写入集群对应的编号
yangyi就是1 ,wanger就是2,zhangsan就是3
然后我们将zookeeper目录发送到其他两个节点,不要忘记修改myid文件的编号(scp /opt/modules/zookeeper-3.4.5 [hostname]:/opt/modules/)
此时 zookeeper集群就配置成功了,我们分别在启动三个zookeeper,(/opt/modules/zookeeper-3.4.5/bin/zkServer.sh start)
然后查看 是否启动成功 (/opt/modules/zookeeper-3.4.5/bin/zkServer.sh status)
如果是一个leader两个follower就代表zookeeper集群配置成功
2.配置Hadoop集群
首先我们需要 修改三个env配置文件,写入JAVA_HOME变量,这里就不演示了
然后我们修改 slaves文件加入datanode的列表
yangyiwangerzhangsan
hdfs-site.xml
<configuration> <!-- 关闭安全检查--><property> <name>dfs.permissions.enabled</name> <value>false</value> </property> <!-- 设置namenode集群名称 --><property> <name>dfs.nameservices</name> <value>mycluster</value> </property> <property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value> </property> <!-- nn1的RPC通信地址,nn1所在地址 --> <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>yangyi:8020</value> </property> <!-- nn1的http通信地址,外部访问地址 --> <property> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>yangyi:50070</value> </property> <!-- nn2的RPC通信地址,nn2所在地址 --> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>wanger:8020</value> </property> <!-- nn2的http通信地址,外部访问地址 --> <property> <name>dfs.namenode.http-address.mycluster.nn2</name> <value>wanger:50070</value> </property> <!-- 指定NameNode的元数据在JournalNode日志上的存放位置(一般和zookeeper部署在一起) --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://yangyi:8485;wanger:8485;zhangsan/mycluster</value> </property> <!-- 指定JournalNode在本地磁盘存放数据的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/opt/modules/hadoop-2.5.0/data/journal</value> </property> <!--客户端通过代理访问namenode,访问文件系统,HDFS 客户端与Active 节点通信的Java 类,使用其确定Active 节点是否活跃 --> <property> <name>dfs.client.failover.proxy.provider.mycluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!--这是配置自动切换的方法,有多种使用方法,具体可以看官网,在文末会给地址,这里是远程登录杀死的方法 --> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value>----这个参数的值可以有多种,你也可以换成shell(/bin/true)试试,也是可以的,这个脚本do nothing 返回0 </property> <!-- 这个是使用sshfence隔离机制时才需要配置ssh免登陆 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/yang/.ssh/id_rsa</value> </property> <!-- 配置sshfence隔离机制超时时间,这个属性同上,如果你是用脚本的方法切换,这个应该是可以不配置的 --> <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> </configuration>
然后core-site.xml
<configuration><property> <name>fs.defaultFS</name> <value>hdfs://mycluster</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/modules/hadoop-2.5.0/data</value> </property> <property> <name>hadoop.http.staticuser.user</name> <value>yang</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>yangyi:2181,wanger:2181,zhangsan:2181</value> </property> </configuration>
然后yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>zhangsan</value> </property> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>106800</value> </property> <!--启用resourcemanager ha--> <!--是否开启RM ha,默认是开启的--> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!--声明两台resourcemanager的地址--> <property> <name>yarn.resourcemanager.cluster-id</name> <value>rmcluster</value> </property> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>wanger</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>zhangsan</value> </property> <!--指定zookeeper集群的地址--> <property> <name>yarn.resourcemanager.zk-address</name> <value>yangyi:2181,wanger:2181,zhangsan:2181</value> </property> <!--启用自动恢复,当任务进行一半,rm坏掉,就要启动自动恢复,默认是false--> <property> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property> <!--指定resourcemanager的状态信息存储在zookeeper集群,默认是存放在FileSystem里面。--> <property> <name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> </property> </configuration>
然后是mapred-site.xml
<configuration><property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>yangyi:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>yangyi:19888</value> </property></configuration>
3.运行hadoop-HA
1.将hadoop发送到其他两个节点中(scp -r /opt/modules/hadoop-2.5.0/ [hostname]:/opt/modules/ )
2.分别在三个节点启动JournalNode(/opt/modules/hadoop-2.5.0/sbin/hadoop-daemon.sh start journalnode)
3.格式化yangyi节点 下的namenode(/opt/modules/hadoop-2.5.0/bin/hdfs namenode -format)
4.再yangyi节点下开启namenode(/opt/modules/hadoop-2.5.0/sbin/hadoop-daemon.sh start namenode)
5.去wanger节点下同步namenode的数据(/opt/modules/hadoop-2.5.0/bin/hdfs namenode -bootstrapStandby)
6.自动故障转移的配置其实要在zookeeper上生成一个节点 hadoop-ha,这个是自动生成的(/opt/modules/hadoop-2.5.0/bin/hdfs zkfc -formatZK)
7.去第一个节点执行/opt/modules/hadoop-2.5.0/sbin/start-dfs.sh ,
8.去第二个节点执行/opt/modules/hadoop-2.5.0/sbin/start-yarn.sh,
9.去第三个节点执行/opt/modules/hadoop-2.5.0/sbin/yarn-daemon.sh start resourcemanager
此时我们再去每个节点输入jps查看进程
第一个节点yangyi:
[yang@yangyi hadoop-2.5.0]$ jps3776 DFSZKFailoverController3217 JournalNode3472 DataNode4023 NodeManager3133 QuorumPeerMain4111 Jps3875 NameNode
第二个节点yangyi:
[yang@wanger hadoop-2.5.0]$ jps3973 Jps3589 ResourceManager3210 DataNode3471 NameNode3060 JournalNode3687 NodeManager3366 DFSZKFailoverController2978 QuorumPeerMain
第三个节点yangyi:
[yang@zhangsan hadoop-2.5.0]$ jps2869 QuorumPeerMain2957 JournalNode3280 ResourceManager3039 DataNode3177 NodeManager3327 Jps
查看两个namenode的状态
我们发现yangyi节点的namenode的状态是active,wanger节点的状态是standby,
我们kill掉yangyi节点的namenode,wanger节点的namenode是否会自动切换为
active状态
阅读全文
0 0
- hadoop学习笔记-HA的配置
- Hadoop 配置及hadoop HA 的配置
- Hadoop HA的安装配置
- hadoop-HA Hadoop 2.2.0版本HDFS的HA配置
- hadoop学习笔记 hadoop的配置
- Hadoop 2.2.0 HDFS的HA配置
- HA机制下的Hadoop配置
- 关于Hadoop-HA的配置---从零开始
- hadoop学习笔记四 -- hadoop集群HA架构设计
- Hadoop HA MR1配置
- hadoop-ha配置
- Hadoop HA 配置
- hadoop配置HA原理
- Hadoop HA笔记
- Hadoop HA 机制学习
- Hadoop的HA机制(Zookeeper集群+Hadoop集群)配置记录
- 学习笔记 Hadoop的job提交过程,shuffle过程以及HA机制的实现
- Hadoop HA QJM 与RM的自动容灾 以及hbase与Hadoop HA的 配置ha后hive修改
- POJ 3415 Common Substrings 后缀数组
- EasyNVR流媒体直播开发时VS2010环境中ffmpeg av_register_all崩溃问题处理
- 设计模式 ----- 设计模式总结
- 5.数据库设计
- 安装Hue后的一些功能的问题解决干货总结
- hadoop学习笔记-HA的配置
- javaee 标准标签库(JSTL)学习总结
- SAS中利用身份证号码求年龄的两种方法
- 6.数据查询(条件
- 平水韵
- 数字货币开发智能合约编程概述
- dlib 14 dlib自带demo 基于DNN的人脸检测
- JAVA学习笔记
- JS异步加载方案