Hadoop学习笔记——HA

HA 即 High Available 高可用。

Hadoop学习笔记——HA

# 其作用是为了减少主从结构的单点故障,而设置备用节点,既然学习了Hadoop生态圈,那么HA配置也是必须要掌握的。

# 因为生产环境中,一定会设置HA,减少故障率。

# 参考了好几处的教程,自己动手实践了下,成功。

# 会有一些配置文件需要修改,如果嫌vim麻烦,可以将文件下载到windows,改好后再传回去。

# 本次软件版本: CentOS 6.5 x64 jdk-8u161-linux-x64.tar.gz zookeeper-3.4.5.tar.gz hadoop-2.7.5.tar.gz

分享之前我还是要推荐下我自己创建的大数据学习交流Qun531629188

无论是大牛还是想转行想学习的大学生

小编我都挺欢迎,今天的已经资讯上传到群文件,不定期分享干货,

包括我自己整理的一份最新的适合2018年学习的大数据教程,欢迎初学和进阶中的小伙伴。

一、集群的规划 四台VM12

Zookeeper集群:

192.168.112.10 master

192.168.112.11 slave1

192.168.112.12 slave2

Hadoop集群:

192.168.112.10 master NameNode1 ResourceManager1 Journalnode

192.168.112.11 slave1 NameNode2 ResourceManager2 Journalnode

192.168.112.12 slave2 DataNode1

192.168.112.13 slave3 DataNode2

二、准备工作

1、安装JDK

2、配置环境变量

3、配置免密码登录

4、配置主机名、网络、关闭防火墙 ...

三、配置Zookeeper(在192.168.112.10 master 安装)

在主节点(master)上配置ZooKeeper

(*)配置/usr/local/src/zookeeper/conf/zoo.cfg文件

dataDir=/usr/local/src/zookeeper/zkdataclientPort=2181server.1=master:2888:3888server.2=slave1:2888:3888server.3=slave2:2888:3888

(*)在/usr/local/src/zookeeper/zkdata目录下创建一个myid的空文件

echo 1 > myid

(*)将配置好的zookeeper拷贝到其他节点,同时修改各自的myid文件

scp -r /usr/local/src/zookeeper slave1:/usr/local/srcscp -r /usr/local/src/zookeeper slave2:/usr/local/src

四、安装Hadoop集群(在 master 上安装)

1、修改hadoo-env.sh

export JAVA_HOME=/usr/local/src/jdk1.8.0_161

2、修改core-site.xml

Hadoop学习笔记——HA

<configuration><!-- 指定hdfs的nameservice为 names1 --><property><name>fs.defaultFS</name><value>hdfs://names1</value></property><!-- 指定hadoop临时目录 --><property><name>hadoop.tmp.dir</name><value>/usr/local/src/hadoop-2.7.5/tmp</value></property><!-- 指定zookeeper地址 --><property><name>ha.zookeeper.quorum</name><value>master:2181,slave1:2181,slave2:2181</value></property></configuration>

Hadoop学习笔记——HA

3、修改hdfs-site.xml(配置这个nameservice中有几个namenode)

Hadoop学习笔记——HA

<configuration> <!-- 指定hdfs的nameservice为 names1 ,需要和core-site.xml中的保持一致 --><property><name>dfs.nameservices</name><value>names1</value></property><!-- names1下面有两个NameNode,分别是nn1,nn2 --><property><name>dfs.ha.namenodes.names1</name><value>nn1,nn2</value></property><!-- nn1的RPC通信地址 --><property><name>dfs.namenode.rpc-address.names1.nn1</name><value>master:9000</value></property><!-- nn1的http通信地址 --><property><name>dfs.namenode.http-address.names1.nn1</name><value>master:50070</value></property><!-- nn2的RPC通信地址 --><property><name>dfs.namenode.rpc-address.names1.nn2</name><value>slave1:9000</value></property><!-- nn2的http通信地址 --><property><name>dfs.namenode.http-address.names1.nn2</name><value>slave1:50070</value></property><!-- 指定NameNode的日志在JournalNode上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://master:8485;slave1:8485;/names1</value></property><!-- 指定JournalNode在本地磁盘存放数据的位置 --><property><name>dfs.journalnode.edits.dir</name><value>/usr/local/src/hadoop-2.7.5/journal</value></property><!-- 开启NameNode失败自动切换 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- 配置失败自动切换实现方式 --><property><name>dfs.client.failover.proxy.provider.names1</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行--><property><name>dfs.ha.fencing.methods</name><value>sshfenceshell(/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></configuration>

Hadoop学习笔记——HA

cd /usr/local/src/hadoop-2.7.5/mkdir journalchmod 777 journal

4、修改mapred-site.xml

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

5、修改yarn-site.xml

Hadoop学习笔记——HA

<configuration><!-- 开启RM高可靠 --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 指定RM的cluster,不能与nameservices相同 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>master</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>slave1</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></configuration>

Hadoop学习笔记——HA

6、修改slaves

bigdata14bigdata15

7、将配置好的hadoop拷贝到其他节点

scp -r /usr/local/src/hadoop-2.7.5/ root@slave1:/usr/local/src/ scp -r /usr/local/src/hadoop-2.7.5/ root@slave2:/usr/local/src/ scp -r /usr/local/src/hadoop-2.7.5/ root@slave3:/usr/local/src/

五、启动Zookeeper集群

每台上面 zkServer.sh start

六、在master和slave1上启动journalnode

hadoop-daemon.sh start journalnode

七、格式化HDFS(在 master 上执行)

1. hdfs namenode -format

2. 将/usr/local/src/hadoop-2.7.5/tmp拷贝到slave1的/usr/local/src/hadoop-2.7.5/tmp下

3. 格式化zookeeper

hdfs zkfc -formatZK# 日志:18/04/11 22:34:33 INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/names1 in ZK.

八、在master上启动Hadoop集群

start-all.sh

# 日志:

Starting namenodes on [master slave1]

slave1: starting namenode, logging to /usr/local/src/hadoop-2.7.5/logs/hadoop-root-namenode-slave1.out

master: starting namenode, logging to /usr/local/src/hadoop-2.7.5/logs/hadoop-root-namenode-master.out

slave3: starting datanode, logging to /usr/local/src/hadoop-2.7.5/logs/hadoop-root-datanode-slave3.out

slave2: starting datanode, logging to /usr/local/src/hadoop-2.7.5/logs/hadoop-root-datanode-slave2.out

slave1上的ResourceManager需要单独启动

yarn-daemon.sh start resourcemanager

九、验证与检查

jps查看每台的进程:(这里没显示Jps进程)

Hadoop学习笔记——HA

master: 3745 QuorumPeerMain 3812 JournalNode 4484 ResourceManager 4070 NameNode 4377 DFSZKFailoverControllerslave1: 3809 ResourceManager 3602 NameNode 3522 JournalNode 3715 DFSZKFailoverController 3455 QuorumPeerMainslave2: 19316 NodeManager 19207 DataNode 19118 QuorumPeerMainslave3: 3530 DataNode 3630 NodeManager

Hadoop学习笔记——HA

分别访问:http://master:50070 和 http://slave1:50070 可以看到一个是active, 另一个是standby 而Namespace均显示为names1

分别访问:http://master:8088 和 http://slave1:8088 其中slave1将自动跳转到master,注意看浏览器URL的变化。Nodes中可以看到DataNode

模拟宕机:master 上执行 kill -9 4070 后,立刻刷新http://slave1:50070 会发现变在了active

然后再重新启动宕掉的master进程: sbin/hadoop-daemon.sh start namenode 启动成功后,master会变为standby状态。

十、停止服务

好了,我要关掉VM了,所以要先停掉这些服务。

master上 stop-all.sh

slave1上 stop-all.sh 因为刚才有个RM是单独启动的,所以也需要单独来停止。

在每台zk上zkServer.sh stop

转载于:https://my.oschina.net/u/3864946/blog/1816275

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值