什么是伪静态网站,做兼职的设计网站有哪些工作内容,免费咨询电脑维修,哈尔滨app网站开发文章目录 前言一、部署规划二、Hadoop HA集群部署#xff08;手动部署#xff09;1. 下载hadoop2. 上传安装包2. 解压hadoop安装包3. 配置hadoop配置文件3.1 虚拟机hadoop1修改hadoop配置文件3.1.1 修改 hadoop-env.sh 配置文件3.3.2 修改 core-site.xml 配置文件3.3.3 修改 … 文章目录 前言一、部署规划二、Hadoop HA集群部署手动部署1. 下载hadoop2. 上传安装包2. 解压hadoop安装包3. 配置hadoop配置文件3.1 虚拟机hadoop1修改hadoop配置文件3.1.1 修改 hadoop-env.sh 配置文件3.3.2 修改 core-site.xml 配置文件3.3.3 修改 hdfs-site.xml 配置文件3.3.4 修改 mapred-site.xml 配置文件3.3.5 修改 yarn-site.xml 配置文件3.3.6 修改 workers 配置文件 3.2 虚拟机hadoop2安装并配置hadoop3.3 虚拟机hadoop3安装并配置hadoop 4. 配置hadoop环境变量4.1 配置虚拟机hadoop1的hadoop环境变量4.2 配置虚拟机hadoop2的hadoop环境变量4.3 配置虚拟机hadoop3的hadoop环境变量 三、启动过程1. 启动zookeeper2. 启动JournalNode3. 格式化HDFSHadoop分布式文件系统4. FSImage文件同步5. 格式化ZKFC6. hadoop集群启动和停止6.1 启动 hadoop HA 集群6.2 停止 hadoop HA 集群 四、测试NameNode和ResourceManager的主备切换1. 启动 hadoop HA 集群 2. 通过服务ID查看NameNode和ResourceManager的状态2.1 查看NameNode的状态2.2 查看ResourceManager的状态3. 测试主备切换3.1 查看NameNode的状态3.2 查看ResourceManager的状态 注意 前言
在当今大数据时代Hadoop作为一种强大的分布式计算框架广泛应用于海量数据的存储与处理。为了确保系统的高可用性和可靠性Hadoop引入了高可用性HA架构通过部署多个NameNode和ResourceManager实现故障转移和负载均衡。本篇文章将详细介绍如何在虚拟机环境中手动部署Hadoop高可用集群包括环境准备、配置文件修改、服务启动与测试等步骤。通过本指南读者将能够掌握Hadoop HA集群的搭建过程为后续的大数据应用打下坚实的基础。 一、部署规划
虚拟机Name NodeData NodeResource ManagerNode ManagerJournal NodeQuorumPeer MainZKFChadoop1√√√√√√√hadoop2√√√√√√√hadoop3√√√√
二、Hadoop HA集群部署手动部署
1. 下载hadoop
点击下载hadoop3.3.0安装包https://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
2. 上传安装包
通过拖移的方式将下载的hadoop安装包hadoop-3.3.0.tar.gz上传至虚拟机hadoop1的/export/software目录。 2. 解压hadoop安装包
在虚拟机hadoop1创建Hadoop HA的安装目录。
mkdir -p /export/servers/hadoop-HA在虚拟机hadoop1上传完成后将hadoop安装包通过解压方式安装至/export/servers/hadoop-HA目录。
tar -zxvf /export/software/hadoop-3.3.0.tar.gz -C /export/servers/hadoop-HA/解压完成如下图所示。 3. 配置hadoop配置文件
3.1 虚拟机hadoop1修改hadoop配置文件
3.1.1 修改 hadoop-env.sh 配置文件
在虚拟机hadoop1修改hadoop运行时环境变量配置文件/export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hadoop-env.sh使用echo命令向hadoop-env.sh文件追加如下内容。
echo /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo export JAVA_HOME/export/servers/jdk1.8.0_421 /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo export HDFS_NAMENODE_USERroot /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo export HDFS_DATANODE_USERroot /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo export HDFS_SECONDARYNAMENODE_USERroot /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo export YARN_RESOURCEMANAGER_USERroot /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo export YARN_NODEMANAGER_USERroot /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo export HDFS_JOURNALNODE_USERroot /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo export HDFS_ZKFC_USERroot /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hadoop-env.sh查看文件内容是否添加成功。
cat /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hadoop-env.sh3.3.2 修改 core-site.xml 配置文件
在虚拟机hadoop1修改hadoop核心配置文件/export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/core-site.xml使用echo命令把配置内容重定向并写入到 /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/core-site.xml 文件。
cat /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/core-site.xml EOF
?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?configuration!-- 指定HDFS的通信地址 --propertynamefs.defaultFS/namevaluehdfs://ns1/value/property!-- 指定Hadoop临时数据的存储目录 --propertynamehadoop.tmp.dir/namevalue/export/data/hadoop-HA/hadoop//value/property!-- 配置ZooKeeper集群的地址列表用于Hadoop高可用性(HA) --propertynameha.zookeeper.quorum/namevaluehadoop1:2181,hadoop2:2181,hadoop3:2181/value/property!-- 设置访问Hadoop Web界面时使用的静态用户名 --propertynamehadoop.http.staticuser.user/namevalueroot/value/property!-- 允许root用户代理任何主机上的请求指定了哪些主机可以作为代理用户来提交作业 --propertynamehadoop.proxyuser.root.hosts/namevalue*/value/property!-- 允许root用户代理任何组的用户 --propertynamehadoop.proxyuser.root.groups/namevalue*/value/property
/configuration
EOF3.3.3 修改 hdfs-site.xml 配置文件
在虚拟机hadoop1修改hdfs的配置文件/export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hdfs-site.xml使用cat命令把配置内容重定向并写入到 /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hdfs-site.xml 文件。
cat /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/hdfs-site.xml EOF
?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?configuration!-- 设置HDFS的副本数 --propertynamedfs.replication/namevalue3/value/property!-- NameNode的元数据存储目录 --propertynamedfs.namenode.name.dir/namevalue/export/data/hadoop/namenode/value/property!-- DataNode的数据存储目录 --propertynamedfs.datanode.data.dir/namevalue/export/data/hadoop/datanode/value/property!-- 设置命名服务的名称在 HDFS 中nameservices 是一个逻辑名称用于标识一组 NameNode 实例。它允许客户端和其他 HDFS 组件通过一个统一的名称来访问多个 NameNode从而实现高可用性。 --propertynamedfs.nameservices/namevaluens1/value/property!-- 配置高可用性NameNode --propertynamedfs.ha.namenodes.ns1/namevaluenn1,nn2/value/property!-- NameNode nn1 的 RPC 地址 --propertynamedfs.namenode.rpc-address.ns1.nn1/namevaluehadoop1:9000/value/property!-- NameNode nn1 的 HTTP 地址 --propertynamedfs.namenode.http-address.ns1.nn1/namevaluehadoop1:9870/value/property!-- NameNode nn2 的 RPC 地址 --propertynamedfs.namenode.rpc-address.ns1.nn2/namevaluehadoop2:9000/value/property!-- NameNode nn2 的 HTTP 地址 --propertynamedfs.namenode.http-address.ns1.nn2/namevaluehadoop2:9870/value/property!-- 共享edits日志的目录在 HA 配置中多个 NameNode 需要访问同一组edits日志以确保它们之间的数据一致性。 --!-- qjournal 是一种用于存储edits日志的机制。它允许多个 NameNode 通过一个共享的、可靠的日志系统来记录对文件系统的修改。qjournal 由多个 JournalNode 组成这些 JournalNode 负责接收和存储来自 NameNode 的编辑日志。 --propertynamedfs.namenode.shared.edits.dir/namevalueqjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/ns1/value/property!-- JournalNode的edits日志存储目录 --propertynamedfs.journalnode.edits.dir/namevalue/export/data/journaldata/value/property!-- 启用自动故障转移 --propertynamedfs.ha.automatic-failover.enabled/namevaluetrue/value/property!-- 配置客户端故障转移代理提供者 --propertynamedfs.client.failover.proxy.provider.ns1/namevalueorg.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider/value/property!-- 禁用权限检查 --propertynamedfs.permissions.enable/namevaluefalse/value/property!-- 配置高可用性隔离方法 --propertynamedfs.ha.fencing.methods/namevaluesshfenceshell(/bin/true)/value/property!-- SSH围栏使用的私钥文件 --propertynamedfs.ha.fencing.ssh.private-key-files/namevalue/root/.ssh/id_rsa/value/property!-- SSH连接超时时间 --propertynamedfs.ha.fencing.ssh.connect-timeout/namevalue30000/value/property
/configuration
EOF3.3.4 修改 mapred-site.xml 配置文件
在虚拟机hadoop1修改mapreduce的配置文件/export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/mapred-site.xml使用cat命令把配置内容重定向并写入到 /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/mapred-site.xml 文件。
cat /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/mapred-site.xml EOF
?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?
configuration!-- 指定MapReduce框架使用的资源管理器名称这里设置为YARN --propertynamemapreduce.framework.name/namevalueyarn/value/property!-- 设置MapReduce JobHistory服务的地址用于存储已完成作业的历史信息 --propertynamemapreduce.jobhistory.address/namevaluehadoop1:10020/value/property!-- 设置MapReduce JobHistory Web应用程序的地址可以通过浏览器访问来查看作业历史记录 --propertynamemapreduce.jobhistory.webapp.address/namevaluehadoop1:19888/value/property!-- 为MapReduce Application Master设置环境变量指定HADOOP_MAPRED_HOME路径 --propertynameyarn.app.mapreduce.am.env/namevalueHADOOP_MAPRED_HOME\${HADOOP_HOME}/value/property!-- 为Map任务设置环境变量指定HADOOP_MAPRED_HOME路径 --propertynamemapreduce.map.env/namevalueHADOOP_MAPRED_HOME\${HADOOP_HOME}/value/property!-- 为Reduce任务设置环境变量指定HADOOP_MAPRED_HOME路径 --propertynamemapreduce.reduce.env/namevalueHADOOP_MAPRED_HOME\${HADOOP_HOME}/value/property
/configuration
EOF3.3.5 修改 yarn-site.xml 配置文件
在虚拟机hadoop1修改yarn的配置文件/export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/yarn-site.xml使用cat命令把配置内容重定向并写入到 /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/yarn-site.xml 文件。
cat /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/yarn-site.xml EOF
?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?
configuration!-- 启用YARN ResourceManager的高可用性HA --propertynameyarn.resourcemanager.ha.enabled/namevaluetrue/value/property!-- 设置YARN集群的唯一标识符自定义YARN高可用集群的标识符 --propertynameyarn.resourcemanager.cluster-id/namevaluejyarn/value/property!-- 列出所有ResourceManager实例的ID指定YARN高可用集群中每个ResourceManager的唯一标识符 --propertynameyarn.resourcemanager.ha.rm-ids/namevaluerm1,rm2/value/property!-- 指定第一个ResourceManager实例rm1的主机名 --propertynameyarn.resourcemanager.hostname.rm1/namevaluehadoop1/value/property!-- 指定第二个ResourceManager实例rm2的主机名 --propertynameyarn.resourcemanager.hostname.rm2/namevaluehadoop2/value/property!-- 指定ZooKeeper服务器地址用于存储ResourceManager的状态信息 --propertynameyarn.resourcemanager.zk-address/namevaluehadoop1:2181,hadoop2:2181,hadoop3:2181/value/property!-- 配置NodeManager上的辅助服务这里设置为MapReduce shuffle服务 --propertynameyarn.nodemanager.aux-services/namevaluemapreduce_shuffle/value/property!-- 启用日志聚合功能将容器日志收集到HDFS中 --propertynameyarn.log-aggregation-enable/namevaluetrue/value/property!-- 设置日志保留时间秒这里是1天 --propertynameyarn.log-aggregation.retain-seconds/namevalue86400/value/property!-- 启用ResourceManager的恢复功能 --propertynameyarn.resourcemanager.recovery.enabled/namevaluetrue/value/property!-- 指定ResourceManager状态存储的实现类这里使用ZooKeeper作为存储 --propertynameyarn.resourcemanager.store.class/namevalueorg.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore/value/property!-- 指定第一个ResourceManager实例rm1Web应用程序的地址 --propertynameyarn.resourcemanager.webapp.address.rm1/namevaluehadoop1:8188/value/property!-- 指定第一个ResourceManager实例rm1调度器的地址 --propertynameyarn.resourcemanager.scheduler.address.rm1/namevaluehadoop1:8130/value/property!-- 指定第二个ResourceManager实例rm2Web应用程序的地址 --propertynameyarn.resourcemanager.webapp.address.rm2/namevaluehadoop2:8188/value/property!-- 指定第二个ResourceManager实例rm2调度器的地址 --propertynameyarn.resourcemanager.scheduler.address.rm2/namevaluehadoop2:8130/value/property
/configuration
EOF3.3.6 修改 workers 配置文件
在虚拟机hadoop1修改hadoop的从节点服务器配置文件/export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/workers使用cat命令把配置内容重定向并写入到 /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/workers 文件。
cat /export/servers/hadoop-HA/hadoop-3.3.0/etc/hadoop/workers EOF
hadoop1
hadoop2
hadoop3
EOF3.2 虚拟机hadoop2安装并配置hadoop
在虚拟机hadoop1远程登录到hadoop2创建hadoop高可用的安装目录使用scp命令把虚拟机hadoop1的hadoop的安装目录复制到虚拟机hadoop2的相同目录下就相当于在hadoop2安装并配置了hadoop。
ssh hadoop2 mkdir -p /export/servers/hadoop-HA exit
scp -r /export/servers/hadoop-HA/hadoop-3.3.0 hadoop2:/export/servers/hadoop-HA3.3 虚拟机hadoop3安装并配置hadoop
在虚拟机hadoop1远程登录到hadoop3创建hadoop高可用的安装目录使用scp命令把虚拟机hadoop1的hadoop的安装目录复制到虚拟机hadoop3的相同目录下就相当于在hadoop3安装并配置了hadoop。
ssh hadoop3 mkdir -p /export/servers/hadoop-HA exit
scp -r /export/servers/hadoop-HA/hadoop-3.3.0 hadoop3:/export/servers/hadoop-HA4. 配置hadoop环境变量
4.1 配置虚拟机hadoop1的hadoop环境变量
在虚拟机hadoop1使用echo命令向环境变量配置文件/etc/profile追加环境变量内容使用source命令加载环境变量配置文件然后使用echo命令打印环境变量查看环境变量是否生效。
echo /etc/profile
echo export HADOOP_HOME/export/servers/hadoop-HA/hadoop-3.3.0 /etc/profile
echo export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin /etc/profile
source /etc/profile
echo $HADOOP_HOME4.2 配置虚拟机hadoop2的hadoop环境变量
在虚拟机hadoop2使用echo命令向环境变量配置文件/etc/profile追加环境变量内容使用source命令加载环境变量配置文件然后使用echo命令打印环境变量查看环境变量是否生效。
echo /etc/profile
echo export HADOOP_HOME/export/servers/hadoop-HA/hadoop-3.3.0 /etc/profile
echo export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin /etc/profile
source /etc/profile
echo $HADOOP_HOME4.3 配置虚拟机hadoop3的hadoop环境变量
在虚拟机hadoop3使用echo命令向环境变量配置文件/etc/profile追加环境变量内容使用source命令加载环境变量配置文件然后使用echo命令打印环境变量查看环境变量是否生效。
echo /etc/profile
echo export HADOOP_HOME/export/servers/hadoop-HA/hadoop-3.3.0 /etc/profile
echo export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin /etc/profile
source /etc/profile
echo $HADOOP_HOME三、启动过程
1. 启动zookeeper 由于 Hadoop 的高可用性依赖于 ZooKeeper 来实现 HDFS 和 YARN 的高可用性因此在启动 Hadoop 之前必须确保 ZooKeeper 正常运行。 依次在虚拟机 hadoop1、hadoop2 和 hadoop3 启动 ZooKeeper并检查其状态是否正常。
zkServer.sh startzkServer.sh status2. 启动JournalNode
在格式化 Hadoop 高可用集群的 HDFS 文件系统时系统会向 Quorum Journal Manager 写入 EditLog。在首次启动之前需要在虚拟机 Hadoop1、Hadoop2 和 Hadoop3 上分别执行以下命令以启动 JournalNode。
hdfs --daemon start journalnode3. 格式化HDFSHadoop分布式文件系统
在虚拟机hadoop1执行如下命令格式化Hadoop分布式文件系统HDFS。
hdfs namenode -format格式化成功如下图所示会提示我们存储目录 /export/data/hadoop/namenode 已经成功格式化。
4. FSImage文件同步 为了确保HDFS初次启动时两个NameNode节点上的FSImage文件保持一致在虚拟机hadoop1上完成HDFS格式化后此操作仅初始化虚拟机hadoop1的NameNode并生成FSImage文件需要将生成的FSImage文件从hadoop1复制到hadoop2对应的目录中。 在虚拟机hadoop1执行如下命令把hadoop1生成的FSImage文件复制到hadoop2对应的目录。
ssh hadoop2 mkdir -p /export/data/hadoop
scp -r /export/data/hadoop/namenode hadoop2:/export/data/hadoop5. 格式化ZKFC ZKFCZooKeeper Failover Controller是Hadoop高可用性HA架构中的一个关键组件主要用于NameNode的故障转移管理。在HDFS HA配置中通常会部署两个NameNode节点来提供服务冗余其中一个处于Active状态负责处理客户端请求另一个则处于Standby状态作为备份。ZKFC的作用就是在主NameNode发生故障时自动切换到备用NameNode从而保证系统的连续性和数据的一致性。 在虚拟机hadoop1执行如下命令格式化ZKFC。
hdfs zkfc -formatZK6. hadoop集群启动和停止
6.1 启动 hadoop HA 集群
在虚拟机hadoop1执行如下命令同时启动 hdfs 高可用集群和 yarn 高可用集群。
start-all.shhadoop 高可用集群启动之后使用如下命名分别在虚拟机hadoop1、虚拟机hadoop2和虚拟机hadoop3执行如下命令查看对应进程是否正常。 jps正常如下图所示。 访问 HDFSNameNode的 Web UI 页面 在启动 hadoop 高可用集群后在浏览器输入http://192.168.121.160:9870进行访问如下图可以看到处于active活跃状态的NameNode。 在浏览器输入http://192.168.121.161:9870进行访问如下图可以看到处于standby备用状态的NameNode。 检查DataNode是否正常正常如下图所示。 访问 YARN 的 Web UI 页面 在启动hadoop集群后在浏览器输入http://192.168.121.161:8188进行访问如下图可以看到处于active活跃状态的ResourceManager。 在浏览器输入http://192.168.121.160:8188进行访问如下图可以看到处于standby备用状态的ResourceManager。 6.2 停止 hadoop HA 集群
如果需要停止 hadoop HA 集群运行在虚拟机hadoop1执行如下命令同时停止 hdfs 高可用集群和 yarn高可用集群。
stop-all.sh四、测试NameNode和ResourceManager的主备切换
1. 启动 hadoop HA 集群
在虚拟机hadoop1执行如下命令同时启动 hdfs 高可用集群和 yarn 高可用集群。
start-all.sh2. 通过服务ID查看NameNode和ResourceManager的状态
下图所示是设置的NameNode服务的ID。 2.1 查看NameNode的状态
hadoop配置中设置的nn1在hadoop1nn2在hadoop2。
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2可以看出hadoop1上的NameNode是active状态。
2.2 查看ResourceManager的状态
hadoop配置中设置的rm1在hadoop1rm2在hadoop2。
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2可以看出hadoop2上的ResourceManager是active状态。
3. 测试主备切换
根据上面得到的处于active状态的NameNode和ResourceManager的虚拟机分别在对应的虚拟机停止处于active状态的服务测试主备切换。
在虚拟机hadoop1执行如下命令停止虚拟机hadoop1的NameNode。
hdfs --daemon stop namenode在虚拟机hadoop2执行如下命令停止虚拟机hadoop2的ResourceManager。
yarn --daemon stop resourcemanager再次通过服务ID查看NameNode和ResourceManager的状态。
3.1 查看NameNode的状态
hadoop配置中设置的nn1在hadoop1nn2在hadoop2。
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2可以看出hadoop1上的NameNode已经由active状态变为不正常hadoop2上的NameNode已经由standby转为active。
3.2 查看ResourceManager的状态
hadoop配置中设置的rm1在hadoop1rm2在hadoop2。
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2可以看出hadoop2上的ResourceManager已经由active状态变为不正常hadoop1上的ResourceManager已经由standby转为active。 注意
若启动过程中出现问题需要重新执行启动过程需要删除生成的对应目录或文件。
rm -rf /export/data/hadoop-HA
rm -rf /export/data/hadoop
rm -rf /export/data/journaldata
zkCli.sh
deleteall /hadoop-ha
deleteall /rmstore
deleteall /yarn-leader-election
quit