hive数据迁移

server/2025/1/12 0:06:00/

先迁移元数据

迁移mysql,保证2边的hdfsservice的location相同

迁移hdfs前要设定计划,假设数据1PB,里面有很多大表,最好能统计每个表的数据量以及大小

hdfs dfs -du -sh /user/hadoop/data

制定计划,进行分步骤迁移(小表直接按目录迁移,大表分区迁移)

预估迁移速度。假设宽带是万兆带宽,10Gb,算上损耗,实际应该是1GB/s,如果业务占用750mb/s,那么剩余的还有250mb/s。此时给5个map,每个map 带宽50mb/s

假设有100g的一张表,那么最快速度是400秒跑完,算上实际mapreduce以及校验,+70%。大概是700秒。11分钟左右。
实际测试确实是11分钟到12分钟。不进行参数优化,耗时大概是迁移网速带宽的导入数据实际 * 170%

加跳过测试,在distcp后面加上这个-skipcrccheck -i (-skipcrccheck跳过校验,-i是忽略失败,大表有增量写入百分之百失败,所以先迁移分区,最后切业务写入)

停机方式(简单)

hive数据迁移:

hive有2种存储方式,存磁盘或者hdfs,2者操作一样,磁盘就scp过去。

hdfs就distcp过去。

hadoop distcp -Dmapreduce.job.hdfs-servers.token-renewal.exclude="xx.xx.xx.xx" -i -strategy dynamic -log /hdfs_migration/None/日志路径 -bandwidth 100 -m 100 hdfs://xx.xx.xx.xx:8020/user/hive/warehouse/xx.db/table_name/* hdfs://xx.xx.xx.xx2:8020/user/hive/warehouse/xx.db/table_name/* 

这段代码的意思是

-Dmapreduce.job.hdfs-servers.token-renewal.exclude 设置HDFS服务器的配置,排除指定的IP地址以避免进行令牌续期。

-i: 表示在复制过程中忽略已存在的文件,不覆盖目标目录中的文件。

-strategy dynamic: 使用动态策略,根据输入数据量和集群资源动态调整任务的映射器数量,以优化复制性能。

-log /hdfs_migration/指定存放操作日志的路径

-bandwidth 100 -m 100 代表每个map传送的宽带是每秒100mb,-m指的是 启动100个map

hive表迁移:

hive有2种表方式,磁盘和关系型数据库,一般我们都是用mysql,2者操作一样。

磁盘scp,mysql的话将mysql的hive库和表同步过去。

同步方式很多,导出sql,用工具navicat,同步脚本。这里就不写具体方式, 比较简单。

如果原表有分区,那么需要在迁移后的表,迁移数据后,进行分区修复。

进入迁移后的hive后输入

msck repair table xxx

如果迁移失败,导致没有元数据,那么需要重新建表。

先查看原表的结构,在原来的hive里或者beeline中。

show create table xxx

然后通过脚本导出为不带边框的表sql

beeline --showHeader=false --outputformat=dsv -e "show create table 库名.表名" > /xx.sql

然后进入迁移后的表,迁移数据后,进入hive在将这个建表sql建立一下。


http://www.ppmy.cn/server/157610.html

相关文章

React面试合集

1. React 核心概念 1.1 什么是 React?它的核心优势是什么? 答案: React 是一个用于构建用户界面的 JavaScript 库。 核心优势: 组件化:将 UI 拆分为可复用的组件。虚拟 DOM:通过高效的 Diff 算法减少直…

Go语言之路————go基本语法、数据类型、变量、常量、输出

Go语言之路————go基本语法、数据类型、变量、常量 一、基本语法知识二、数据类型三、常量四、变量五、作用域六、输入输出 一、基本语法知识 其实编程语言的语法在大框架上都是大差不差的,这就是为啥一个人熟练掌握了一门语言,他能迅速上手另一个语…

【Go】:图片上添加水印的全面指南——从基础到高级特性

前言 在数字内容日益重要的今天,保护版权和标识来源变得关键。为图片添加水印有助于声明所有权、提升品牌认知度,并防止未经授权的使用。本文将介绍如何用Go语言实现图片水印,包括静态图片和带旋转、倾斜效果的文字水印,帮助您有…

机器学习算法---贝叶斯学习

1.了解相关概念 先验概率:有数据集d,以及假设h,此时h是不确定的。在还没有训练数据之前h的初始概率记为P(h),类似地我们把P(d)表示训练数据d在任何假设都未知或不确定时的概率。P(d|h)表示已知假设h成立时d的概率。 后验概率:就是在数据d上经过学习之后…

【docker 系列教程】如何导出镜像、加载本地镜像

概述 在某些场景下,我们需要自定义保存及加载一些 docker 镜像,如你开发完成包之后还不想推送到 docker 镜像仓库,需发给测试同学进行测试;又或者,你担心你使用的mysql的5.7版本的镜像仓库之后无法访问或者被删除&…

Redis高频知识点

Redis 目录 1 Redis是AP的还是CP的?2 介绍一下Redis的集群方案?3 什么是Redis的数据分片?4 Redis为什么这么快?5 Redis 的事务机制是怎样的?7 Redis的持久化机制是怎样的?8 Redis 的过期策略是怎么样的&a…

易支付二次元网站源码及部署教程

易支付二次元网站源码及部署教程 引言 在当今数字化时代,二次元文化逐渐成为年轻人生活中不可或缺的一部分。为了满足这一庞大用户群体的需求,搭建一个二次元主题网站显得尤为重要。本文将为您详细介绍易支付二次元网站源码的特点及其部署教程&#xf…

在 a-tree 中报错 parent 期望是对象,但获得是字符串

一、问题分析 a-tree 组件期望接受到的 parent 属性是对象,但实际传入的字段是字符串。 二、可能的原因 1. 数据初始化错误 从后端获取数据前端转换数据时发生错误。 // 从后端获取的数据格式为{id: group1, parentId: departmentA}const backendData [{ id: …