博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hadoop 完全分布式HA高可用集群(自动切换)搭建
阅读量:2427 次
发布时间:2019-05-10

本文共 4862 字,大约阅读时间需要 16 分钟。

实验环境

namenode1: 192.168.103.4namenode2: 192.168.103.8datanode1:192.168.103.15datanode2: 192.168.103.5 datanode3: 192.168.103.3操作系统: ubuntu-16.04-x64hadoop版本: apache-hadoop-2.6.5jdk版本:1.8

安装步骤

1.安装jdk

jdk的安装过程此处不赘述,不熟悉的话可以参考网上的资料。

搭建zookeeper集群

zookeeper集群的搭建过程可以参考,本例中zookeeper集群搭建在datanode1, datanode2,datanode3节点上。

2.修改主机映射并配置ssh免密码登录

为了方便配置信息的维护,我们在hadoop配置文件中使用主机名来标识一台主机,那么我们需要在集群中配置主机与ip的映射关系。

修改集群中每台主机/etc/hosts文件,添加如下内容。

192.168.103.4   namenode1192.168.103.8   namenode2192.168.103.15  datanode1192.168.103.5   datanode2192.168.103.3   datanode3

集群在启动的过程中需要ssh远程登录到别的主机上,为了避免每次输入对方主机的密码,我们需要对namenode1和namenode2配置免密码登录

在namenode1上生成公钥

ssh-keygen

一路enter确认即可生成对应的公钥。

将namenode1的公钥拷贝到namenode2, datanode1, datanode2, datanode3节点上。

ssh-copy-id  -i  ~/.ssh/id_rsa.pub  root@namenode2ssh-copy-id  -i  ~/.ssh/id_rsa.pub  root@datanode1ssh-copy-id  -i  ~/.ssh/id_rsa.pub  root@datanode2

在namenode2上生成公钥后,并将namenode2的公钥拷贝到namenode1, datanode1, datanode2, datanode3节点上。具体的命令可以参考namenode1上的操作命令。

3.namenode1配置hadoop,并复制到其余节点

下载hadoop 安装包,点击这里获取hadoop-2.6.5。

  • 解压安装包

    tar xf hadoop-2.6.5.tar.gz
  • 修改etc/hadoop/hadoop-env.sh

    export JAVA_HOME=/opt/jdk1.8.0_91
  • 修改etc/hadoop/core-site.xml

    fs.defaultFS
    hdfs://mycluster
    hadoop.tmp.dir
    file:/opt/hadoop-2.6.5/tmp
    ha.zookeeper.quorum
    datanode1:2181,datanode2:2181,datanode3:2181

    ha.zookeeper.quorum为zookeeper集群的地址

  • 修改etc/hadoop/hdfs-site.xml

    dfs.namenode.name.dir
    file:/opt/hadoop-2.6.5/tmp/dfs/name
    dfs.datanode.data.dir
    file:/opt/hadoop-2.6.5/tmp/dfs/data
    dfs.replication
    3
    dfs.nameservices
    mycluster
    dfs.ha.namenodes.mycluster
    nn1,nn2
    dfs.namenode.rpc-address.mycluster.nn1
    namenode1:9000
    dfs.namenode.http-address.mycluster.nn1
    namenode1:50070
    dfs.namenode.rpc-address.mycluster.nn2
    namenode2:9000
    dfs.namenode.http-address.mycluster.nn2
    namenode2:50070
    dfs.ha.automic-failover.enabled.cluster
    true
    dfs.namenode.shared.edits.dir
    qjournal://datanode1:8485;datanode2:8485;datanode3:8485/mycluster
    dfs.client.failover.proxy.provider.mycluster
    org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
    dfs.ha.fencing.methods
    shell(/bin/true)
    dfs.ha.fencing.ssh.private-key-files
    /root/.ssh/id_rsa
    dfs.ha.fencing.ssh.connect-timeout
    30000
    dfs.journalnode.edits.dir
    /opt/hadoop-2.6.5/tmp/journal
  • 修改etc/hadoop/slaves

    datanode1datanode2datanode3
  • 将配置好的hadoop安装包拷贝到namenode2和其余的datanode上

    scp -r hadoop-2.6.5  root@namenode2:/opt scp -r hadoop-2.6.5  root@datanode1:/opt scp -r hadoop-2.6.5  root@datanode2:/opt scp -r hadoop-2.6.5  root@datanode3:/opt

4.启动集群

  • 启动zookeeper集群

    在datanode1,datanode2, datanode3节点执行如下命令:

    ./bin/zkServer.sh start
  • 格式化zk集群

    namenode1上执行:

    /bin/hdfs zkfc -formatZK
  • 启动journalnode集群

    datanode1, datanode2, datanode2上执行:

    ./sbin/hadoop-daemon.sh  start journalnode
  • 格式化namenode

    namenode1上执行:

    ./bin/hdfs namenode -format
  • 启动datanode

    datanode1, datanode2, datanode3上执行:

    ./sbin/hadoop-daemon.sh start datanode
  • 启动namenode

    namenode1:

    ./sbin/hadoop-daemon.sh start namenode

    namenode2:

    ./bin/hdfs namenode -bootstrapStandby./sbin/hadoop-daemon.sh start namenode

    此时namenode1和namenode2同时处于standby状态。

    这里写图片描述
    这里写图片描述

  • 启动zkfc服务

    在namenode1和namenode2上同时执行如下命令:

    ./sbin/hadoop-daemon.sh  start zkfc

    启动zkfc服务后,namenode1和namenode2会自动选举出active节点

    这里写图片描述
    这里写图片描述

5.验证功能

root# ./bin/hdfs dfs -mkdir /testroot# ./bin/hdfs dfs -ls /Found 1 itemsdrwxr-xr-x   - root supergroup          0 2018-06-01 13:49 /testroot# ./bin/hdfs dfs -put /root/a.txt  /testroot# ./bin/hdfs dfs -cat   /test/a.txt hello world

HA故障自动切换

此时namenode1处于active状态,namenode2处于standby状态。模拟namenode1节点namenode服务挂掉。

namenode1:

root# jps21235 DFSZKFailoverController21116 Jps20014 NameNoderoot# kill -9 20014

我们再查看namenode2的节点状态

这里写图片描述

namenode2由standby状态切换到active状态,HA故障自动切换成功。

你可能感兴趣的文章
不止 5G 和鸿蒙,华为最新大招,扔出 AI 计算核弹
查看>>
【早报】做Java半年,挣的不如AI 1个月?第二句泪目..
查看>>
反转!2019程序员吸金榜来了,AI程序员刷爆了..
查看>>
学Python后到底能干什么?网友:我太难了
查看>>
华为、BAT力捧!程序员:我彻底慌了...
查看>>
刷爆了!BAT这场AI芯片之战,你更支持谁?
查看>>
定了!刚面完AI岗位,这些题全都考了!程序员:有黑幕!
查看>>
GitHub 热榜第一!这个 Python 项目超 8.4k 标星,网友:太实用!
查看>>
阿里云部署Django项目(nginx+uWSGI)
查看>>
程序员必看,这本深度学习宝典刷爆IT圈!
查看>>
python学习心得体会(一)
查看>>
程序员薅羊毛神器来了!
查看>>
自学 Python后,自己一个人可以通过此技能挣什么钱?
查看>>
Java三种面试者是面试官最讨厌的,见之即毙!
查看>>
当程序员要具备什么条件?
查看>>
行啊,人工智能玩大了!
查看>>
手拿3份AI的offer?这些人凭什么这么刚?
查看>>
给大家推荐一本Python书,京东断货王,火遍IT圈!
查看>>
会Python,程序员必备的软技能,你会吗?
查看>>
Python小白说:“看完这篇文章才知道这样学习最高效”
查看>>