hadoop3.1.1 HA高可用分布式集群安装部署
1、环境介绍
涉及到软件下载地址:https://pan.baidu.com/s/1hpcXUSJe85EsU9ara48MsQ
服务器:CentOS 6.8 其中:2 台 namenode、3 台 datanode
zookeeper集群地址:192.168.67.11:2181,192.168.67.12:2181
JDK:jdk-8u191-linux-x64.tar.gz
hadoop:hadoop-3.1.1.tar.gz
节点信息:
节点 | IP | namenode | datanode | resourcemanager | journalnode |
namenode1 | 192.168.67.101 | √ | √ | √ | |
namenode2 | 192.168.67.102 | √ | √ | √ | |
datanode1 | 192.168.67.103 | √ | √ | ||
datanode2 | 192.168.67.104 | √ | √ | ||
datanode3 | 192.168.67.105 | √ | √ |
2、配置ssh免密登陆
2.1 在每台机器上执行 ssh-keygen -t rsa
2.2 vim ~/.ssh/id_rsa.pub 将所有机器上的公钥内容汇总到 authorized_keys 文件并分发到每台机器上。
2.3 授权 chmod 600 ~/.ssh/authorized_keys
3、配置hosts:
vim /etc/hosts #增加如下配置
192.168.67.101 namenode1
192.168.67.102 namenode2
192.168.67.103 datanode1
192.168.67.104 datanode2
192.168.67.105 datanode3
#将hosts文件分发至其他机器
scp -r /etc/hosts namenode2:/etc/hosts
scp -r /etc/hosts datanode1:/etc/hosts
scp -r /etc/hosts datanode2:/etc/hosts
scp -r /etc/hosts datanode3:/etc/hosts
4、关闭防火墙
service iptables stop
chkconfig iptables off
5、安装JDK
tar -zxvf /usr/local/soft/jdk-8u191-linux-x64.tar.gz -C /usr/local/ vim /etc/profile #增加JDK环境变量内容
export JAVA_HOME=/usr/local/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
使环境变量生效:source /etc/profile
6、安装hadoop
tar -zxvf /usr/local/soft/hadoop-3.1.1.tar.gz -C /usr/local/
vim /etc/profile #增加hadoop环境变量内容
export HADOOP_HOME=/usr/local/hadoop-3.1.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib
使环境变量生效:source /etc/profile
#修改 start-dfs.sh 和 stop-dfs.sh 两个文件,增加配置
vim /usr/local/hadoop-3.1.1/sbin/start-dfs.sh
vim /usr/local/hadoop-3.1.1/sbin/stop-dfs.sh #增加启动用户
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=root
#修改 start-yarn.sh 和 stop-yarn.sh 两个文件,增加配置
vim /usr/local/hadoop-3.1.1/sbin/start-yarn.sh
vim /usr/local/hadoop-3.1.1/sbin/stop-yarn.sh #增加启动用户
YARN_RESOURCEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=root
YARN_NODEMANAGER_USER=root
vim /usr/local/hadoop-3.1.1/etc/hadoop/hadoop-env.sh #增加内容
export JAVA_HOME=/usr/local/jdk1.8.0_191
export HADOOP_HOME=/usr/local/hadoop-3.1.1
#修改 workers 文件内容
vim /usr/local/hadoop-3.1.1/etc/hadoop/workers #替换内容为
datanode1
datanode2
datanode3
vim /usr/local/hadoop-3.1.1/etc/hadoop/core-site.xml #修改为如下配置
<configuration>
<!-- 指定hdfs的nameservice为nameservice -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster/</value>
</property> <!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-3.1.1/hdfs/temp</value>
</property> <!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>192.168.67.1:2181</value>
</property>
</configuration>
vim /usr/local/hadoop-3.1.1/etc/hadoop/hdfs-site.xml #修改为如下配置
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-3.1.1/hdfs/name</value>
</property> <property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-3.1.1/hdfs/data</value>
</property> <property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property> <property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property> <property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>namenode1:9000</value>
</property> <property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>namenode2:9000</value>
</property> <property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>namenode1:50070</value>
</property> <property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>namenode2:50070</value>
</property> <!--HA故障切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property> <!-- journalnode 配置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://namenode1:8485;namenode2:8485;datanode1:8485;datanode2:8485;datanode3:8485/mycluster</value>
</property> <property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property> <!--发生failover时,Standby的节点要执行一系列方法把原来那个Active节点中不健康的NameNode服务给杀掉,
这个叫做fence过程。sshfence会通过ssh远程调用fuser命令去找到Active节点的NameNode服务并杀死它-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>shell(/bin/true)</value>
</property> <!--SSH私钥 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property> <!--SSH超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property> <!--Journal Node文件存储地址 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/hadoop-3.1.1/hdfs/journaldata</value>
</property> <property>
<name>dfs.qjournal.write-txns.timeout.ms</name>
<value>60000</value>
</property>
</configuration>
vim /usr/local/hadoop-3.1.1/etc/hadoop/mapred-site.xml #修改为如下配置
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
vim /usr/local/hadoop-3.1.1/etc/hadoop/yarn-site.xml #修改为如下配置
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 开启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>namenode1</value>
</property> <property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>namenode2</value>
</property> <!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>192.168.67.11:2181,192.168.67.12:2181</value>
</property> <property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
#将这些修改的文件分发至其他4台服务器中
/usr/local/hadoop-3.1.1/sbin/start-dfs.sh
/usr/local/hadoop-3.1.1/sbin/stop-dfs.sh
/usr/local/hadoop-3.1.1/sbin/start-yarn.sh
/usr/local/hadoop-3.1.1/sbin/stop-yarn.sh
/usr/local/hadoop-3.1.1/etc/hadoop/hadoop-env.sh
/usr/local/hadoop-3.1.1/etc/hadoop/workers
/usr/local/hadoop-3.1.1/etc/hadoop/core-site.xml
/usr/local/hadoop-3.1.1/etc/hadoop/hdfs-site.xml
/usr/local/hadoop-3.1.1/etc/hadoop/mapred-site.xml
/usr/local/hadoop-3.1.1/etc/hadoop/yarn-site.xml
首次启动顺序
1、确保配置的zookeeper服务器已经运行
2、在所有journalnode机器上启动:hdfs --daemon start journalnode
3、namenode1中执行格式化zkfc:hdfs zkfc -formatZK
4、namenode1中格式化主节点:hdfs namenode -format
5、启动namenode1中的主节点:hdfs --daemon start namenode
6、namenode2副节点同步主节点格式化:hdfs namenode -bootstrapStandby
7、启动集群:start-all.sh
7、验证
7.1 访问地址:
http://192.168.67.101/50070/
http://192.168.67.102/50070/
http://192.168.67.101/8088/
http://192.168.67.102/8088/
7.2 关闭 namenode 为 active 对应的服务器,观察另一台 namenode 状态是否由 standby 变更为 active
hadoop3.1.1 HA高可用分布式集群安装部署的更多相关文章
- 一张图讲解最少机器搭建FastDFS高可用分布式集群安装说明
很幸运参与零售云快消平台的公有云搭建及孵化项目.零售云快消平台源于零售云家电3C平台私有项目,是与公司业务强耦合的.为了适用于全场景全品类平台,集团要求项目平台化,我们抢先并承担了此任务.并由我来主 ...
- Dubbo+zookeeper构建高可用分布式集群(二)-集群部署
在Dubbo+zookeeper构建高可用分布式集群(一)-单机部署中我们讲了如何单机部署.但没有将如何配置微服务.下面分别介绍单机与集群微服务如何配置注册中心. Zookeeper单机配置:方式一. ...
- HBase 1.2.6 完全分布式集群安装部署详细过程
Apache HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,是NoSQL数据库,基于Google Bigtable思想的开源实现,可在廉价的PC Server上搭建大规模结构化存 ...
- redis高可用分布式集群
一,高可用 高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响. 停止服务的原因可能由于网卡.路由器.机房.CPU负载过高.内存溢出.自然灾害等不可预期的原 ...
- Redis 高可用分布式集群
一,高可用 高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响. 停止服务的原因可能由于网卡.路由器.机房.CPU负载过高.内存溢出.自然灾害等不可预期的原 ...
- redis详解(四)-- 高可用分布式集群
一,高可用 高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响. 停止服务的原因可能由于网卡.路由器.机房.CPU负载过高.内存溢出.自然灾害等不可预期的原 ...
- 大数据Hadoop的HA高可用架构集群部署
1 概述 在Hadoop 2.0.0之前,一个Hadoop集群只有一个NameNode,那么NameNode就会存在单点故障的问题,幸运的是Hadoop 2.0.0之后解决了这个问题,即支持N ...
- ElasticSearch 高可用分布式集群搭建,与PHP多线程测试
方案: 使用HAproxy:当其中一台ElasticSearch Master宕掉时,ElasticSearch集群会自动将运行正常的节点提升为Master,但HAproxy不会将失败的请求重新分发到 ...
- Java集群优化——dubbo+zookeeper构建高可用分布式集群
不久前,我们讨论过Nginx+tomcat组成的集群,这已经是非常灵活的集群技术,但是当我们的系统遇到更大的瓶颈,全部应用的单点服务器已经不能满足我们的需求,这时,我们要考虑另外一种,我们熟悉的内容, ...
随机推荐
- LaTeX技巧004:LaTeX不用添加到目录制作书签技巧
这里给大家介绍一个命令,需要hyperref宏包.该命令格式如下: \pdfbookmark[]{text}{anchor} \tableofcontents 顺序应该是这样,如果换过来,书签指向的位 ...
- C语言-浮点数的秘密
一.浮点数的秘密 1.内存中的浮点数 浮点数在内存中的存储方式为:符号位.指数.尾数 十进制浮点数的内存表示: 实例分析: #include <stdio.h> //打印十进制的内存表示 ...
- linux - 删除软件包
# 参数e的作用是使rpm进入卸载模式,对名为[package name]的软件包进行卸载 rpm -e [package name] # 由于系统中各个软件包之间相互有依赖关系,使用-nodeps忽 ...
- IntelliJ WebStorm 最新版 安装永久破解教程【最强,可用至2099年】
IntelliJ WebStorm 2018.3.6安装永久破解[最强] 一. 在官网下载WebStorm安装包 链接:http://www.jetbrains.com/webstorm/down ...
- 2018护网杯easy_tornado(SSTI tornado render模板注入)
考点:SSTI注入 原理: tornado render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页,如果用户对render内容可控,不仅可以注入XSS代码,而且 ...
- mysql 对数据的自增ID重新进行排序
创建表格时添加: create table table1(id int auto_increment primary key,...) 创建表格后添加: 删除原有主键: ALTER TABLE `ta ...
- VScode 编辑器快捷键被占用
在家办公这个开发环境实在是让人受不鸟 .mysql .vscode 对连QQ都没有运行还是不行.排查最终发现了这个家伙—搜狗输入法.微软输入法 这两个把系统快捷键占得那个全 我这个全局搜索死活用不了, ...
- 快速ni
代码: while(p>0) (mul(a,b)) = a*b; { 等同于二分 if(p%2==1) mul(ans,a); 目的是为了二分个基数的二次方乘 ...
- 训练20191009 2018-2019 ACM-ICPC, Asia East Continent Finals
2018-2019 ACM-ICPC, Asia East Continent Finals 总体情况 本次训练共3小时20分钟,通过题数4. 解题报告 D. Deja vu of - Go Play ...
- 剑指offer 面试题. 二叉搜索树的第k个结点
题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. 解: 由于二叉搜索树的中序遍历是升序,所以在中 ...