【大数据】CentOS7.6+Hadoop3.1四台机器高可用HA搭建

HA高可用搭建

规划:
            NN-1    NN-2    DN    ZK    ZKFC    JNN
node01    y                                          y        y
node02               y         y      y            y        y
node03                          y      y                      y
node04                          y      y            


描述:
在四台虚拟机中的Linux机器安装hadoop3.1HA分布式集群。

环境和软件相关:
系统: CentOS 7.6
机器1:主机名-node01;IP-192.168.1.61
机器2:主机名-node02;IP-192.168.1.62
机器3:主机名-node03;IP-192.168.1.63
机器4:主机名-node04;IP-192.168.1.64

JDK版本:JDK1.8
JDK安装包全名:jdk-8u201-linux-x64.tar.gz
Hadoop版本:3.1.1
Hadoop安装包全名:hadoop-3.1.1.tar.gz

一、环境配置
1、修改IP

2、修改hosts文件
# vi /etc/hosts
192.168.1.61   note01
192.168.1.62   note02
192.168.1.63   note03
192.168.1.64   note04

3、修改系统参数
# vi /etc/selinux/config
将SELINUX修改为下面的值
SELINUX=disabled

4、关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld

5.创建运行hadoop环境的用户hadoop
# useradd hadoop
修改haoop用户的密码
# passwd hadoop

6、ssh免秘钥登录
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa
$ ssh-keygen -t dsa
注:以上都在四台机器的hadoop用户下执行后,在note01节点执行下面的
$ cd ~/.ssh
$ cat *.pub >> authorized_keys
$ ssh note02 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
$ ssh note03 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
$ ssh note04 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
$ chmod 600 authorized_keys
$ scp ~/.ssh/authorized_keys note02:~/.ssh
$ scp ~/.ssh/authorized_keys note03:~/.ssh
$ scp ~/.ssh/authorized_keys note04:~/.ssh

分别在四台机器验证是否配通ssh
$ ssh note01 date
$ ssh note02 date
$ ssh note03 date
$ ssh note04 date

二、安装Java1.8(四台机器都安装)

1、检查是否安装有java
# rpm -qa|grep java

2、卸载JAVA
如上面1未发现安装有java,可忽略此步;

使用命令:
# rpm -e java包名

卸载java,与java有关的全部软件都需要卸载,如遇到卸载不了的,需要强制执行卸载
# rpm -e java包名 --nodeps

3、下载jdk软件包(这里下载1.8 Linux 64位的版本)
去官网下载软件包
https://www.oracle.com/technetwork/java/javase/downloads/index.html

4、上传jdk到服务器
这里上传到/tmp目录

5、解压安装包
# tar -zxvf /tmp/jdk-8u201-linux-x64.tar.gz -C /opt
# mv /opt/jdk1.8.0_191 /opt/jdk1.8

配置环境:在/etc/profile文件添加以下内容
 export JAVA_HOME=/opt/jdk1.8
 export PATH=$PATH:$JAVA_HOME/bin/

使其配置生效
# source /etc/profile

7、验证JAVA是否安装
# java -version

三、zookeeper安装
上传和解压zookeeper文件
# tar -zxvf /tmp/zookeeper-3.4.6.tar.gz -C /opt
# chown -R hadoop:hadoop /opt/zookeeper-3.4.6
配置zookeeper的环境
# su - hadoop
$ vi .bash_profile
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin
使其生效
$ source .bash_profile

$ vi /opt/zookeeper-3.4.6/conf/zoo_sample.cfg
dataDir=/opt/zookeeper-3.4.6/zookeepertmp
dataLogDir=/opt/zookeeper-3.4.6/zookeepertmp/log

server.1=note02:2888:3888
server.2=note03:2888:3888
server.3=note04:2888:3888

注:server后面的数字需要从1开始,代表管理的机器id

创建对应的文件夹和文件
在note02执行
$ mkdir -p /opt/zookeeper-3.4.6/zookeepertmp/log
$ echo "1" > /opt/zookeeper-3.4.6/zookeepertmp/myid

创建对应的文件夹和文件
在note03执行
$ mkdir -p /opt/zookeeper-3.4.6/zookeepertmp/log
$ echo "2" > /opt/zookeeper-3.4.6/zookeepertmp/myid

创建对应的文件夹和文件
在note04执行
$ mkdir -p /opt/zookeeper-3.4.6/zookeepertmp/log
$ echo "3" > /opt/zookeeper-3.4.6/zookeepertmp/myid

启动zookeeper(在note02、note03、note04执行)
$ zkServer.sh start

查看zookeeper状态(在note02、note03、note04执行)
$ zkServer.sh status

注:需要启动zookeeper集群过半的才可以,单单启动一节点会失败。

四、hadoop安装
上传安装包到/tmp路径

解压并更改文件夹属主(note01执行)
# tar -zxvf /tmp/hadoop-3.1.1.tar.gz -C /opt/
# chown -R hadoop:hadoop /opt/hadoop-3.1.1

配置环境(note01执行)
# su - hadoop
$ vi .bash_profile
export HADOOP_HOME=/opt/hadoop-3.1.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

使其生效
$ source .bash_profile

配置
修改hadoop-env.sh文件,在文件最后添加内容
$ cd /opt/hadoop-3.1.1/etc/hadoop
$ vi hadoop-env.sh
export JAVA_HOME=/opt/jdk1.8
export HDFS_NAMENODE_USER=hadoop
export HDFS_DATANODE_USER=hadoop
export HDFS_ZKFC_USER=hadoop
export HDFS_JOURNALNODE_USER=hadoop

配置core-site.xml文件
$ vi core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/hadoop/ha</value>
    </property>
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>hadoop</value>
    </property>
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>note02:2181,note03:2181,note04:2181</value>
    </property>
</configuration>

注:note01为主机名;使用3版本默认的9820端口

配置hdfs-site.xml文件
$ vi hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>
    <property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1,nn2</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>note01:8020</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>note02:8020</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn1</name>
        <value>note01:9870</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <value>note02:9870</value>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://note01:8485;note02:8485;note03:8485/mycluster</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.mycluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>

    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/hadoop/.ssh/id_rsa</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/hadoop/ha/journalnode</value>
    </property>
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
</configuration>

配置文件workers
$ vi workers
note02
note03
note04

拷贝文件到note02、note03、note04
# scp -r hadoop-3.1.1 note02:/opt/
# scp -r hadoop-3.1.1 note03:/opt/
# scp -r hadoop-3.1.1 note04:/opt/

在note02、note03、note04执行
# chown -R hadoop:hadoop /opt/hadoop-3.1.1

在node01,node02,node03启动journalnode
$ hdfs --daemon start journalnode

在node01格式化文件系统
$ hdfs namenode -format

当看到有
INFO common.Storage: Storage directory /var/hadoop/peseudo/dfs/name has been successfully formatted.
表示格式化成功!

同步node01的数据到node02
$ hdfs namenode -bootstrapStandby

启动node01的namenode
$ hdfs --daemon start namenode

查看node01是否启动了namenode
$ jps

在node01格式化zkfc
$ hdfs zkfc -formatZK

INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/mycluster in ZK.

在node01启动集群
$ start-dfs.sh

启动后查看进程是否启动
$ jps

查看端口
$ ss -nal

在火狐或谷歌浏览器输入地址:192.168.1.31:9870查看hadoop状态

四、测试hadoop
查看内容
$ hdfs dfs -ls /

创建目录
$ hdfs dfs -mkdir /temp

上传文件
$ hdfs dfs -put /tmp/hadoop-3.1.1.tar.gz /temp

查看内容
$ hdfs dfs -ls /

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值