Apache Hadoop 2.8 完全分布式集群搭建超详细过程
源文档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地址 | 主机名 | 节点进程 |
---|---|---|---|
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
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 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数据
相关阅读:
- Mac上使用虚拟机搭建Hadoop集群 (zaza9084, 2018-2-08)
- 大数据的提升:Hadoop即服务的迅猛发展 (zaza9084, 2018-2-11)
- 深入浅出Hadoop之Mapreduce (zaza9084, 2020-1-22)
- Hadoop进入寒冬期,崛起的会是Spark吗? (zaza9084, 2018-3-02)
- Hadoop架构下的数据库审计难在哪里? (zaza9084, 2018-3-06)
- Hadoop分布式文件系统--HDFS的诞生 (zaza9084, 2018-3-07)
- Java专业人员如何利用Hadoop的力量? (zaza9084, 2018-3-14)
- 教你玩转Hadoop分布式集群搭建,进击大数据 (资深梦游, 2018-3-14)
- 深入浅出Hadoop之HDFS (zaza9084, 2018-3-16)
- Docker搭建hadoop开发测试集群 (资深梦游, 2018-3-16)
TAG: hadoop