[Hadoop] hadoop 2.7完全分布式高可用部署

1. hadoop ha 原理描述

在这里插入图片描述
为什么会有 hadoopHA机制呢?
HA:High Available,高可用
在Hadoop2.0之前,在HDFS 集群中NameNode 存在单点故障 (SPOF:ASinglePointofFailure)。 对于只有一个NameNode 的集群,如果NameNode 机器出现故障(比如宕机或是软件、硬件 升级),那么整个集群将无法使用,直到 NameNode 重新启动
那如何解决呢?
HDFS 的 HA 功能通过配置 Active/Standby 两个 NameNodes 实现在集群中对 NameNode 的 热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将 NameNode 很快的切换到另外一台机器。

在一个典型的 HDFS(HA) 集群中,使用两台单独的机器配置为 NameNodes 。在任何时间点, 确保 NameNodes 中只有一个处于 Active 状态,其他的处在 Standby 状态。其中 ActiveNameNode 负责集群中的所有客户端操作,StandbyNameNode 仅仅充当备机,保证一 旦 ActiveNameNode 出现问题能够快速切换。
为了能够实时同步 Active 和 Standby 两个 NameNode 的元数据信息(实际上 editlog),需提供一个共享存储系统,可以是 NFS、QJM(Quorum Journal Manager)或者 Zookeeper,Active Namenode 将数据写入共享存储系统,而 Standby 监听该系统,一旦发现有新数据写入,则 读取这些数据,并加载到自己内存中,以保证自己内存状态与 Active NameNode 保持基本一 致,如此这般,在紧急情况下 standby 便可快速切为 active namenode。为了实现快速切换, Standby 节点获取集群的最新文件块信息也是很有必要的。为了实现这一目标,DataNode 需要配置 NameNodes 的位置,并同时给他们发送文件块信息以及心跳检测。

2. 集群规划

组件\节点 hdp01 hdp02 hdp03
namenode
zkfc(和namenode同节点)
datanode
resourcemananger
nodemanager
QuorumPeerMain(zookeeper)
journalnode(QJM)

3. 集群服务器准备

hdoop-2.7.7.tar.gz (清华镜像下载)

1. 配置IP和主机名称映射

hdp01/hdp02/hdp03

vi /etc/hosts
10.211.55.20 hdp01
10.211.55.21 hdp02
10.211.55.22 hdp03
2. 关闭防火墙

hdp01/hdp02/hdp03

[root@hdp01 ~]# systemctl stop firewalld.service
[root@hdp01 ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
[root@hdp01 ~]# firewall-cmd --state
not running
3. 关闭selinux

hdp01/hdp02/hdp03

[root@hdp01 ~]# vi /etc/selinux/config
SELINUX=disabled
4. 同步时间

hdp01/hdp02/hdp03

[root@hdp01 ~]# yum install -y ntp
[root@hdp01 ~]# ntpdate cn.pool.ntp.org
17 Nov 20:51:55 ntpdate[6057]: adjust time server 144.76.76.107 offset -0.056250 sec
5. 配置sudo权限

所有节点添加用户hdp01
以hdp01节点为例添加sudo权限,hdp02/hdp03同样操作

#文件/etc/sudoers需要写权限
[root@hdp01 ~]# chmod u+w /etc/sudoers
[root@hdp01 ~]# vi /etc/sudoers
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
hdp01   ALL=(ALL)       ALL
#添加完撤销文件/etc/sudoers的写权限
[root@hdp01 ~]# chmod u-w /etc/sudoers

注:
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL
第一行:允许用户youuser执行sudo命令(需要输入密码)。
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码)。
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码。
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码。

6. 安装jdk环境

/hdp01/hdp02/hdp03

export JAVA_HOME=/usr/local/jdk1.8.0_211
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
7. 切换用户配置ssh免密登录

hdp01到hdp02为例,hdp02/hdp03同样,同时也要ssh-copy-id 到自己

[hdp01@hdp01 ~]$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hdp01/.ssh/id_rsa): 
Created directory '/home/hdp01/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/hdp01/.ssh/id_rsa.
Your public key has been saved in /home/hdp01/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:gQ7xVHxRW8FYEUBHNtLBOEMQE75ztajBZ8Sa++8IK/0 hdp01@hdp01
The key's randomart image is:
+---[RSA 2048]----+
|    . .o. *O*X%= |
|     + ....o=*+. |
|    . o ... +o.  |
|     o   o = o . |
|      . S B = .  |
|           O     |
|         .+      |
|        . .+ .   |
|         ...Eoo  |
+----[SHA256]-----+

[hdp01@hdp01 ~]$ ssh-copy-id hdp01@hdp02
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/hdp01/.ssh/id_rsa.pub"
The authenticity of host 'hdp02 (10.211.55.21)' can't be established.
ECDSA key fingerprint is SHA256:fZz+As5buFupBNAVjz3YKv6el8NaIMsqRmwl3mUUcv0.
ECDSA key fingerprint is MD5:8b:b5:09:6a:41:f1:5d:7a:0c:18:4c:ca:bb:3e:35:f0.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
hdp02@hdp02's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'hdp02@hdp02'"
and check to make sure that only the key(s) you wanted were added.
[hdp01@hdp01 ~]$ ssh hdp01@hdp02
Last login: Sun Nov 17 21:08:21 2019
[hdp01@hdp02 ~]$ exit
登出
Connection to hdp02 closed.
[hdp01@hdp01 ~]$ ssh hdp01@hdp01

8. 安装zookeeper集群

zookeeper集群安装链接

4. 集群安装

1. 下载包hdoop-2.7.7.tar.gz
cd /home/hdp01/apps
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
tar zxvf hadoop-2.7.7.tar.gz
2. 配置hadoop文件
#切换目录
cd /home/hdp01/apps/hadoop-2.7.7/etc/hadoop

hadoop-env.sh

#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/local/jdk1.8.0_211

core-site.xml

<configuration>
   <!-- 指定 hdfs 的 nameservice 为 bd1809  hdfs的访问入口 -->
  <property>
    <
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值