首页 > 其他分享 >五、搭建高可用集群

五、搭建高可用集群

时间:2023-11-29 11:13:56浏览次数:25  
标签:可用 hadoop yarn 集群 dfs node1 master local 搭建

一、zookeeper搭建

1、上传安装包到master并解压

tar -xvf zookeeper-3.5.7.tar.gz

 

2、配置环境变量

vim /etc/profile

export ZOOKEEPER_HOME=/usr/local/soft/zookeeper-3.5.7
export PATH=$PATH:$ZOOKEEPER_HOME/bin


source /etc/profile

 

 

3、修改配置文件

cd conf
cp  zoo_sample.cfg zoo.cfg

修改
dataDir=/usr/local/soft/zookeeper-3.5.7/data

增加
server.0=master:2888:3888
server.1=node1:2888:3888
server.2=node2:2888:3888

 

 

4、同步到其它节点

scp -r zookeeper-3.5.7node1:`pwd`
scp -r zookeeper-3.5.7 node2:`pwd`

配置node1和node2的环境变量
scp /etc/profile node1:/etc/
scp /etc/profile node2:/etc/ 

 

在所有节点执行
source /etc/profile

 

 

 

4、创建/usr/local/soft/zookeeper-35.7/data目录,所有节点都要创建

mkdir /usr/local/soft/zookeeper-3.5.7/data

在data目录下创建myid文件
vim myid 
master,node1,node2分别加上0,1,2

 

 

5、启动zk, zkServer.sh start 三台都需要执行

zkServer.sh status 查看状态

当有一个leader的时候启动成功

 

连接zk zkCli.sh

zk  是一个目录结构 ,每个节点可以存数据,同时可以有子节点

 

zk shell

创建目录
create /test test
create /test/a 1

获取数据
get /test
 
ls /test

delete 只能删除没有子节点的节点
rmr /test  删除节点

 

 

关闭命令

zkServer.sh stop

拍摄快照

重置zk

1、杀掉所有zk进程 kiil -9 pid

2、删除data目录下的version文件, 所有节点都要删除 rm -rf /usr/local/soft/zookeeper-3.5.7/data/version-2

2、启动zk zkServer.sh start

 

 

二、搭建Hadoop-HA

 

1、防火墙
service firewalld stop
2、时间同步
yum install ntp
ntpdate -u s2c.time.edu.cn

 

3、免密钥 (远程执行命令)
在两个主节点生成密钥文件
ssh-keygen -t rsa
ssh-copy-id ip

 

master-->master,node1,node2
node1-->master,node1,node2

 

 

4、修改hadoop配置文件
停止HDFS集群:stop-dfs.sh

cd /usr/local/soft/hadoop-3.1.1/etc/hadoop/
core-site.xml

添加
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://cluster</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/soft/hadoop-3.1.1/tmp</value>
    </property>
    <property>
        <name>fs.trash.interval</name>
        <value>1440</value>
    </property>
    <property>
          <name>ha.zookeeper.quorum</name>
          <value>master:2181,node1:2181,node2:2181</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
<!-- 指定hdfs元数据存储的路径 (文件夹会自动创建)-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/soft/hadoop-3.1.1/data/namenode</value>
</property>

<!-- 指定hdfs数据存储的路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/soft/hadoop-3.1.1/data/datanode</value>
</property>

<!-- 数据备份的个数 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>

<!-- 关闭权限验证 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>

<!-- 开启WebHDFS功能(基于REST的接口服务) -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>

<!-- //////////////以下为HDFS HA的配置////////////// -->
<!-- 指定hdfs的nameservices名称为mycluster -->
<property>
<name>dfs.nameservices</name>
<value>cluster</value>
</property>

<!-- 指定cluster的两个namenode的名称分别为nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.cluster</name>
<value>nn1,nn2</value>
</property>

<!-- 配置nn1,nn2的rpc通信端口 -->
<property>
<name>dfs.namenode.rpc-address.cluster.nn1</name>
<value>master:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.cluster.nn2</name>
<value>node1:8020</value>
</property>

<!-- 配置nn1,nn2的http通信端口 -->
<property>
<name>dfs.namenode.http-address.cluster.nn1</name>
<value>master:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.cluster.nn2</name>
<value>node1:9870</value>
</property>

<!-- 指定namenode元数据存储在journalnode中的路径 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;node1:8485;node2:8485/cluster</value>
</property>

<!-- 指定journalnode日志文件存储的路径 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/soft/hadoop-3.1.1/data/journal</value>
</property>

<!-- 指定HDFS客户端连接active namenode的java类 -->
<property>
<name>dfs.client.failover.proxy.provider.cluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<!-- 配置隔离机制为ssh -->
<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.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>

 

 

 

将yarn-site.xml也一并配置

添加
<configuration>
<!-- NodeManager上运行的附属服务,需配置成mapreduce_shuffle才可运行MapReduce程序 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<!-- 开启日志 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>

<!-- 配置日志删除时间为7天,-1为禁用,单位为秒 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>


<!-- //////////////以下为YARN HA的配置////////////// -->
<!-- 开启YARN HA -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>

<!-- 启用自动故障转移 -->
<property>
<name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
<value>true</value>
</property>

<!-- 指定YARN HA的名称 -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarncluster</value>
</property>

<!-- 指定两个resourcemanager的名称 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>

<!-- 配置rm1,rm2的主机 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>node1</value>
</property>

<!-- 配置YARN的http端口 -->
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>master:8088</value>
</property>    
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>node1:8088</value>
</property>

<!-- 配置zookeeper的地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,node1:2181,node2:2181</value>
</property>

<!-- 配置zookeeper的存储位置 -->
<property>
<name>yarn.resourcemanager.zk-state-store.parent-path</name>
<value>/rmstore</value>
</property>

<!-- 开启yarn resourcemanager restart -->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>

<!-- 配置resourcemanager的状态存储到zookeeper中 -->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>

<!-- 配置nodemanager IPC的通信端口 -->
<property>
<name>yarn.nodemanager.address</name>
<value>0.0.0.0:45454</value>
</property>
</configuration>

 

 

修改 hadoop-env.sh
添加权限
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root

5、删除hadoop数据存储目录下的文件 每个节点都需要删除
rm -rf /usr/local/soft/hadoop-3.1.1/tmp
同步到其它节点(直接将node1,node2 上的hadoop-3.1.1 删除 重新将master的hadoop-3.1.1同步过去
cd /usr/local/soft
scp -r hadoop-3.1.1 node1:`pwd`
scp -r hadoop-3.1.1 node2:`pwd`

 

6、启动zookeeper 三台都需要启动
zkServer.sh start
zkServer.sh status

 

7、启动JN 存储hdfs元数据
三台JN上执行 启动命令:
/usr/local/soft/hadoop-3.1.1/sbin/hadoop-daemon.sh start journalnode

 

8、格式化 在一台NN上执行,这里选择master
hdfs namenode -format
启动当前的NN
hadoop-daemon.sh start namenode

 


9、执行同步 没有格式化的NN上执行 在另外一个namenode上面执行 这里选择node1
/usr/local/soft/hadoop-3.1.1/bin/hdfs namenode -bootstrapStandby

 


10、格式化ZK 在master上面执行
!!一定要先 把zk集群正常 启动起来
/usr/local/soft/hadoop-3.1.1/bin/hdfs zkfc -formatZK

 

11、启动hdfs集群,在master上执行
start-dfs.sh

 

 

 

标签:可用,hadoop,yarn,集群,dfs,node1,master,local,搭建
From: https://www.cnblogs.com/SIKE231310/p/17864120.html

相关文章

  • 二、Hadoop集群搭建与学习
     Hadoop集群搭建(完全分布式版本) 一、准备工作三台虚拟机:master、node1、node2时间同步(3.x版本不用做)ntpdatentp.aliyun.com     调整时区 3.x版本不用做)cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime jdk1.8java-version ......
  • minikube 的搭建
    概述minikube是一个工具,能让你在本地运行Kubernetes。minikube在你的个人计算机(包括Windows、macOS和LinuxPC)上运行一个一体化(all-in-one)或多节点的本地Kubernetes集群,以便你来尝试Kubernetes或者开展每天的开发工作。前期准备CentOS7.9非root用户安装Docker......
  • Cadence IC617 开发环境搭建
    本文主要介绍虚拟机安装方式,内容主要讲述虚拟机的使用,文末会补充手动安装的注意事项。如果你熟悉Linux的使用,可以试试手动安装。如果不熟悉,建议使用现成的虚拟机。资料和资源方面,推荐eetop和Google,eetop需要10快钱注册,花钱注册就好了,以后经常用得上。注意!注意!下载和访问可......
  • Flutter开发:一 环境搭建
    目前Flutter版本3.16已经发布,开发环境搭建参考官网: https://flutter.cn/docs/get-started/install1Flutter下载和配置1.1 开发Flutter在windows环境下开发,下载 1.2下载完成后,解压 1.3添加flutterSdk环境变量 2AndroidStudio安装和配置 2.1下载Andro......
  • 中间件:Redis-x64-5.0.14.1高可用集群-哨兵(Sentinel)模式(Win10)
     原文:https://blog.csdn.net/chenyang_wei/article/details/127846656在Redis主从复制模式中,因为系统不具备自动恢复的功能,所以当主服务器(master)宕机后,需要手动把一台从服务器(slave)切换为主服务器。在这个过程中,不仅需要人为干预,而且还会造成一段时间内服务器处于不可用状态,......
  • Vite4+Typescript+Vue3+Pinia 从零搭建(4) - 代码规范
    项目代码同步至码云weiz-vue3-template要求代码规范,主要是为了提高多人协同和代码维护效率,结合到此项目,具体工作就是为项目配置eslint和prettier。editorconfig安装EditorConfigforVSCode插件,根目录下新建.editorconfig文件,增加以下配置[*.{js,jsx,ts,tsx,vue}]......
  • kubernetes集群使用容器镜像仓库Harbor
    1、容器镜像仓库Harbor部署在docker主机部署Harbor,安装过程比较简单在k8s集群中部署Harbor2、使用Harbor仓库2.1通过secret使用Harbor仓库新建私有仓库集权所有节点配置harbor仓库#cat/etc/docker/daemon.json{"exec-opts":["native.cgroupdriver=system......
  • Linux部署Redis哨兵集群 一主两从三哨兵
    目录一、哨兵集群架构介绍二、下载安装Redis2.1、选择需要安装的Redis版本2.2、下载并解压Redis2.3、编译安装Redis三、搭建Redis一主两从集群3.1、准备配置文件3.1.1、准备主节点6379配置文件3.1.2、准备从节点6380配置文件3.1.3、准备从节点6381配置文件3.2、启动Redis主从复制......
  • ubuntu20.04下搭建syzkaller环境 (避坑指南)
    1、安装golang环境,最开始使用aptinstallgolang,结果在编译syzkaller时,编译没法通过。在Makefile中最开始检测NCORES失败,直接退出。根据Makefile的逻辑,其中的NCORES,应该是前面的goruntools/syz-make/make.go语句拿到了环境信息,但是aptinstallgolang安装的golang环境,这个go文......
  • 直播平台搭建,自定义气泡效果(BubbleView)
    直播平台搭建,自定义气泡效果(BubbleView) packagecom.example.myapplication;importandroid.content.Context;importandroid.graphics.BlurMaskFilter;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.......