前面那篇文章安装的是hadoop2,此次我们搭建hadoop3,环境还是多搭几次找找感觉。

环境节点配置

node1

node2

node3

NN

SN


DN

DN

DN

node1 是namenode, node2是secondary namenode, node1~node3同时也是datanode

1 克隆节点

参考文章


克隆出3个节点node1,node2,node3

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别

2 配置网络

2.1 修改网卡配置

vim /etc/sysconfig/network-scripts/ifcfg-ens33

删除uuid,修改ip

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_02


删除70-persistent-net.rules,centos7的话没有就不用删除

rm -rf /etc/udev/rules.d/70-persistent-net.rules

2.2 修改host文件

vim /etc/hosts

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_03

3 安装JDK

3.1 上传安装包

在家目录创建两个文件夹installpkgs放安装包,app放解压出来的东西

cd ~
mkdir installpkgs
mkdir app

推荐使用xftp,winscp,filezilla等ftp工具

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_04

3.2 解压

tar zxvf jdk-8u231-linux-x64.tar.gz -C ~/app

重命名JDK包好记点

cd ~/app
 mv jdk1.8.0_231/ JDK8

3.3 配置环境变量

vim .bash_profile

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_05


使配置立即生效

source .bash_profile

3.4 配置host文件

vim /etc/hosts

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_06


node2,node3 同理

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_07

3.5 免密登陆

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node3

hadoop 和 HDP区别 hadoop2和hadoop3_vim_08


这个ssh-copy-id 命令能直接在被登录的主机用户目录下自动创建.ssh目录,及authorized_keys文件

hadoop 和 HDP区别 hadoop2和hadoop3_bash_09


测试免密登录

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_10

3.6 关闭防火墙

查看防火墙状态
service iptables status
停止防火墙
service iptables stop 
永久关闭防火墙
chkconfig iptables off

如果是centos7
查看防火墙状态
systemctl status firewalld.service
停止防火墙
systemctl stop firewalld.service
永久关闭防火墙
systemctl disable firewalld.service

4 安装Hadoop3

4.1 下载安装包

https://archive.apache.org/dist/hadoop/common/

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_11

4.2 上传安装包

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_12

4.3 解压,重名安装包

tar zxvf hadoop-3.1.0.tar.gz -C ~/app
cd ~/app
mv hadoop-3.1.0/ HADOOP3

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_13


hadoop 和 HDP区别 hadoop2和hadoop3_bash_14

4.4 部署和配置

4.4.1 配置HADOOP环境变量

vim ~/.bash_profile

JAVA_HOME=/root/app/JDK8
HADOOP_HOME=/root/app/HADOOP3
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

export HADOOP_HOME
export JAVA_HOME
export PATH

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_15

source ~/.bash_profile

hadoop 和 HDP区别 hadoop2和hadoop3_vim_16

4.4.2 hadoop-env.sh

cd ~/app/HADOOP3/etc/hadoop/
vim hadoop-env.sh

export JAVA_HOME=/root/app/JDK8
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root

hadoop 和 HDP区别 hadoop2和hadoop3_vim_17


hadoop3为了提升安全性,添加了HDFS_NAMENODE_USER,HDFS_DATANODE_USER,

HDFS_SECONDARYNAMENODE_USER,实际情况不能都用root,此处仅是为了方便搭建环境,进行演示

4.4.3 core-site.xml

先创建一个data目录

hadoop 和 HDP区别 hadoop2和hadoop3_bash_18

vim core-site.xml

<configuration>
   <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1:9820</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/root/app/HADOOP3/data</value>
    </property>
</configuration>

hadoop 和 HDP区别 hadoop2和hadoop3_vim_19


说明:

fs.defaultFS指定namenode地址

hadoop.tmp.dir指定元数据的存放目录

3.4.4 hdfs-site.xml

vim hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node2:9868</value>
    </property>
</configuration>

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_20

4.4.5 workers文件

hadoop 和 HDP区别 hadoop2和hadoop3_vim_21

vim workers

hadoop 和 HDP区别 hadoop2和hadoop3_vim_22

4.5 拷贝文件到从节点

4.5.1 拷贝jdk

在node1上执行

scp -r ~/app/JDK8 root@node2:/root/app/
scp -r ~/app/JDK8 root@node3:/root/app/

4.5.2 拷贝bash_profile

scp -r ~/.bash_profile root@node2:/root/.bash_profile
scp -r ~/.bash_profile root@node3:/root/.bash_profile

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_23

在node2上执行

source ~/.bash_profile

hadoop 和 HDP区别 hadoop2和hadoop3_bash_24


在node3上执行

source ~/.bash_profile

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_25

4.5.3 拷贝hadoop目录

scp -r ~/app/HADOOP3/ root@node2:/root/app/
scp -r ~/app/HADOOP3/ root@node3:/root/app/

4.6 格式化namenode

hdfs namenode -format

确认没有报错

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_26

4.7 启动

start-dfs.sh

确认启动成功

hadoop 和 HDP区别 hadoop2和hadoop3_vim_27


hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_28


hadoop 和 HDP区别 hadoop2和hadoop3_vim_29

4.8 测试访问

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_30

5 HDFS HA高可用

之前只有一个NN,万一挂了就都跪了,高可用就是准备多个NN,一个active,一个standby。
环境节点配置

node1

node2

node3

NN

NN


ZKFC


ZKFC

JN

JN

JN

ZK

ZK

ZK

DN

DN

DN

NN:namenode 一个active,一个standby
zkfc:负责监控NN的状态,万一挂了,就把standby切换为active
JN:journal node负责存放两个NN的公共的edits等元数据
DN:datanode 用来存实际的数据块
ZK:zookeeper节点,zkfc节点把监控NN的心跳数据发送给zk,如果NN挂了,zk会进行选举

5.1 配置Zookeeper

a) 从官网或者附件下载链接中下载zookeeper

b) 上传到linux

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_31


c) 解压

cd ~/installpkgs
 tar zxvf zookeeper-3.4.6.tar.gz -C ~/app

5.1.1 修改zk配置文件zoo.cfg

# 创建一个存放数据的data目录
mkdir /root/app/zookeeper-3.4.6/data

# 拷贝一份配置文件
cp ~/app/zookeeper-3.4.6/conf/zoo_sample.cfg ~/app/zookeeper-3.4.6/conf/zoo.cfg

# 编辑配置文件
vim ~/app/zookeeper-3.4.6/conf/zoo.cfg

hadoop 和 HDP区别 hadoop2和hadoop3_vim_32

5.1.2 创建myid文件

cd /root/app/zookeeper-3.4.6/data
echo 1 > myid
more myid

hadoop 和 HDP区别 hadoop2和hadoop3_vim_33

5.1.3 拷贝zk到其他节点

scp -r ~/app/zookeeper-3.4.6/ node2:/root/app/
  scp -r ~/app/zookeeper-3.4.6/ node3:/root/app/
vim myid
 more myid

node2,node3的myid修改下

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_34


hadoop 和 HDP区别 hadoop2和hadoop3_vim_35

5.1.4 配置环境变量

为了方便启动zk,加个环境变量,node2,node3同理

vim ~/.bash_profile
source ~/.bash_profile

scp ~/.bash_profile node3:/root/.bash_profile
scp ~/.bash_profile node3:/root/.bash_profile

hadoop 和 HDP区别 hadoop2和hadoop3_vim_36


hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_37


hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_38


hadoop 和 HDP区别 hadoop2和hadoop3_bash_39

5.1.5 记得关闭防火墙

# centos7
# 查看防火墙状态
systemctl status firewalld.service
# 停止防火墙
systemctl stop firewalld.service
# 永久关闭防火墙
systemctl disable firewalld.service

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_40


node3 同理关闭

5.1.6 启动zk

zkServer.sh start

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_41


hadoop 和 HDP区别 hadoop2和hadoop3_bash_42


hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_43

5.2 Hadoop配置文件

5.2.1 hadoop-env.sh

cd ~/app/HADOOP3/etc/hadoop/
vim hadoop-env.sh

export JAVA_HOME=/root/app/JDK8
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root

hadoop 和 HDP区别 hadoop2和hadoop3_vim_44


hadoop 和 HDP区别 hadoop2和hadoop3_vim_45

5.2.2 core-site.xml

vim core-site.xml

<configuration>
   <property>
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/root/app/HADOOP3/data</value>
    </property>
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>node1:2181,node2:2181,node3:2181</value>
    </property>
</configuration>

hadoop 和 HDP区别 hadoop2和hadoop3_bash_46


hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_47

  • fs.defaultFS 默认文件系统的

5.2.3 hdfs-site.xml

vim hdfs-site.xml

<configuration>
    <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>node1:8020</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>node2:8020</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn1</name>
        <value>node1:9870</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <value>node2:9870</value>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://node1:8485;node2:8485;node3:8485/wen</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
            shell(/bin/true)
        </value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/opt/journalnode/data</value>
    </property>
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
</configuration>

5.2.4 workers

vim workers

node1
node2
node3

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_48


hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_49

5.3 复制文件到其他节点

scp hadoop-env.sh root@node2:/root/app/HADOOP3/etc/hadoop/
scp hadoop-env.sh root@node3:/root/app/HADOOP3/etc/hadoop/

scp core-site.xml root@node2:/root/app/HADOOP3/etc/hadoop/
scp core-site.xml root@node3:/root/app/HADOOP3/etc/hadoop/

scp hdfs-site.xml root@node2:/root/app/HADOOP3/etc/hadoop/
scp hdfs-site.xml root@node3:/root/app/HADOOP3/etc/hadoop/

scp workers root@node2:/root/app/HADOOP3/etc/hadoop/
scp workers root@node3:/root/app/HADOOP3/etc/hadoop/

hadoop 和 HDP区别 hadoop2和hadoop3_vim_50


hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_51

5.4 免密登录

之前node1可以免密登录其他节点,现在node2也做一个免密登录

ssh-keygen

ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node3

hadoop 和 HDP区别 hadoop2和hadoop3_vim_52

5.5 启动journalnode

hdfs --daemon start journalnode

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_53


hadoop 和 HDP区别 hadoop2和hadoop3_vim_54


hadoop 和 HDP区别 hadoop2和hadoop3_bash_55

5.6 格式化namenode

hdfs namenode -format

hadoop 和 HDP区别 hadoop2和hadoop3_vim_56

5.7 复制元数据到另一个NN上

我们在node1上进行格式化,因为node2也是NN,所以需要把元数据复制一份到node2上

cd /root/app/HADOOP3
scp -r data root@node2:/root/app/HADOOP3/

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_57

5.8 格式化ZKFC

hdfs zkfc -formatZK

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_58

5.9 启动集群

start-dfs.sh

hadoop 和 HDP区别 hadoop2和hadoop3_bash_59


hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_60


hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_61

5.10 浏览器测试

node1

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_62

node2

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop 和 HDP区别_63

5.11 高可用测试

kill -9 [active namenode的pid]

干掉active的node2后,node1成为active

hadoop 和 HDP区别 hadoop2和hadoop3_hadoop_64


hadoop 和 HDP区别 hadoop2和hadoop3_bash_65

附件安装介质下载

链接:https://pan.baidu.com/s/1DlB5NuVJWBYjPa1FzNxx4A 提取码:8ko9