您的位置:首页 > 大数据 > Hadoop

hadoop-3.0.0完整版HA部署

2020-07-13 05:54 309 查看

一、环境准备:
Linux7.2

hadoop-3.0.0.tar.gz

JDK1.8

二、下载源
hadoop3.0.0下载地址:https://archive.apache.org/dist/hadoop/common/

zookeeper-3.4.5下载地址:https://archive.apache.org/dist/zookeeper/

jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html

三、JDK安装(所有节点)
3.1 (创建jdk存放目录)
mkdir -p /usr/java

3.2 解压
tar -zxvf hadoop-3.0.0.tar.gz -C /opt

三、安装zookeeper
3.1 解压
tar -zxvf zookeeper-3.4.5.tar.gz -C /opt

cd /opt

mv zookeeper-3.4.5/ zookeeper

3.2 配置zoo.cfg
mkdir -p /opt/zookeeper/data

mkdir -p /opt/zookeeper/logs

cd /opt/zookeeper/conf/

mv zoo_sample.cfg zoo.cfg

vi zoo.cfg

//设置数据及日志存放位置

dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/logs

//省略其他内容。在zoo.cfg最末尾添加ZK集群信息

server.1=node1:2888:3888

server.2=node2:2888:3888

server.3=node3:2888:3888

echo ‘1’ > /opt/zookeeper/data/myid

3.3 zookeeper分发
scp -r zookeeper/ node02:$PWD

echo ‘2’ > /opt/zookeeper/data/myid

scp -r zookeeper/ node03:$PWD

echo ‘3’ > /opt/zookeeper/data/myid

3.4 验证
cd /opt/zookeeper

./bin/zkServer.sh start

四、hadoop安装

4.1 解压hadoop安装包
tar -zxvf hadoop-3.0.0.tar.gz -C /opt/

cd /opt

mv hadoop-3.0.0/ hadoop

4.2 配置hadoop环境变量(所有节点)
source /etc/profile

hadoop

export HADOOP_HOME=/opt/hadoop
export PATH=PATH:PATH:PATH:HADOOP_HOME/sbin:$HADOOP_HOME/bin

4.3 配置hadoop-env.sh、yarn-env.sh
进入/opt/hadoop目录下面,用vi编辑器打开etc/hadoop/hadoop-env.sh,在hadoop-env.sh末尾添加如下内容:

cd /opt/hadoop/etc/hadoop/

vi hadoop-env.sh

set to the root of my java installation

export JAVA_HOME=/usr/java/jdk1.8.0_162

cd /opt/hadoop-3.0.0/etc/hadoop/

vi yarn-env.sh

some Java parameters

export JAVA_HOME=/usr/java/jdk1.8.0_162

4.4 配置core-site.xml
进入/opt/hadoop目录下面,用vi编辑器打开etc/hadoop/core-site.xml,在core-site.xml的标签对之间添加如下内容:

fs.defaultFS hdfs://hdfscluster hadoop.tmp.dir /opt/hadoop-3.0.0/tmp fs.trash.interval 1440 ha.zookeeper.quorum node01:2181,node02:2181,node03:2181

4.5 配置hdfs-site.xml
进入/opt/hadoop目录下面,用vi编辑器打开etc/hadoop/hdfs-site.xml,在hdfs-site.xml的标签对之间添加如下内容:

dfs.nameservices hdfscluster 指定hdfs的nameservice为hdfscluster,需要和core-site.xml中的保持一致 dfs.ha.namenodes.hdfscluster nn1,nn2 hdfscluster下面有两个NameNode,分别是nn1,nn2 dfs.namenode.rpc-address.hdfscluster.nn1 node01:8020 nn1的RPC通信地址 dfs.namenode.rpc-address.hdfscluster.nn2 node02:8020 nn2的RPC通信地址 dfs.namenode.http-address.hdfscluster.nn1 node01:50070 nn1的http通信地址 dfs.namenode.http-address.hdfscluster.nn2 node02:50070 nn2的http通信地址 dfs.namenode.shared.edits.dir qjournal://node01:8485;node02:8485;node03:8485/hdfscluster 指定NameNode的元数据在JournalNode上的存放位置 dfs.journalnode.edits.dir /opt/hadoop-3.0.0/datas/journal 新建目录,用于设置journalnode节点保存本地状态的目录,指定journalnode日志文件存储的路径 dfs.client.failover.proxy.provider.hdfscluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider 配置失败自动切换实现方式,指定HDFS客户端连接active namenode的java类 dfs.ha.fencing.methods sshfence 配置隔离机制为ssh dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa 使用隔离机制时需要ssh免密码登陆,指定秘钥的位置 dfs.ha.automatic-failover.enabled true 指定支持高可用自动切换机制,开启自动故障转移 ha.zookeeper.quorum node01:2181,node02:2181,node03:2181 指定zookeeper地址 dfs.replication 2 指定数据冗余份数 dfs.namenode.name.dir file:///opt/hadoop-3.0.0/datas/namenode 新建name文件夹,指定namenode名称空间的存储地址 dfs.datanode.data.dir file:///opt/hadoop-3.0.0/datas/datanode 新建data文件夹,指定datanode数据存储地址 dfs.webhdfs.enabled ture 指定可以通过web访问hdfs目录 ha.zookeeper.session-timeout.ms 20000

mkdir -p /opt/hadoop-3.0.0/datas/journal

mkdir -p /opt/hadoop-3.0.0/datas/namenode

mkdir -p /opt/hadoop-3.0.0/datas/datanode

4.6 mapred-site.xml
这个配置文件本来是不存在的,但是有一个名为mapred-site.xml.template的模板文件,执行mv mapred-site.xml.template mapred-site.xml复制重命名一份就行了

mapreduce.framework.name yarn mapreduce.jobhistory.address node01:10020 mapreduce.jobhistory.webapp.address node02:19888 mapreduce.application.classpath /opt/hadoop-3.0.0/etc/hadoop, /opt/hadoop-3.0.0/share/hadoop/common/*, /opt/hadoop-3.0.0/share/hadoop/common/lib/*, /opt/hadoop-3.0.0/share/hadoop/hdfs/*, /opt/hadoop-3.0.0/share/hadoop/hdfs/lib/*, /opt/hadoop-3.0.0/share/hadoop/mapreduce/*, /opt/hadoop-3.0.0/share/hadoop/mapreduce/lib/*, /opt/hadoop-3.0.0/share/hadoop/yarn/*, /opt/hadoop-3.0.0/share/hadoop/yarn/lib/*

4.7 yarn-site.xml

yarn.nodemanager.aux-services mapreduce_shuffle NodeManager上运行的附属服务,需配置成mapreduce_shuffle才可运行MapReduce yarn.resourcemanager.ha.enabled true 开启YARN HA yarn.resourcemanager.ha.automatic-failover.enabled true 启用自动故障转移 yarn.resourcemanager.cluster-id yarncluster 指定YARN HA的名称 yarn.resourcemanager.ha.rm-ids rm1,rm2 指定两个resourcemanager的名称 yarn.resourcemanager.hostname.rm1 node01 配置rm1的主机 yarn.resourcemanager.hostname.rm2 node02 配置rm2的主机 yarn.resourcemanager.ha.id rm1 namenode1上配置rm1,在namenode2上配置rm2 yarn.resourcemanager.zk-address node01:2181,node02:2181,node03:2181 配置zookeeper的地址 yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore 配置resourcemanager的状态存储到zookeeper中 yarn.resourcemanager.webapp.address.rm1 node01:8088 yarn.resourcemanager.webapp.address.rm2 node02:8088

4.8 安装包分发
cd /opt

scp -r hadoop-3.0.0/ node02:$PWD

scp -r hadoop-3.0.0/ node03:$PWD

五、启动hadoop
5.1 启动journalnode
cd /opt/hadoop/sbin

./hadoop-daemons.sh start journalnode

5.2 格式化namenode

node01和node02计划启动namenode,node01作为主,在node01上格式化:

cd /opt/hadoop/bin/

./hdfs namenode -format

5.3 格式化zk

在node1上执行命令

./hdfs zkfc -formatZK

执行完成后,会在zookeeper 上创建一个目录,查看是否创建成功:
进入cd /opt/zookeeper/bin/目录,执行

./zkCli.sh

在ZK客户端的shell命令行查看:

ls /

[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper, hadoop-ha]

出现hadoop-ha即表示成功。

5.4 启动主namenode

node01执行.

./hadoop-daemon.sh start namenode

备用NN 同步主NN信息
node02是从node01的namenode同步数据。

在node02上执行

./hdfs namenode -bootstrapStandby

5.5 启动hadoop集群

由于上面我们启动了namenode,这里先将其关闭:在node01上执行

./stop-dfs.sh

在主节点NameNode(node01)启动集群

./start-dfs.sh

该命令会在主和备NN上启动ZKFC守护进程
此时node2机器上也有DFSZKFailoverController服务

5.6 查看各节点进程jps
namenode1和namenode2如下图:

zk辅助节点进程如下图:

datanode节点进程如下图:

5.7 web页面查看
node01:50070

node02:50070

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: