西宁网站设计公司价格,设计网站意味着什么,北京高端商场,做网站放到百度上需要什么HA概述
#xff08;1#xff09; 所谓HA#xff08;High Availablity#xff09;,即高可用#xff08;7*24小时不中断服务#xff09;。
#xff08;2#xff09; 实现高可用最关键的策略是消除单点故障#xff0c;HA严格来说应该分为各个组件的HA机制#xff0c;H…
HA概述
1 所谓HAHigh Availablity,即高可用7*24小时不中断服务。
2 实现高可用最关键的策略是消除单点故障HA严格来说应该分为各个组件的HA机制HDFS的HA和YARN的HA。
3 NameNode主要在以下两个方面影响HDFS集群 NameNode机器发生意外如宕机集群将无法使用直到管理员重启 NameNode机器需要升级包括软件、硬件省级此时集群也将无法使用
HDFS HA功能通过配置多个NameNodeActive/Standby实现在集群中对NameNode的热备来解决上述问题。如果出现故障如机器崩溃或机器需要升级这时课通过此方式将NameNode很快的切换到另一台机器
环境准备
参考这篇文章大数据职业技能竞赛模块A环境搭建
没特别声明一律按在master上操作
Hadoop HA安装配置
本任务需要使用root用户完成相关配置安装Hadoop需要配置前置环境。命令中要求使用绝对路径具体要求如下:
1、 从宿主机/opt目录下将文件hadoop-3.1.3.tar.gz、jdk-8u212-linux-x64.tar.gzapache-zookeeper-3.5.7-bin.tar.gz复制到容器Master中的/opt/software路径中若路径不存在则需新建分别将Master节点Hadoop、Zookeeper、JDK安装包解压到/opt/module路径中(若路径不存在则需新建)其中将JDK、Hadoop解压命令复制并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下
第一步从宿主机/opt目录下将文件hadoop-3.1.3.tar.gz、jdk-8u212-linux-x64.tar.gzapache-zookeeper-3.5.7-bin.tar.gz复制到容器Master中的/opt/software路径中若路径不存在则需新建
在宿主机(Bigdata)中复制到master里
docker cp /opt/jdk-8u212-linux-x64.tar.gz master:/opt/software
docker cp /opt/hadoop-3.1.3.tar.gz master:/opt/software
docker cp /opt/apache-zookeeper-3.5.7-bin.tar.gz master:/opt/software
第二步分别将Master节点Hadoop、Zookeeper、JDK安装包解压到/opt/module路径中(若路径不存在则需新建)
在master中解压
tar zxvf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module/
tar zxvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module/
tar zxvf /opt/software/apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
重命名一下
mv /opt/module/jdk1.8.0_212 /opt/module/java
mv /opt/module/hadoop-3.1.3 /opt/module/hadoop
mv /opt/module/apache-zookeeper-3.5.7-bin /opt/module/zookeepe
2、 请完成host相关配置将三个节点分别命名为master、slave1、slave2并做免密登录修改容器中/etc/profile文件设置JDK环境变量并使其生效分发jdk至slave1、slave2中均配置完毕后在Master节点分别执行“java -version”和“javac”命令将命令行执行结果分别截图并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下
第一步完成host相关配置
下面的映射关系写到这个文件里 /etc/hosts三个节点都要添加
192.168.100.101 master
192.168.100.102 slave1
192.168.100.103 slave2 前面是ip后面是主机名根据自己的修改
第二步将三个节点分别命名为master、slave1、slave2并做免密登录
修改主机名如果修改好的可以跳过这步
master
hostnamectl set-hostname master
slave1
hostnamectl set-hostname slave1
slave2
hostnamectl set-hostname slave2
免密登录三个节点都要这样操作 生成密钥 在每台主机输入 ssh-keygen 然后一直敲回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:a5KqXjGa6r1CO1pe9cG9bR3Pp2om6BstpOB9l6SW24E rootmaster
The keys randomart image is:
---[RSA 2048]----
| |
| |
| |
| . . |
| . S o . |
| . * O . |
|. E.* o . |
| B.o . .*.oo ..|
|o*o ...... |
----[SHA256]-----
复制密钥
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
第三步修改容器中/etc/profile文件设置JDK环境变量并使其生效
在/etc/profile文件末尾写环境变量
#JAVA_HOME
export JAVA_HOME/opt/module/java
#HADOOP_HOME
export HADOOP_HOME/opt/module/hadoop
#zOOKEEPER_HOME
export ZOOKEEPER_HOME/opt/module/zookeeper#PATH
export PATH$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin
使环境变量生效
source /etc/profile
四步分发jdk至slave1、slave2中
复制jdk到slave1、slave2
scp -rq /opt/module/java slave1:/opt/module/
scp -rq /opt/module/java slave2:/opt/module/
复制环境变量
scp /etc/profile slave1:/etc/profile
scp /etc/profile slave2:/etc/profile
第五步均配置完毕后在Master节点分别执行“java -version”和“javac”命令
输入 java -version
java -version 输入 javac 3、 配置好zookeeper其中zookeeper使用集群模式分别在master、slave1、slave2作为其集群的节点使用zkServer.sh status获取zookeeper服务端状态将命令和结果截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下注只截取三个节点中zookeeper server角色模式为leader的节点
第一步配置好zookeeper其中zookeeper使用集群模式master、slave1、slave2作为其集群的节点 修改文件名称
mv /opt/module/zookeeper/conf/zoo_sample.cfg /opt/module/zookeeper/conf/zoo.cfg 配置zoo.cfg
vi /opt/module/zookeeper/conf/zoo.cfg
dataDir/opt/module/zookeeper/data
datdLogDir/opt/module/zookeeper/logsserver.1master:2888:3888
server.2slave1:2888:3888
server.3slave2:2888:3888 代码位置如图 创建目录
mkdir /opt/module/zookeeper/data
mkdir /opt/module/zookeeper/logs 添加myid文件到data里里面就填一个数字master填1slave1填2slave2填2
vi /opt/module/zookeeper/data/myid 把配置好的zookeeper分发到子节点去
scp -r /opt/module/zookeeper slave1:/opt/module/
scp -r /opt/module/zookeeper slave2:/opt/module/ 修改子节点的myid
vi /opt/module/zookeeper/data/myid 启动zookeeper集群(三个节点都要启动)
zkServer.sh start
第二步使用zkServer.sh status获取zookeeper服务端状态
查看集群状态
zkServer.sh status 4、 配置好Hadoop HA请将dfs.ha.namenodes.hadoopcluster设置为nn1、nn2同时yarn.resourcemanager.ha.rm-ids设置为rm1、rm2并在Master启动nn1与rm1在slave1启动nn2与rm2将master、slave1、slave2均作为datanode分发hadoop至slave1、slave2中启动yarn与hdfs的HA集群Hadoop HA集群并在Master节点上使用命令分别查看服务nn2与rm2进程状态并将查看命令及结果截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下
第一步配置好Hadoop HA
将dfs.ha.namenodes.hadoopcluster设置为nn1、nn2同时yarn.resourcemanager.ha.rm-ids设置为rm1、rm2并在Master启动nn1与rm1在slave1启动nn2与rm2将master、slave1、slave2均作为datanode
core-site.xml vi /opt/module/hadoop/etc/hadoop/core-site.xml !-- 指定NameNode的地址 --propertynamefs.defaultFS/namevaluehdfs://hadoopcluster/value/property!-- 指定hadoop数据的存储目录 --propertynamehadoop.tmp.dir/namevalue/opt/module/hadoop/data/value/property!-- 指定zkfc链接的zkServer地址-- propertynameha.zookeeper.quorum/namevaluemaster:2181,slave1:2181,slave2:2181/value/property
hdfs-site.xml
vi /opt/module/hadoop/etc/hadoop/hdfs-site.xml !--完全分布式集群名称 --propertynamedfs.nameservices/namevaluehadoopcluster/value/property!--集群中NameNode节点 --propertynamedfs.ha.namenodes.hadoopcluster/namevaluenn1,nn2/value/property!--NameNode存储目录--propertynamedfs.namenode.name.dir/namevaluefile://${hadoop.tmp.dir}/name/value/property!--DataNode存储目录 --propertynamedfs.datanode.data.dir/namevaluefile://${hadoop.tmp.dir}/data/value/property!--JournalNode存储目录 --propertynamedfs.journalnode.edits.dir/namevalue${hadoop.tmp.dir}/jn/value/property!--NameNode的RPC通信地址--propertynamedfs.namenode.rpc-address.hadoopcluster.nn1/namevaluemaster:8020/value/propertypropertynamedfs.namenode.rpc-address.hadoopcluster.nn2/namevalueslave1:8020/value/property!--NameNode的http通信地址--propertynamedfs.namenode.http-address.hadoopcluster.nn1/namevaluemaster:9870/value/propertypropertynamedfs.namenode.http-address.hadoopcluster.nn2/namevalueslave1:9870/value/property!--NameNode元数据在JournalNode上的存放位置 --propertynamedfs.namenode.shared.edits.dir/namevalueqjournal://master:8485;slave1:8485;slave2:8485/hadoopcluster/value/property!--访问代理类client用于确定哪个NmaeNode为Active--propertynamedfs.client.failover.proxy.provider.hadoopcluster/namevalueorg.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider/value/property!--配置隔离机制即同一时刻只能有一台服务器对外相应--propertynamedfs.ha.fencing.methods/namevaluesshfence/value/property!--使用隔离机制时需要ssh密钥登录 --propertynamedfs.ha.fencing.ssh.private-key-files/namevalue/root/.ssh/id_rsa/value/property
yarn-site.xml
vi /opt/module/hadoop/etc/hadoop/yarn-site.xml !-- 启用 NodeManager 的辅助服务用于支持 MapReduce 程序的 Shuffle 操作 --propertynameyarn.nodemanager.aux-services/namevaluemapreduce_shuffle/value/property!-- 启用 ResourceManager 的高可用 (HA) 功能 --propertynameyarn.resourcemanager.ha.enabled/namevaluetrue/value/property!-- 指定集群的唯一标识符多个 ResourceManager 应归属于同一个集群 --propertynameyarn.resourcemanager.cluster-id/namevaluecluster-yarn1/value/property!-- 定义 HA 模式下的 ResourceManager 标识符列表 --propertynameyarn.resourcemanager.ha.rm-ids/namevaluerm1,rm2/value/property!-- 配置第一个 ResourceManager 的主机名 --propertynameyarn.resourcemanager.hostname.rm1/namevaluemaster/value/property!-- 配置第一个 ResourceManager 的 Web 管理页面地址 --propertynameyarn.resourcemanager.webapp.address.rm1/namevaluemaster:8088/value/property!-- 配置第一个 ResourceManager 的客户端通信地址 --propertynameyarn.resourcemanager.address.rm1/namevaluemaster:8032/value/property!-- 配置第一个 ResourceManager 的调度器通信地址 --propertynameyarn.resourcemanager.scheduler.address.rm1/namevaluemaster:8030/value/property!-- 配置第一个 ResourceManager 的资源跟踪器通信地址 --propertynameyarn.resourcemanager.resource-tracker.address.rm1/namevaluemaster:8031/value/property!-- 配置第二个 ResourceManager 的主机名 --propertynameyarn.resourcemanager.hostname.rm2/namevalueslave1/value/property!-- 配置第二个 ResourceManager 的 Web 管理页面地址 --propertynameyarn.resourcemanager.webapp.address.rm2/namevalueslave1:8088/value/property!-- 配置第二个 ResourceManager 的客户端通信地址 --propertynameyarn.resourcemanager.address.rm2/namevalueslave1:8032/value/property!-- 配置第二个 ResourceManager 的调度器通信地址 --propertynameyarn.resourcemanager.scheduler.address.rm2/namevalueslave1:8030/value/property!-- 配置第二个 ResourceManager 的资源跟踪器通信地址 --propertynameyarn.resourcemanager.resource-tracker.address.rm2/namevalueslave1:8031/value/property!-- 配置用于存储 YARN HA 元数据的 ZooKeeper 地址 --propertynameyarn.resourcemanager.zk-address/namevaluemaster:2181,slave1:2181,slave2:2181/value/property!-- 启用 ResourceManager 的恢复功能 --propertynameyarn.resourcemanager.recovery.enabled/namevaluetrue/value/property!-- 配置 ResourceManager 的状态存储类为 ZKRMStateStore用于 HA 模式 --propertynameyarn.resourcemanager.store.class/namevalueorg.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore/value/property!-- 配置 NodeManager 允许的环境变量白名单 --propertynameyarn.nodemanager.env-whitelist/namevalueJAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME/value/propertymapred-site.xml
vi /opt/module/hadoop/etc/hadoop/mapred-site.xml
!-- 指定MapReduce程序运行在Yarn上 --propertynamemapreduce.framework.name/namevalueyarn/value/property
hadoop-env.sh
vi /opt/module/hadoop/etc/hadoop/hadoop-env.sh
把下面代码复制到这个文件末尾
export JAVA_HOME/opt/module/java
export HDFS_NAMENODE_USERroot
export HDFS_DATANODE_USERroot
export HDFS_SECONDARYNAMENODE_USERroot
export YARN_RESOURCEMANAGER_USERroot
export YARN_NODEMANAGER_USERroot
export HDFS_JOURNALNODE_USERroot
export HDFS_ZKFC_USERroot
workers
vi /opt/module/hadoop/etc/hadoop/workers
localhost删除这个填下面的代码
master
slave1
slave2
分发到集群去
scp -rq /opt/module/hadoop slave1:/opt/module/
scp -rq /opt/module/hadoop slave2:/opt/module/
在三节点上输入以下命令启动journalnode服务 [rootmaster ~]# hdfs --daemon start journalnode [rootslave1 ~]# hdfs –-daemon start journalnode [rootslave2 ~]# hdfs –-daemon start journalnode 初始化 HDFS
master
hdfs zkfc -formatZK
hdfs namenode -format
slave1
hdfs zkfc -formatZK
hdfs namenode -bootstrapStandby
第二步启动yarn与hdfs的HA集群Hadoop HA集群
启动 HDFS
start-dfs.sh 启动 YARN
start-yarn.sh 将nn1切换为Active
hdfs haadmin -transitionToActive nn1
查看nn1是否Active
hdfs haadmin -getServiceState nn1 第三步在Master节点上使用命令分别查看服务nn2与rm2进程状态
查看服务nn2进程状态
hdfs haadmin -getServiceState nn2 查看服务rm2进程状态
yarn rmadmin -getServiceState rm2 5、 Hadoop HA配置并启动完毕后使用jps在slave1节点查看服务进程将查看命令及结果截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下。
第一步使用jps在slave1节点查看服务进程 END
一键三连是我写文章的动力
声明此文章为个人学习笔记如文章有问题欢迎留言探讨也希望您的指正