Hadoop的HA模式搭建

准备三台虚拟机 bigdata007bigdata008bigdata009

1.前置工作

1.修改虚拟机的IP地址和hostname

 

2.配置集群中的ip映射(/etc/hosts)

192.168.111.57 bigdata007
192.168.111.58 bigdata008
192.168.111.59 bigdata009

3.关闭虚拟机的防火墙

4.集群间实现免密登录

ssh root@bigdata007ssh-keygen -t rsassh-copy-id bigdat007ssh-copy-id bigdat008ssh-copy-id bigdat009

每台虚拟机都执行类似操作

2.安装zookeeper

导入安装包,解压到/opt/softs目录

tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz  -C /opt/softs/

修改包名 mv apache-zookeeper-3.5.7-bin/ zookeeper3.5.7
cd ../

在/zookeeper3.5.7目录下创建zkData目录,

里面创建文件myid写入id

 

配置文件

进入/opt/softs/zookeeper3.5.7/conf 目录

删除log4j.properties

 上传新的

# 定义日志输出路径
log4j.appender.file.File=/opt/softs/zookeeper3.5.7/logs/zookeeper.log
# 定义日志轮循策略,按天轮循
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c{1}:%L - %m%n

重要路径


/opt/softs/zookeeper3.5.7 目录下
创建logs目录

修改文件名

zoo_sample.cfg 为 zoo.cfg
 

 

 修改zoo.cfg

添加 

 分发给其他两台虚拟机

scp -r zookeeper3.5.7/ root@bigdata008:/opt/softs/

修改各个虚拟机上的myid

配置环境变量 /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/softs/jdk1.8.0
export PATH=$PATH:$JAVA_HOME/bin#ZK_HOME
export ZK_HOME=/opt/softs/zookeeper3.5.7
export PATH=$PATH:$ZK_HOME/bin

 

记得source一下  source /etc/profile
,直接分发

​​​​​​​scp /etc/profile root@bigdata008:/etc/

添加启动脚本

创建目录 /opt/shell

导入脚本

#!/bin/bash# 在调用shell脚本时,需要传入一个参数,用于标识执行开启或者关闭zk集群的开启关闭和查询状态#判断调用shell脚本时 是否正常的传入参数#参数小于1
if [ $# -lt 1 ]
thenecho "调用该脚本时需要传入一个参数"exit ;
fi#传入的第一个参数 有三种情况
case $1 in 
"start")echo "----------启动zk集群----------"for hostname in bigdata007 bigdata008 bigdata009
doecho "-------------$hostname------------"ssh $hostname "/opt/softs/zookeeper3.5.7/bin/zkServer.sh start"done;;
"stop")echo "----------关闭hadoop集群----------"for hostname in bigdata007 bigdata008 bigdata009
doecho "-------------$hostname------------"ssh $hostname "/opt/softs/zookeeper3.5.7/bin/zkServer.sh stop"done;;	
"status")echo "----------查询zk集群状态-------------"for hostname in bigdata007 bigdata008 bigdata009
doecho "-------------$hostname------------"ssh $hostname "/opt/softs/zookeeper3.5.7/bin/zkServer.sh status"done
;;	
*)echo "输入的参数不符合脚本运行的规则,请输入start或者stop,status"
;;
esac	

将JAVA_HOME=/opt/softs/jdk1.8.0  

写入zkServer.sh

​​​​​​​ 分发给其他虚拟机

scp zkServer.sh root@bigdata008:/opt/softs/zookeeper3.5.7/bin/
 

运行sh /opt/shell/my_zk.sh start 检查脚本是否成功

2.进行集群规划

bigdata007bigdata008bigdata009
hdfsNameNode DataNodeNameNode DataNode DataNode
zk
yarnNodeManagerNodeManager,ResourceManagerNodeManager,ResourceManager

 

 3.上传hadoop安装包

解压

4.修改配置文件

进入目录
/opt/softs/hadoop3.1.3/etc/hadoop

在hadoop-env.sh 中添加

core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- hdfs地址,ha中是连接到nameservice --><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><!-- 指定hadoop数据的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/softs/hadoop3.1.3/data</value></property><!-- 故障转移 --><property><name>ha.zookeeper.quorum</name><value>bigdata007:2181,bigdata008:2181,bigdata009:2181</value></property><!-- 解决HDFS web页面上删除、创建文件权限不足的问题 --><property><name>hadoop.http.staticuser.user</name><value>root</value></property><property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property></configuration>

hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?><configuration><!-- 为namenode集群定义一个services name --><property><name>dfs.nameservices</name><value>mycluster</value></property><!-- nameservice包含哪些namenode,为各个namenode起名 --><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><!-- 名称为nn1的namenode的rpc地址和端口号,rpc用来和datanode通讯 --><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>bigdata007:8020</value></property><!-- 名称为nn2的namenode的rpc地址和端口号,rpc用来和datanode通讯  --><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>bigdata008:8020</value></property><!-- 名称为nn1的namenode的http地址和端口号,web客户端 --><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>bigdata007:50070</value></property><!-- 名称为nn2的namenode的http地址和端口号,web客户端 --><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>bigdata008:50070</value></property><!-- namenode间用于共享编辑日志的journal节点列表 -->	<property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://bigdata007:8485;bigdata008:8485;bigdata009:8485/mycluster</value></property><!-- journalnode 上用于存放edits日志的目录 --><property><name>dfs.journalnode.edits.dir</name><value>/opt/softs/hadoop3.1.3/data/dfs/jn</value></property><!-- 客户端连接可用状态的NameNode所用的代理类 --><property><name>dfs.client.failover.proxy.provider.ns1</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!--sshfence:防止namenode脑裂,当脑裂时,会自动通过ssh到old-active将其杀掉,将standby切换为active  --><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!--ssh密钥文件路径--><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property><!-- 故障转移设置为ture --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property></configuration>

mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?><configuration><!--指定mapreduce运行在yarn框架上--><property><name>mapreduce.framework.name</name><value>yarn</value></property><!--设置mapreduce的历史服务器安装在bigdata007节点上--><property><name>mapreduce.jobhistory.address</name><value>bigdata007:10020</value></property><!--设置历史服务器的web页面地址和端口号--><property><name>mapreduce.jobhistory.webapp.address</name><value>bigdata007:19888</value></property></configuration>

yarn-site.xml

<?xml version="1.0" encoding="UTF-8"?><configuration><!-- 配置yarn的默认混洗方式,选择为mapreduce的默认混洗算法 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 是否启用日志聚集功能 --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 是配置聚集的日志在HDFS上最多保存多长时间 --><property><name>yarn.log-aggregation.retain-seconds</name><value>106800</value></property><!--  启用resourcemanager的ha功能 --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!--  为resourcemanage ha集群起个id --><property><name>yarn.resourcemanager.cluster-id</name><value>yarn-cluster</value></property><!--  指定resourcemanger ha有哪些节点名 --><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!--  指定第一个节点的所在节点 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>bigdata008</value></property><!--  指定第二个节点所在机器 --><property><name>yarn.resourcemanager.hostname.rm2</name><value>bigdata009</value></property><!-- 指定resourcemanger ha所用的zookeeper节点 --><property><name>yarn.resourcemanager.zk-address</name><value>bigdata007:2181,bigdata008:2181,bigdata009:2181</value></property><!-- 开启Recovery后,ResourceManger会将应用的状态等信息保存到yarn.resourcemanager.store.class配置的存储介质中,重启后会load这些信息,并且NodeManger会将还在运行的container信息同步到ResourceManager,整个过程不影响作业的正常运行。 --><property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property><!-- 指定yarn.resourcemanager.store.class的存储介质(HA集群只支持ZKRMStateStore) --><property><name>yarn.resourcemanager.store.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value></property></configuration>

 配置运行hadoop中的works

 

​​​​​​​​​​​​​​

hadoop分发到别的目录

scp -r hadoop3.1.3/ root@bigdata008:/opt/softs/
 

再次/etc/profile 配置文件

 

#HADOOP_HOME
export HADOOP_HOME=/opt/softs/hadoop3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbinexport HADOOP_CONF_DIR=/opt/softs/hadoop3.1.3/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=rootexport YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=rootexport HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root

配置完成后,传给其他两台虚拟机上,记得source一下

NameNode初始化

1.在每个节点上启动journalnode

hadoop-daemon.sh start journalnode
 

2.在每个节点上启动zk

zkServer.sh start

3.在某一个NameNode节点(bigdata007)上对NameNode进行初始化 

hdfs namenode -format

启动NameNode并进行同步

1.在bigdata007上执行NameNode的启动

hadoop-daemon.sh start namenode

2.在另外一个NameNode节点(bigdata008)上同步元数据信息,然后再启动NameNode

        --同步元数据

        hdfs namenode -bootstrapStandby

        --启动NameNode

hadoop-daemon.sh start namenode



进行zk的初始化        

在bigdata007上执行zk的初始化

hdfs zkfc -formatZK

启动hdfs和yarn

start-dfs.sh

start-yarn.sh

windows配置文件

 

 

用浏览器访问

http://bigdata007:50070

http://bigdata008:50070

 07是活跃的

 

 

yarn的

http://bigdata008:8088


 

http://bigdata009:8088

有一个处于活跃状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/44992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

武夷山细节决定成败抓质量求生存

在当今竞争激烈的市场环境中&#xff0c;细节决定成败&#xff0c;质量求生存的理念已成为企业发展的关键。蓝鹏测控科技有限公司&#xff0c;一家专业从事工业测量领域的高新技术企业&#xff0c;正是秉持这一理念&#xff0c;在工业测径仪领域取得了显著成就。 蓝鹏测控科技…

pandas修改时间索引报错处理

import pandas as pd import numpy as np import osdfpd.DataFrame(index[a,b,c],data{序列:[1,2,3]}) df.rename(index{a:a1},inplaceTrue) print(df) print(df.index.dtype)df1pd.DataFrame(index[2024-01-01,2024-01-02,2024-01-03],data{序列:[1,2,3]}) df1.rename(index{2…

Excel——REPLACE函数实现敏感信息打码

第一步&#xff1a; 以素材Excel文档为例。 在F2单元格中输入函数“REPLACE(B2,4,5,"*****")”&#xff0c;输入完毕后&#xff0c;按Enter键开始计算&#xff0c;并使用填充柄对其他区域进行填充。 这个函数的意思是&#xff1a;从第4位数字开始的5个数字用5个“…

医院门诊预约挂号小程序模板源码

医院门诊预约挂号小程序模板源码,主要有&#xff1a;绿色的医院住院办理&#xff0c;门诊预约挂号微信小程序页面模板。包含&#xff1a;办卡绑定、快速办理预约挂号、门诊缴费、住院服务、医院信息、个人中心、添加就诊人、找医生等等。 医院门诊预约挂号小程序模板源码

Elasticsearch:使用 Filebeat 从 Node.js Web 应用程序提取日志

本指南演示了如何从 Node.js Web 应用程序中提取日志并将其安全地传送到 Elasticsearch Service 部署中。你将设置 Filebeat 来监控具有标准 Elastic Common Schema (ECS) 格式字段的 JSON 结构日志文件&#xff0c;然后在向 Node.js 服务器发出请求时&#xff0c;你将在 Kiban…

Doris安装部署

Doris安装部署 1、 MPP概念2.Doris简要介绍 1、 MPP概念 MPP (Massively Parallel Processing)&#xff0c;即大规模并行处理&#xff0c;在数据库非共享集群中&#xff0c;每个节点都有独立的磁盘存储系统和内存系统&#xff0c;业务数据根据数据库模型和应用特点划分到各个节…

无人机之电池保养

一、充电时 1、推荐使用官方充电器和充电管家 2、充电时确保电池处于关闭状态 3、冷却后再充电理想充电温度22-28度 二、使用时 1、首次使用需要充电唤醒电池 2、切勿将电池耗尽过放容易造成电池鼓包 三、储存时 1、存放在环境干燥通风的地方 2、不使用时每两个月充一…

华为机考真题 -- 查找众数及中位数

题目描述: 1.众数是指一组数据中出现次数量多的那个数,众数可以是多个 2.中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那 最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以 2,所 得的结果就是中位数 3.查找…

qt 绘制一个自定义的控件

1.qt 绘制一个自定义的控件 要点 QPainter painter(this); painter.setPen(Qt::NoPen); painter.setBrush(Qt::red); painter.drawRect(rect()); / 在 Qt 中绘制一个自定义的控件通常涉及几个步骤。下面是一个基本的指南&#xff0c;说明如何创建…

谷粒商城实战-25-分布式组件-SpringCloud Alibaba-Nacos配置中心-加载多配置集

文章目录 一&#xff0c;拆分配置集二&#xff0c;配置文件中配置多配置集1&#xff0c;引用多配置集2&#xff0c;验证 三&#xff0c;多配置集总结1&#xff0c;使用场景2&#xff0c;优先级 这一节介绍如何加载多个配置集。 大多数情况下&#xff0c;我们把配置全部放在一个…

vite build 打包错误提示 EBUSY: resource busy or locked, copyfile ‘D:\gtv-web

EBUSY: resource busy or locked, copyfile D:\gtv-web 报错解释&#xff1a; 当前应用正在运行中&#xff0c;把应用进程关掉即可 EBUSY: resource busy or locked 错误表明尝试使用的资源正被另一个进程占用或锁定。在这种情况下&#xff0c;copyfile 命令试图复制文件到指…

C语言 结构体和共用体——对结构体的操作

目录 如何访问结构体的成员&#xff1f; 结构体变量的赋值操作 结构体变量的取地址值操作 如何访问结构体的成员&#xff1f; 结构体变量的赋值操作 结构体变量的取地址值操作

华为机考真题 -- 堆内存申请

题目描述: 有一个总空间为100字节的堆,现要从中新申请一块内存,内存分配原则为:优先紧接着前一块已使用内存,分配空间足够且最接近申请大小的空闲内存。 输入描述: 第1行是1个整数,表示期望申请的内存字节数 第2到第N行是用空格分割的两个整数,表示当前已分配的内存…

华为机考真题 -- 简易内存池

题目描述: 请实现一个简易内存池,根据请求命令完成内存分配和释放。内存池支持两种操作命令,REQUEST和RELEASE,其格式为: REQUEST=请求的内存大小,表示请求分配指定大小内存. 如果分配成功,返回分配到的内存首地址; 如果内存不足,或指定的大小为0,则输出error; R…

如何为谷歌seo打好基础?

选择获取一个合适的域名&#xff0c;选择一个好的域名是 SEO 成功的第一步。以下是一些建议&#xff1a; 域名名称&#xff1a;要短小易记&#xff0c;不要强行插入关键词。最好用你的公司名称&#xff0c;避免使用连字符或特殊字符。用户在输入一个复杂的域名时容易出错&…

FastAPI -- 第一弹

Hello World 经典的 Hello World 安装 pip install fastapi pip install "uvicorn[standard]"main.py from typing import Unionfrom fastapi import FastAPIapp FastAPI()app.get("/") def read_root():return {"Hello": "World"}…

【React Hooks原理 - useReducer】

概述 众所周知useState是基于useReducer来实现状态更新的&#xff0c;在前面我们介绍过useState的原理&#xff0c;所以在这里介绍下useReducer。本文主要从基础使用入手&#xff0c;再进一步从源码来看useReducer实现原理两个方面来介绍useReducer这个Hook。由于本文省略了部…

Google 面试:从忐忑不安到意外的友善体验

一、面试前的忐忑不安 站于Google门前&#xff0c;犹如面临生死抉择&#xff0c;心脏如擂鼓般狂跳不止。我手中紧握着精心准备的简历&#xff0c;心中忐忑不安。Google&#xff0c;这一科技巨头的名字&#xff0c;对我而言&#xff0c;既是理想的彼岸&#xff0c;亦是恐惧的深…

Ozon俄罗斯哪些产品热销中?Ozon7月市场热卖趋势放送

Ozon俄罗斯哪些产品热销工具&#xff1a;D。DDqbt。COm/74rD 据Ozon数据&#xff0c;2023年&#xff0c;在自提服务方面&#xff0c;Ozon投资了100亿扩展自提网络&#xff0c;自提点数量激增至超过5万个&#xff0c;是之前的2.6倍。 物流基础设施方面&#xff0c;Ozon在仓库建…

【vueUse库Reactivity模块各函数简介及使用方法--上篇】

vueUse库是一个专门为Vue打造的工具库,提供了丰富的功能,包括监听页面元素的各种行为以及调用浏览器提供的各种能力等。其中的Browser模块包含了一些实用的函数,以下是这些函数的简介和使用方法: vueUse库Sensors模块各函数简介及使用方法 vueUseReactivity函数1. compute…