【干货】Apache Hadoop 2.8 完全分布式集群搭建超详细过程,实现NameNode HA、ResourceManager HA高可靠性...

本文详述了在笔记本上利用Docker搭建Apache Hadoop 2.8分布式集群的过程,包括NameNode和ResourceManager的高可用(HA)配置。通过安装Docker,规划集群节点,配置Docker容器,安装JDK,下载并配置Hadoop,设置Zookeeper,以及详细配置Hadoop的各类配置文件,实现了HA集群。文章还提供了测试集群功能及HA性能的步骤,包括NameNode和ResourceManager的故障切换测试。
摘要由CSDN通过智能技术生成

最近在自己的笔记本电脑上搭建了Apache Hadoop分布式集群,采用了最新的稳定版本2.8,并配置了NameNode、ResourceManager的HA高可用,方便日常对Hadoop的研究与测试工作。详细的搭建过程如下:

1、安装docker,创建docker容器,用于搭建hadoop节点

docker真是个好东西啊,当要在自己的笔记本上搭建分布式集群时,由于CPU、内存、磁盘有限,无法在VMware上虚拟出太多节点,这时使用docker创建几个容器,就能轻松搭建一个分布式集群了。

(1)先在VMware上安装centos6.9,作为宿主机,然后安装docker,具体过程见我另一篇博文:Centos6.9安装docker

(2)然后再docker hub中拉取centos镜像,用于创建分布式集群的节点,推荐在docker中安装centos6(docker中的centos7有坑,被坑过,呜呜),具体过程见我另一篇博文:docker中安装centos6

(3)centos镜像准备好后,就开始创建docker容器,用于搭建hadoop的节点

# 创建4个节点,用于搭建hadoop
docker run -it --name hadoopcentos1 centos:6 /bin/bash
docker run -it --name hadoopcentos2 centos:6 /bin/bash
docker run -it --name hadoopcentos3 centos:6 /bin/bash
docker run -it --name hadoopcentos4 centos:6 /bin/bash

# 启动容器
docker start hadoopcentos1
docker start hadoopcentos2
docker start hadoopcentos3
docker start hadoopcentos4

注意:这时要把宿主机的防火墙关掉、selinux设为不可用

# 关掉防火墙
chkconfig iptables off
service iptables stop

# 设置 selinux 为不可用,在config文件中修改SELINUX配置项
vi /etc/selinux/config

SELINUX=disabled

 

2、规划hadoop集群

本次共创建了4个hadoop节点,并实现NameNode HA、ResourceManager HA,节点规划如下

hadoop集群节点规划

Docker 容器 ip地址 主机名 节点进程
hadoopcentos1 172.17.0.1 hd1 NameNode(active)、JournalNode、Zookeeper、ZKFC
hadoopcentos2 172.17.0.2 hd2 NameNode(standby)、JournalNode、Zookeeper、ZKFC、NodeManager、DataNode
hadoopcentos3 172.17.0.3 hd3 ResourceManager(active)、JournalNode、Zookeeper、NodeManager、DataNode
hadoopcentos4 172.17.0.4 hd4 ResourceManager(standby)、NodeManager、DataNode

NameNode HA部署在hd1、hd2,ResourceManager HA部署在hd3、hd4,其它进程见上表

 

3、配置Docker容器基本环境

由于在Docker中拉取的centos 6镜像是精简版本,很多指令没有,因此,先安装一些软件,配置基本环境

进入Docker容器,例如hadoopcentos1

docker exec -it hadoopcentos1 bin/bash

更换yum国内源(每个节点)

curl http://mirrors.aliyun.com/repo/Centos-6.repo > /etc/yum.repos.d/CentOS-Base-6-aliyun.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
yum clean all
yum makecache

安装相关的软件(每个节点)

yum install -y net-tools which openssh-clients openssh-server iproute.x86_64

编辑sshd_config文件,将其中的UsePAM改成no

vi /etc/ssh/sshd_config

启动ssh(每个节点)

chkconfig sshd on
service sshd start

创建用于安装apache hadoop的组、账号

groupadd ahadoop
useradd -m -g ahadoop ahadoop

配置主机名映射表

vi /etc/hosts
172.17.0.1	hd1.hdsite	hd1
172.17.0.2  hd2.hdsite  hd2
172.17.0.3  hd3.hdsite  hd3
172.17.0.4  hd4.hdsite  hd4
172.17.0.1	31d48048cb1e
172.17.0.2	1620d6ed305d
172.17.0.3	ed3702f8924e
172.17.0.4	ee8319514df6

其中,最后4行的随机字符串,就是docker容器自动生成的主机名了,每生成一个docker容器就会自动生成一个主机名

 

4、安装 JDK

从oracle的官网上面下载 JDK 1.8 Linux x64

创建java目录,并解压安装(使用root用户,方便以后别的程序也可以用)

mkdir /usr/java
cd /usr/java
tar -zxvf jdk-8u131-linux-x64.tar.gz

 

5、下载 apache hadoop

从apache hadoop的官网上面下载最新的稳定版本 apache hadoop 2.8

切换到 ahadoop 用户,将hadoop 2.8放于 /home/ahadoop 目录中,并解压

su ahadoop
cd /home/ahadoop
tar -zxvf hadoop-2.8.0.tar.gz

 

6、配置zookeeper

要实现hadoop namenode HA高可用,且实现故障的自动切换,则要借助于zookeeper

注意:如果只是实现namenode HA高可用,是可以不用zookeeper的,只要配置hadoop的journalnode节点即可实现高可用。而配置zookeeper集群,主要是为了监控心跳,实现故障时自动切换,这才是我们配置HA高可用的重要目标。

(1)下载zookeeper

到apache zookeeper官方下载最新版本的 zookeeper-3.4.10.tar.gz

(2)配置zookeeper

配置之前,建议阅读下apache zookeeper官方的配置安装介绍

zookeeper集群只能配置奇数个节点,例如3、5、7……,至少要3个及以上,这跟zookeeper的保障机制有关,要确保大多数节点可用,即(n-1)/2,因此节点数必须是奇数

解压zookeeper(hd1,hd2,hd3)

cd /home/ahadoop
tar -zxvf zookeeper-3.4.10.tar.gz 

创建zookeeper数据文件(hd1,hd2,hd3),其中不同的节点使用myid进行区分,一般使用1、2、3……

mkdir /home/ahadoop/zookeeper-data
echo '1' > /home/ahadoop/zookeeper-data/myid
echo '2' > /home/ahadoop/zookeeper-data/myid
echo '3' > /home/ahadoop/zookeeper-data/myid

配置zoo.cfg配置文件

vi /home/ahadoop/zookeeper-3.4.10/conf/zoo.cfg
dataDir=/home/ahadoop/zookeeper-data	# 修改zookeeper数据目录
clientPort=2181				# 默认端口
server.1=hd1:2888:3888
server.2=hd2:2888:3888
server.3=hd3:2888:3888

其中 server.1、server.2、server.3 里面的 server.x 最后的序号则是不同节点的myid文件里面的id

到此,zookeeper已经配置完毕,使用 zkServer.sh start 命令在每个节点启动zookeeper(hd1,hd2,hd3)

使用 zkServer.sh status 即可查看节点的状态,最后的Mode表示该节点在集群中的角色,一个zookeeper集群只有一个leader,其它都是follower

[ahadoop@31d48048cb1e ~]$ zkServer.sh start &
[1] 6855
[ahadoop@31d48048cb1e ~]$ ZooKeeper JMX enabled by default
Using config: /home/ahadoop/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

[1]+  Done                    zkServer.sh start
[ahadoop@1620d6ed305d ~]$
[ahadoop@1620d6ed305d ~]$
[ahadoop@1620d6ed305d ~]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/ahadoop/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader

 

7、配置hadoop的配置文件

配置hadoop集群前,建议先阅读下apache hadoop官网的集群配置说明,虽然是英文文档,但是简单易懂,有助于进一步了解hadoop集群知识,官方的配置介绍如下(p.s. 参照官网里面的配置说明进行配置,发现有小部分错误,直到实际配置时才发现,下面会介绍):

apache hadoop 单节点配置官方介绍

apache hadoop 集群配置官方介绍

apache hadoop namenode HA(基于QJM)配置官方介绍

apache hadoop resourcemanager HA 配置官方介绍

(1)创建相应的文件夹(每个节点)

mkdir /home/ahadoop/hadoop-data
mkdir /home/ahadoop/hadoop-data/name
mkdir /home/ahadoop/hadoop-data/data
mkdir /home/ahadoop/hadoop-data/checkpoint
mkdir /home/ahadoop/hadoop-data/tmp
mkdir /home/ahadoop/hadoop-data/log
mkdir /home/ahadoop/hadoop-data/journalnode

主文件夹为hadoop-data,其中:

name:存放namenode的数据

data:存放datanode的数据

checkpoint:存在namenode的checkpoint数据

tmp:临时文件

log:存放日志

journalnode:存在jounalnode的数据

(2)配置core-site.xml配置文件

官方提供了默认的 core-default.xml 配置文件可供参考,但内容很多,我们可根据需要进行配置

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hdcluster</value>
  </property>
  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/home/ahadoop/hadoop-data/journalnode</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/ahadoop/hadoop-data/tmp</value>
  </property>
  <property>
    <name>fs.trash.interval</name>
    <value>1440</value>
  </property>
  <property>
    <name>io.file.buffer.size</name>
    <value>65536</value>
  </property>
  <property>
    <name>ha.zookeeper.quorum</name>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值