Hadoop之HA高可用
Hadoop之HA高可用
- 1、集群规划
- 2、前提
- 3、免密配置
- 4、修改hadoop配置文件
- 4.1、hdfs高可用
- 1、修改core-site.xml 添加如下配置文件
- 2、修改hdfs-site.xml文件,添加如下内容
- 3、将修改后的文件同步到另外两台机器
- 4、删除之前hadoop的存储文件
- 5、启动JN 存储hdfs元数据
- 6、格式化namenode
- 7、执行同步
- 8、格式化ZK
- 9、启动hdfs集群
- 4.2、yarn高可用
- 1、修改yarn-site.xml文件,并添加如下内容
- 2、mapred-site.xml文件,并添加如下内容
- 3、启动yarn
- 4、在另外一台主节点上启动RM(node1)
- 5、测试高可用
- 1、在浏览器查看
- 2、手动杀死master中的namenode进程
- 3、再次访问wed界面
- 4、重新启动master上的namenode
1、集群规划
ZooKeeper | NameNode | DataNode | ResourceManager | NodeManage | JN | ZKFC | |
---|---|---|---|---|---|---|---|
master | 1 | 1 | 1 | 1 | 1 | ||
node1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
node2 | 1 | 1 | 1 | 1 |
2、前提
1、
Zookeeper
集群安装完毕
2、jdk
安装完成等等
3、免密配置
注意:两台NameNode机器 (master、node1)都需要配置免密登录
4、修改hadoop配置文件
4.1、hdfs高可用
1、修改core-site.xml 添加如下配置文件
<configuration><property><name>fs.defaultFS</name><value>hdfs://cluster</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/soft/hadoop-2.7.6/tmp</value></property><property><name>fs.trash.interval</name><value>1440</value></property><property><name>ha.zookeeper.quorum</name><value>master:2181,node1:2181,node2:2181</value></property>
</configuration>
2、修改hdfs-site.xml文件,添加如下内容
<configuration><!-- 指定hdfs元数据存储的路径 --><property><name>dfs.namenode.name.dir</name><value>/usr/local/soft/hadoop-2.7.6/data/namenode</value></property><!-- 指定hdfs数据存储的路径 --><property><name>dfs.datanode.data.dir</name><value>/usr/local/soft/hadoop-2.7.6/data/datanode</value></property><!-- 数据备份的个数 --><property><name>dfs.replication</name><value>1</value></property><!-- 关闭权限验证 --><property><name>dfs.permissions.enabled</name><value>false</value></property><!-- 开启WebHDFS功能(基于REST的接口服务) --><property><name>dfs.webhdfs.enabled</name><value>true</value></property><!-- //以下为HDFS HA的配置// --><!-- 指定hdfs的nameservices名称为mycluster --><property><name>dfs.nameservices</name><value>cluster</value></property><!-- 指定cluster的两个namenode的名称分别为nn1,nn2 --><property><name>dfs.ha.namenodes.cluster</name><value>nn1,nn2</value></property><!-- 配置nn1,nn2的rpc通信端口 --><property><name>dfs.namenode.rpc-address.cluster.nn1</name><value>master:8020</value></property><property><name>dfs.namenode.rpc-address.cluster.nn2</name><value>node1:8020</value></property><!-- 配置nn1,nn2的http通信端口 --><property><name>dfs.namenode.http-address.cluster.nn1</name><value>master:50070</value></property><property><name>dfs.namenode.http-address.cluster.nn2</name><value>node1:50070</value></property><!-- 指定namenode元数据存储在journalnode中的路径 --><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://master:8485;node1:8485;node2:8485/cluster</value></property><!-- 指定journalnode日志文件存储的路径 --><property><name>dfs.journalnode.edits.dir</name><value>/usr/local/soft/hadoop-2.7.6/data/journal</value></property><!-- 指定HDFS客户端连接active namenode的java类 --><property><name>dfs.client.failover.proxy.provider.cluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔离机制为ssh --><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!-- 指定秘钥的位置 --><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property><!-- 开启自动故障转移 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property>
</configuration>
3、将修改后的文件同步到另外两台机器
注意:此时只是core-site.xml与hdfs-site.xml两个配置文件与单namenode的hadoop集群不同,其它配置文件和单节点的相同,已经省略!!!
scp -r /usr/local/soft/hadoop-2.7.6/etc/hadoop/ node1:/usr/local/soft/hadoop-2.7.6/etc/
4、删除之前hadoop的存储文件
rm -rf /usr/local/soft/hadoop-2.7.6/tmp
启动Zookeeper集群,三台机器都要启动
zkServer.sh start
5、启动JN 存储hdfs元数据
三台三台机器 都要执行命令
hadoop-daemon.sh start journalnode
jps
查看进程
6、格式化namenode
在一台namenode上面执行,master与node1上都可以,本文选择在master上面执行
hdfs namenode -format
启动当前的namenode
hadoop-daemon.sh start namenode
7、执行同步
在没有格式化的
namenode
上执行,本文没格式化的namenode
是node1
在node1
上执行
hdfs namenode -bootstrapStandby
8、格式化ZK
在已经启动的
namenode
上面执行(master)
!!一定要先 把zk集群正常 启动起来
hdfs zkfc -formatZK
9、启动hdfs集群
在启动了
namenode
的节点上执行(master
)
start-dfs.sh
查看master与node1上的进程
至此,hdfs高可用搭建完成,有两个namenode,一个在master上,另一个在node1上
4.2、yarn高可用
1、修改yarn-site.xml文件,并添加如下内容
<configuration><!-- NodeManager上运行的附属服务,需配置成mapreduce_shuffle才可运行MapReduce程序 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 配置Web Application Proxy安全代理(防止yarn被攻击) --><property><name>yarn.web-proxy.address</name><value>master:8888</value></property><!-- 开启日志 --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 配置日志删除时间为7天,-1为禁用,单位为秒 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property><!-- 修改日志目录 --><property><name>yarn.nodemanager.remote-app-log-dir</name><value>/logs</value></property><!-- 配置nodemanager可用的资源内存 --><property><name>yarn.nodemanager.resource.memory-mb</name><value>2048</value></property><!-- 配置nodemanager可用的资源CPU --><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>2</value></property><!-- //以下为YARN HA的配置// --><!-- 开启YARN HA --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 启用自动故障转移 --><property><name>yarn.resourcemanager.ha.automatic-failover.enabled</name><value>true</value></property><!-- 指定YARN HA的名称 --><property><name>yarn.resourcemanager.cluster-id</name><value>yarncluster</value></property><!-- 指定两个resourcemanager的名称 --><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!-- 配置rm1,rm2的主机 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>master</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>node1</value></property><!-- 配置YARN的http端口 --><property><name>yarn.resourcemanager.webapp.address.rm1</name><value>master:8088</value></property><property><name>yarn.resourcemanager.webapp.address.rm2</name><value>node1:8088</value></property><!-- 配置zookeeper的地址 --><property><name>yarn.resourcemanager.zk-address</name><value>master:2181,node1:2181,node2:2181</value></property><!-- 配置zookeeper的存储位置 --><property><name>yarn.resourcemanager.zk-state-store.parent-path</name><value>/rmstore</value></property><!-- 开启yarn resourcemanager restart --><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><!-- 开启yarn nodemanager restart --><property><name>yarn.nodemanager.recovery.enabled</name><value>true</value></property><!-- 配置nodemanager IPC的通信端口 --><property><name>yarn.nodemanager.address</name><value>0.0.0.0:45454</value></property>
</configuration>
2、mapred-site.xml文件,并添加如下内容
<configuration><!-- 指定MapReduce计算框架使用YARN --><property><name>mapreduce.framework.name</name><value>yarn</value></property><!-- 指定jobhistory server的rpc地址 --><property><name>mapreduce.jobhistory.address</name><value>node1:10020</value></property><!-- 指定jobhistory server的http地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>node1:19888</value></property><!-- 开启uber模式(针对小作业的优化) --><property><name>mapreduce.job.ubertask.enable</name><value>true</value></property><!-- 配置启动uber模式的最大map数 --><property><name>mapreduce.job.ubertask.maxmaps</name><value>9</value></property><!-- 配置启动uber模式的最大reduce数 --><property><name>mapreduce.job.ubertask.maxreduces</name><value>1</value></property>
</configuration>
将修改的yarn-site.xml与mapred-site.xml同步到另外两台机器上
scp -r /usr/local/soft/hadoop-2.7.6/etc/hadoop/ node1:/usr/local/soft/hadoop-2.7.6/etc/
3、启动yarn
在
master
启动start-yarn.sh
4、在另外一台主节点上启动RM(node1)
yarn-daemon.sh start resourcemanager
至此查看所有进程 jps,与我们集群规划的所有进程一致,Hadoop的HA高可用安装完毕
5、测试高可用
1、在浏览器查看
输入
master
与node1
地址,
看到master
处于active
状态
node1
处于standby
状态
2、手动杀死master中的namenode进程
kill -9 2718
3、再次访问wed界面
发现
node1
已经处于active
状态了
4、重新启动master上的namenode
hadoop-daemon.sh start namenode
查看master
状态
发现其已经变成standby
状态了
Hadoop之HA高可用相关推荐
- hadoop的HA高可用配置(没有搞完)
hadoop的HA主要是两部分,一部分是namenode的备份,一部分是datanode备份. namenode和datanode一般尽量不在一个节点上, 这样namenode挂掉一个,还会有另外一个 ...
- 搭建Hadoop的HA高可用架构(超详细步骤+已验证)
一.集群的规划 Zookeeper集群: 192.168.182.12 (bigdata12)192.168.182.13 (bigdata13)192.168.182.14 (bigdata14) ...
- 【Hadoop】HA高可用搭建保姆级教程(大二学长的万字笔记)
知识目录 一.写在前面
- Hadoop HA 高可用集群搭建
Hadoop HA 高可用集群搭建 一.首先配置集群信息 1 vi /etc/hosts 二.安装zookeeper 1.解压至/usr/hadoop/下 1 tar -zxvf zookeeper- ...
- Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)
一.服务器环境 主机名 IP 用户名 密码 安装目录 master 192.168.142.124 root xxx /usr/hadoop-2.6.5/ slave1 192.168.142.125 ...
- Hadoop HA 高可用集群启动报错 Encountered exception loading fsimage 解决方案
笔者在搭建好Hadoop HA 高可用集群启动时报如下错误,后面是解决方案. 报错信息: 2018-08-24 11:18:07,475 INFO org.apache.hadoop.hdfs.ser ...
- Centos7.6+Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建
本文转自https://mshk.top/2019/03/centos-hadoop-zookeeper-hbase-hive-spark-high-availability/,因为原链接打不开,故在 ...
- Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建
目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...
- Hadoop集群高可用及zookeeper+kafka组件搭建
目录 一.Hadoop集群高可用 1.Zookeeper概述 1)Zookeeper基本概述 3)Zab协议 3)observer 4)zookeeper集群图例 2.zookeeper集群搭建 3. ...
最新文章
- 营销自动化的4大预测分析错误
- SAP QM 执行事务代码QP01,系统报错 -Material type FOOD is not defined for task list type Q-
- python语言入门p-MicropPython的学习,如何从0到1?
- [gic]-ARM gicv3/gicv4的详细介绍-2020/08
- 我尽力了,为啥还是Bug不断?
- http下载异常_百度网站抓取异常的原因有哪些?有什么影响和解决方法?
- 用sc命令查询系统状态
- (转)收集 Spring Boot 相关的学习资料,Spring Cloud点这里 重点推荐:Spring Boot 中文索引...
- Auto Highlight for Mac(Safari文本自动高亮插件)
- php 判断输入字符串,php 判断(输入框) 字符串函数
- 第58章、拍照功能实现(从零开始学Android)
- url 转码 java_URL 转码遇到的坑
- 微信公众平台开发(十二) 发送客服消息
- 计算机安装xp蓝屏怎么办,重装xp系统一直蓝屏重启循环怎么回事
- 设置网站ico图标的两种方法
- win10+Python3.7.3+OpenCV3.4.1入门学习(八)————8.7 礼帽运算
- 电子烟“致癌”?美国癌症协会:危害显著低于普通香烟
- 接天莲叶无穷碧,映日荷花别样红 1
- 人机交互学习-6 交互式系统的设计
- 计算机网络实验mooc,MOOC计算机网络第三单元测验(哈尔滨工业大学)