Apache Hadoop 2.8 完全分布式集群搭建超详细过程

上一篇 / 下一篇  2018-03-21 10:43:15

源文档link:

https://my.oschina.net/u/876354/blog/993836



最近在自己的笔记本电脑上搭建**ache 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个节点,用于搭建hadoopdockerrun -it--name hadoopcentos1 centos:6 /bin/bashdockerrun -it--name hadoopcentos2 centos:6 /bin/bashdockerrun -it--name hadoopcentos3 centos:6 /bin/bashdockerrun -it--name hadoopcentos4 centos:6 /bin/bash# 启动容器dockerstart hadoopcentos1dockerstart hadoopcentos2dockerstart hadoopcentos3dockerstart hadoopcentos4

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

# 关掉防火墙chkconfigiptablesoffservice iptables stop# 设置 selinux 为不可用,在config文件中修改SELINUX配置项vi /etc/selinux/config

SELINUX=disabled

 

2、规划hadoop集群

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

hadoop集群节点规划

Docker 容器ip地址主机名节点进程
hadoopcentos1172.17.0.1hd1NameNode(active)、JournalNode、Zookeeper、ZKFC
hadoopcentos2172.17.0.2hd2NameNode(standby)、JournalNode、Zookeeper、ZKFC、NodeManager、DataNode
hadoopcentos3172.17.0.3hd3ResourceManager(active)、JournalNode、Zookeeper、NodeManager、DataNode
hadoopcentos4172.17.0.4hd4ResourceManager(standby)、NodeManager、DataNode

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

 

3、配置Docker容器基本环境

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

进入Docker容器,例如hadoopcentos1

dockerexec-it hadoopcentos1 bin/bash

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

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

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

yuminstall-y net-toolswhichopenssh-clients openssh-serveriproute.x86_64

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

vi/etc/ssh/sshd_config

启动ssh(每个节点)

chkconfigsshdonservice sshd start

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

groupaddahadoop
useradd -m -g ahadoop ahadoop

配置主机名映射表

vi/etc/hosts172.17.0.1hd1.hdsite	hd1172.17.0.2hd2.hdsite  hd2172.17.0.3hd3.hdsite  hd3172.17.0.4hd4.hdsite  hd4172.17.0.131d48048cb1e172.17.0.21620d6ed305d172.17.0.3ed3702f8924e172.17.0.4ee8319514df6

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

 

4、安装 JDK

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

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

mkdir/usr/javacd/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 ahadoopcd/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:3888server.2=hd2:2888:3888server.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.shstart&
[1]6855[ahadoop@31d48048cb1e ~]$ ZooKeeper JMX enabledbydefaultUsingconfig: /home/ahadoop/zookeeper-3.4.10/bin/../conf/zoo.cfgStartingzookeeper ... STARTED

[1]+  Done                    zkServer.shstart[ahadoop@1620d6ed305d ~]$
[ahadoop@1620d6ed305d ~]$
[ahadoop@1620d6ed305d ~]$ zkServer.shstatusZooKeeper JMX enabledbydefaultUsingconfig: /home/ahadoop/zookeeper-3.4.10/bin/../conf/zoo.cfgMode: 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-datamkdir/home/ahadoop/hadoop-data/namemkdir/home/ahadoop/hadoop-data/datamkdir/home/ahadoop/hadoop-data/checkpointmkdir/home/ahadoop/hadoop-data/tmpmkdir/home/ahadoop/hadoop-data/logmkdir/home/ahadoop/hadoop-data/journalnode

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

name:存放namenode的数据

data:存放datanode的数据

checkpoint:存在namenode的checkpoint数据

TAG: hadoop

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-27  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 1423
  • 日志数: 2
  • 建立时间: 2012-08-01
  • 更新时间: 2018-03-21

RSS订阅

Open Toolbar