Hadoop Namenode节点迁移

文章目录

  • 1. 迁移服务器
  • 2. 新建账号
  • 修改配置
  • 3. 安装组件
    • 3.1 ntpd安装
    • 3.2 安装mysql
    • 3.3 mysql迁移说明
  • 4. 服务的迁移
    • 4.1 影响的范围说明
    • 4.2 相关的服务
    • 4.3 服务的停止
    • 4.4 拷贝服务相关的文件
    • 4.5 启动,验证
  • 5. 事后总结
  • 6. 问题解决
    • 6.1 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
    • 6.2 备份恢复mysql数据库
    • 6.3 nginx负载均衡策略
    • 6.4 几个重要的配置

1. 迁移服务器

192.168.10.56 -> 192.168.10.11
192.168.10.57 -> 192.168.10.12

2. 新建账号

# 新建hadoop用户和组
sudo groupadd hadoop
sudo useradd -d /home/hadoop/ -g hadoop hadoop# 修改密码
passwd hadoop # 新建mysql用户和组,不指定home目录
sudo groupadd mysql
useradd -g mysql mysql -s /sbin/nologin
passwd mysql 
mysql

修改配置

vim /etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

针对普通用户,还需要修改:/etc/security/limits.d/20-nproc.conf

*          soft    nproc     131072
root       soft    nproc     unlimited

vim /etc/selinux/config

# 临时关闭
setenforce 0# 永久关闭
将SELINUX=enforcing 更改为 SELINUX=disabled

3. 安装组件

3.1 ntpd安装

yum install ntp

root账号添加定时同步

0 */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org >>/root/ntpdate.log 2>&1

3.2 安装mysql

准备rpm安装包,使用root账号,然后分别安装在11,12服务器上:

## 先卸载自带的mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64##再安装
rpm -ivh 01_mysql-community-common-5.7.29-1.el7.x86_64.rpm
rpm -ivh 02_mysql-community-libs-5.7.29-1.el7.x86_64.rpm
rpm -ivh 03_mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
rpm -ivh 04_mysql-community-client-5.7.29-1.el7.x86_64.rpm
rpm -ivh 05_mysql-community-server-5.7.29-1.el7.x86_64.rpm

3.3 mysql迁移说明

1)文件权限问题
需要在root账号下操作,拷贝完源文件后,需要修改为mysql用户和组。
2)如果拷贝的文件启动报错,不是因为权限的原因,可以使用初始化命令,先初始化MySQL启动。然后再拷贝数据库文件。

由于之前开启了binlog,并没有设置binlog的保留天数,日志文件数据量特别大,于是使用了下面两种方式清理历史的日志文件。
purge binary logs to ‘mysql-bin.009560’;
purge binary logs before ‘2022-01-01 23:59:59’;
执行上面的清理任务后,将剩余的文件直接拷贝到新机器,发现启动MySQL日志错误,一直启动不起来。
最后通过重新初始化后,将MySQL启动。然后拷贝已有的数据库文件,来解决binlog日志的问题。

mysqld --initialize --console

3)my.cnf配置参考

datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
explicit_defaults_for_timestamp=true# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid# explicit_defaults_for_timestamp=truemax_connections=1500
max_connect_errors=10
character_set_server=utf8
innodb_read_io_threads=10
innodb_write_io_threads=30
max_allowed_packet=1G# 跳过所有错误
slave-skip-errors=all
innodb_force_recovery=6log-bin=mysql-bin
server-id=201binlog_format=row
binlog-do-db=bigdata# 必须为FULL,MySQL-5.7后才有该参数
binlog_row_image=FULL
expire_logs_days=15#sql_mode
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION[client]
socket=/var/lib/mysql/mysql.sock

4. 服务的迁移

4.1 影响的范围说明

16:50-17:50点会进行大数据集群主节点的迁移,
影响hive相关的所有服务,包括flink写iceberg,trino查询的相关操作。

涉及到hive的元数据库迁移,trino主节点的迁移,

4.2 相关的服务

zookeeper组件的服务:

  • zookeeper服务 目前线上5个节点,可以直接停用

hadoop集群的相关服务:

  • JournalNode服务
  • NameNode服务
  • ResourceManager服务

数据库相关的服务:

  • MySql从服务

由于服务存在相关依赖性,按照从前到后的顺序启动,需要依次为:
zookeeper > JournalNode > NameNode = ResourceManager

目前已有3个节点的JournalNode,下线一个再上线后,如果有异常,参考以下解决。
https://blog.51cto.com/u_15346267/3668885

4.3 服务的停止

操作步骤:
(1) 停止zookeeper服务 zkServer.sh stop

zkServer.sh stop

(2) 停止JournalNode服务

hadoop-daemon.sh stop journalnode

(3)停止NameNode服务

hadoop-daemon.sh stop namenode

(4) 停止ResourceManager服务

yarn-daemon.sh stop resourcemanager

(5) 停止Hive服务

ps -ef|grep hive
kill 

(6) 停止MySQL服务(root账号)

systemctl stop mysqld

(7) 停止Trino服务(57服务器)

./launch stop

4.4 拷贝服务相关的文件

hadoop账号拷贝以下目录:

# 拷贝/home/hadoop目录
/home/hadoop/.ssh
scp -r /home/hadoop/* hadoop@192.168.10.11:/home/hadoop/# 拷贝/opt/name目录
scp -r /opt/name/* hadoop@192.168.10.11:/opt/name/

修改mysql的配置,添加innodb_force_recovery=6

# mysql数据库拷贝
scp -r ibdata1 ib_logfile0 ib_logfile1 ibtmp1 ib_buffer_pool information_schema MDPS SUBGRAPH TRADE V3DATA bigdata hive log logi_kafka_manager mysql performance_schema pid sys root@192.168.10.12:/data/mysql/

scp -r ibdata1 ib_logfile0 ib_logfile1 ibtmp1 ib_buffer_pool information_schema MDPS SUBGRAPH TRADE V3DATA bigdata hive log logi_kafka_manager mysql performance_schema pid sys root@192.168.10.11:/data/mysql/

4.5 启动,验证

(1) 启动MySQL,并验证

通知运维修改IP地址,重启服务器。

(1) 重启MySQL, 并验证
(2) 启动zk,并验证
(3) 启动JournalNode,并验证
(4) 启动NameNode,并验证
(5) 启动ResourceManager,并验证
(6) 启动Hive,并验证
(7) 启动Trino,并验证

5. 事后总结

尽管之前做了很多准备和测试工作,但是在迁移过程中还是发生了很多意想不到的问题。
(1)某个文件夹下日志过于大,170w个文件,拷贝花费了很久。
(2)56机器节点做了防火墙等验证发现是关闭的,但是57没看了,结果57上居然有防火墙开着,导致mysql外部链接一直存在着问题。
因为这个问题,导致多次重启服务,发现dbveaver一只堵住无法连接。直接早上同事提醒时,才去看了看发现真有防火墙开着。
(3)直接拷贝原有机器上的.ssh,导致其他datanode的节点和新的name节点通信时,一只提示以下错误。然后只能手工一个个去做ssh-keygen -R "192.168.10.57"命令。
这个建议下次可以直接在新节点上重新生成ssh,做免密了,不使用旧的可能更简单点。
(4)环境变量复制粘贴出现遗漏了。
(5)因为mysql连接在57上一直出现故障,所以拿原有的机器上的数据库备份,然后做恢复到56上。这个恢复占用了很大时间。
(6)zk的服务必须从最小的数字启动到最大的数字,恰好我迁移的节点上有个2个最小的节点数字,导致最小的那个数字没启动起来,所以目前有4个zk在服务了,据说3.5以上版本会解决以上问题。
(7)发现hive-site.xml中HA模式配置的ZK节点有错误的节点,属于历史更换时,未修改到位。
(8)原有的yarn-site.xml都是超配的,一直没有根据每个节点的不同配置去修改。

总之问题很多,以后做事的时候还需要非常的细心,有部分是自己粗心大意。

6. 问题解决

6.1 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

这是由于使用了旧的机器上的.ssh文件,当时直接拷贝过来的,错误如下:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:LXB7o2TU/rkL3OfYtltEdvlC8WoKPxAh4HOs2MfFetg.
Please contact your system administrator.
Add correct host key in /home/hadoop/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/hadoop/.ssh/known_hosts:37
ECDSA host key for cdh192-57 has changed and you have requested strict checking.
Host key verification failed.
[hadoop@cdh192-56 ~]$

解决方案也相对简单,使用下面命令替换know_hosts,然后需要重新ssh,第一次需要输入yes的。

ssh-keygen -R "192.168.10.57"
ssh-keygen -R "192.168.10.56"

6.2 备份恢复mysql数据库

以下是全量备份命令

# 全量备份
/usr/bin/mysql -uroot -proot < /home/all_db_20220915.sql# 全量恢复
/usr/bin/mysql -uroot -proot <  /home/all_db_20220915.sql

如果需要放后台执行,将上面命令放到shell脚本中,比如backup.sh,
然后nohup ./backup.sh 2>&1 &

6.3 nginx负载均衡策略

nginx默认是轮询策略,如果一些请求执行耗时很长,某些很短,很不均匀,就会导致各个节点请求占用时间不一致,采用轮询并不是一个好的策略。
least_conn 使用最小连接可以使分发更均衡一点。这个是在hive使用nginx做负载均衡时可以调整的策略,以下为样例配置。

stream{  log_format basic '$remote_addr [$time_local] ' '$protocol $status $bytes_sent $bytes_received' '$session_time';  upstream hiveserver2 {    least_conn; #路由策略:least_conn:最少连接    server cdh01.xx.com:10000;    server cdh01.xx.com:10000;   }  server{ #hiveserver2 jdbc 负载均衡    listen 10010;    proxy_pass hiveserver2;  }
}

6.4 几个重要的配置

如果机器配置不同,则需要根据具体的机器情况,修改对影的配置。
这里涉及到cpu核数、内存大小、任务中间结果目录大小、用户任务的日志存放目录大小
yarn.nodemanager.resource.cpu-vcores: 单节点最大的可用核数,比如72核,设置70,预留2个给系统使用。这里假如系统只有72核,你即使配置了100也不会有任何异常,但是超配了。
yarn.nodemanager.resource.memory-mb:单节点最大可用内存数,比如512G,设置496G,预留16G给系统使用。这里也可以超配,系统不会报异常。
yarn.nodemanager.local-dirs:中间结果存放目录,当shuffle数据较大时,需要写磁盘,如果空间预留不足,当该节点空间少于10%时,将会自动下架datanode服务。
yarn.nodemanager.log-dirs: 任务日志目录,同上,如果空间预留不足,当该节点空间少于10%时,将会自动下架datanode服务。

具体参考下面:

<!-- 单节点最大可用核数 根据CPU核数不同,配置不同-->
<property><description>Number of vcores that can be allocatedfor containers. This is used by the RM scheduler when allocatingresources for containers. This is not used to limit the number ofphysical cores used by YARN containers.</description><name>yarn.nodemanager.resource.cpu-vcores</name><value>70</value>
</property><!-- 单节点最大可用内存数,本机内存不同,配置不同-->
<property><name>yarn.nodemanager.resource.memory-mb</name><value>508723</value>
</property><!--很重要,中间结果存放位置,建议配置多个目录,分摊磁盘IO负载,用户运行的每个任务的临时目录,需要的空间足够大 -->
<property><name>yarn.nodemanager.local-dirs</name><value>/dfs/data1/nm-local-dir/,/dfs/data2/nm-local-dir/,/dfs/data2/nm-local-dir/,/dfs/data3/nm-local-dir/,/dfs/data4/nm-local-dir/,/dfs/data5/nm-local-dir/,/dfs/data6/nm-local-dir/,/dfs/data7/nm-local-dir/,/dfs/data8/nm-local-dir/,/dfs/data9/nm-local-dir/,/dfs/data10/nm-local-dir/</value>
</property>
<!--很重要,日志存放地址(建议配置多个目录),用户运行的每个任务的日志目录,需要的空间足够大 -->
<property><name>yarn.nodemanager.log-dirs</name><value>/dfs/data1/userlogs/,/dfs/data2/userlogs/,/dfs/data2/userlogs/,/dfs/data3/userlogs/,/dfs/data4/userlogs/,/dfs/data5/userlogs/,/dfs/data6/userlogs/,/dfs/data7/userlogs/,/dfs/data8/userlogs/,/dfs/data9/userlogs/,/dfs/data10/userlogs/</value>
</property>

查看CPU的核数:

cat /proc/cpuinfo| grep 'processor'|wc -l

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

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

相关文章

链在一起Chained Together没中文 超好用的一键汉化工具推荐

《链在一起》一款新的可联机冒险跑酷类游戏&#xff0c;游戏里玩家将与你的同伴被链在一起&#xff0c;然后开始你的旅程&#xff0c;在地狱的深处&#xff0c;任务是通过尽可能高的攀登逃离地狱。 每一次跳跃都需要完美的协调才能攀上平台并逃离灼热&#xff0c;穿越众多世界&…

服务器win10server,python安装paddleocr的踩坑日记

最近由于需要图像文字识别的简单业务&#xff0c;研究了一下&#xff0c;一是用大厂的文字识别api&#xff0c;如百度腾讯等&#xff0c;但这种免费版只有有限的调用次数&#xff0c;如百度只有每月只有1000次调用额度&#xff0c;个人也够用&#xff0c;但由于业务量大&#x…

新闻报料管理系统设计

一、系统概述 新闻报料管理系统旨在提供一个高效、便捷的平台&#xff0c;用于新闻稿件的收集、整理、审核和发布。该系统支持从多个来源接收新闻报料&#xff0c;包括文字、图片、视频等多种格式&#xff0c;并通过智能化的处理流程&#xff0c;实现对新闻报料的快速处理和发布…

深入测评:ONLYOFFICE 8.1 桌面编辑器究竟有多强大?

ONLYOFFICE 8.1桌面编辑器 文章目录 ONLYOFFICE 8.1桌面编辑器一、ONLYOFFICE的简介二、ONLYOFFICE 8.1新功能和改进2.1 轻松编辑器 PDF 文件2.2 用幻灯片版式快速修改幻灯片2.3 无缝切换文档编辑、审阅和查看模式2.4 改进从右至左语言的支持 & 新的本地化选项2.5 隐藏“连…

【权威发布】2024年文化、设计与社会科学国际会议(ICCDSS 2024)

2024年文化、设计与社会科学国际会议 2024 International Conference on Culture, Design, and Social Sciences 会议简介 2024年文化、设计与社会科学国际会议旨在为全球范围内的专家学者提供一个交流文化、设计与社会科学研究成果的平台。会议将围绕文化、设计与社会科学的前…

超越AnimateAnyone, 华中科大中科大阿里提出Unimate,可以根据单张图片和姿势指导生成视频。

阿里新发布的UniAnimate&#xff0c;与 AnimateAnyone 非常相似&#xff0c;它可以根据单张图片和姿势指导生成视频。项目核心技术是统一视频扩散模型&#xff0c;通过将参考图像和估计视频内容嵌入到共享特征空间&#xff0c;实现外观和动作的同步。 相关链接 项目&#xff1…

Scala入门【安装与使用、变量与数据类型、运算符、函数、条件判断、循环、字符串、面向对象、数组】

视频地址:Scala大专/本科专用课程_哔哩哔哩_bilibili 目录 P01【01Scala安装与使用】16:15 P02【02变量与数据类型】17:14 P03【03运算符】12:41 P04【04函数】16:40 P05【05条件判断】10:56 P06【06循环】13:33 P07【07字符串】19:09 P08【08面向对象】17:27 P09【0…

DVWA-CSRF-samesite分析

拿DVWA的CSRF为例子 接DVWA的分析&#xff0c;发现其实Impossible的PHPSESSID是设置的samesite1. 参数的意思参考Set-Cookie SameSite:控制 cookie 是否随跨站请求一起发送&#xff0c;这样可以在一定程度上防范跨站请求伪造攻击&#xff08;CSRF&#xff09;。 下面用DVWA CS…

使用Python进行数据分析和自动化

组织严重依赖数据分析和自动化来提高运营效率。在本文中&#xff0c;我们将使用 Python&#xff08;一种用于通用编程的高级编程语言&#xff09;的示例来研究数据分析和自动化的基础知识。 什么是数据分析&#xff1f; 数据分析是指检查、清理、转换和建模数据的过程&#xf…

FydeOS导入VMware虚拟机之后,如何扩展系统硬盘大小?

前言​ 最近查询FydeOS系统的小伙伴不在少数啊&#xff01;可见这个系统是相当nice的&#xff0c;小伙伴们都是尝试尝试。 看到有不少小伙伴通过VMware虚拟机使用FydeOS&#xff0c;那么你就肯定知道官方包导入VMware之后&#xff0c;硬盘只显示分区了20GB。 如果这时候使用Fy…

Redis连接池配置:深入探索JedisPoolConfig

Redis是一种广泛使用的高性能键值存储系统&#xff0c;它支持多种类型的数据结构&#xff0c;如字符串、哈希、列表、集合等。在Java开发中&#xff0c;Jedis是Redis官方推荐的客户端库之一。然而&#xff0c;频繁地创建和销毁Redis连接是一个资源密集型的操作&#xff0c;因此…

2024年最新建筑八大员(劳务员)考试试题。高效备考!!!

1.房屋建筑工程施工总承包企业资质分为(  )。 A.特级、一级、二级、三级 B.特级、一级、二级 C.一级、二级、三级 D.一级、二级、三级 答案:A 2.1个工人作业1天&#xff08;&#xff09;的时间算作1个工日&#xff0c;作业1个小时算作1个工时。 A.6小时 B.8小时 C.1…

物理服务器会不会被DDOS攻击?

物理服务器同样可能遭受分布式拒绝服务&#xff08;DDoS&#xff09;攻击。DDoS攻击的目的是通过大量的请求淹没目标服务器或网络&#xff0c;使其无法处理合法用户的请求&#xff0c;从而导致服务不可用。这种攻击并不区分服务器是物理的还是虚拟的&#xff0c;只要服务器连接…

香港服务器ssh连接失败怎么处理?

当遇到香港服务器的SSH连接失败时&#xff0c;可能有多种原因导致&#xff0c;以下是一些常见的排查和处理方法&#xff1a; 1. 确认网络连接和服务器状态 网络连接问题&#xff1a; 确保本地网络正常&#xff0c;可以访问其他网站和服务。 使用 ping 命令检查服务器的网络连通…

web应用-Nginx学习笔记02-配置项结构和内容

操作环境介绍 操作系统信息 ubuntu18.04 1.如何安装得到一个nginx应用&#xff1f; 安装nginx应用&#xff0c;安装方式&#xff0c;通过apt方式安装&#xff1b; apt install nginx nginx版本信息查看 rootub1804:/etc/nginx# nginx -v nginx version: nginx/1.14.0 (Ubu…

同城跑腿小程序的崛起与用户体验革新

随着移动互联网的飞速发展&#xff0c;人们的生活方式正在发生深刻的变化。在这个快节奏的时代&#xff0c;时间成为了最宝贵的资源。在这样的背景下&#xff0c;同城跑腿小程序应运而生&#xff0c;以其高效、便捷的服务特性&#xff0c;迅速赢得了广大用户的青睐。本文将探讨…

puppet运维自动化

在现代信息技术管理中&#xff0c;自动化运维工具的应用已成为企业提升效率、降低成本的关键手段之一。Puppet作为一种强大的运维自动化工具&#xff0c;因其高效、灵活和可扩展的特点&#xff0c;受到越来越多企业的青睐。本文将探讨Puppet在运维自动化中的应用&#xff0c;包…

SpringBoot使用滑动窗口限流防止用户重复提交(自定义注解实现)

在你的项目中&#xff0c;有没有遇到用户重复提交的场景&#xff0c;即当用户因为网络延迟等情况把已经提交过一次的东西再次进行了提价&#xff0c;本篇文章将向各位介绍使用滑动窗口限流的方式来防止用户重复提交&#xff0c;并通过我们的自定义注解来进行封装功能。 首先&a…

代码随想录算法训练营第三十三天|452. 用最少数量的箭引爆气球、 435. 无重叠区间、 763.划分字母区间

452. 用最少数量的箭引爆气球 题目链接&#xff1a;452. 用最少数量的箭引爆气球 文档讲解&#xff1a;代码随想录 状态&#xff1a;没想出来 思路&#xff1a;对气球终点位置排序&#xff0c;从第一个气球终点位置射出箭&#xff0c;看这支箭可以尽可能穿过几个气球&#xff0…

Excel 宏录制与VBA编程 —— 12、日期相关

代码1 - 获取当前时间日期信息 代码2 - 时间日期格式 代码3 - 时间日期计算 代码4 - 时间日期案例 关注 笔者 - jxd