热数据存储在HDFS,冷备数据存储于对象存储中

img

1.场景分析

生产环境均为腾讯云服务器,日志数据计划存储于HDFS中,由于日志数据较大(压缩后1T/天),不断扩充云盘成本消耗大。鉴于对象存储的存储成本较为低廉,但是日常频繁使用会产生流量费用。
鉴于此,规划将日常常用热数据采用HDFS存储(存储时间2~3个月),超过该时间段数据采用对象存储。改方案均采用同一套Hadoop架构,使用hive均可以读取到,在降低成本的同时提高数据的利用率。

2.准备条件

cos与hadoop集成特征

3.详细脚本

建表语句

CREATE EXTERNAL TABLE ods.test_dh (
`timestamp` bigint COMMENT '时间',
`offset` bigint COMMENT '偏移量',
`request_uri` string COMMENT '请求uri'
  )
COMMENT '日志表'
PARTITIONED BY (
 `part_day` string,
  `part_hour` string)
ROW FORMAT SERDE
  'org.apache.hadoop.hive.serde2.JsonSerDe'
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://hadoopcluster/hadoop/dm_dw/on/ods/test_dh';

CREATE EXTERNAL TABLE ods.test_bu (
`timestamp` bigint COMMENT '时间',
`offset` bigint COMMENT '偏移量',
`request_uri` string COMMENT '请求uri'
  )
COMMENT '日志备份表'
PARTITIONED BY (
 `part_day` string,
  `part_hour` string)
ROW FORMAT SERDE
  'org.apache.hadoop.hive.serde2.JsonSerDe'
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
   'cosn://xxxx/hadoop/dm_dw/on/ods/test_bu';

每个月1号12点数据冷备份

#!/bin/bash
# 定义变量方便修改
APP=ods
#HDFS表
HDFS_TABLE=test_dh
#对象存储表
COS_TABLE=test_bu
HDFS_PATH1=hdfs://hadoopcluster/hadoop/dm_dw/on/$APP/$HDFS_TABLE
HDFS_PATH2=/hadoop/dm_dw/on/$APP/$HDFS_TABLE
COS_PATH=cosn://xxxx/hadoop/dm_dw/on/$APP/$COS_TABLE
# HDFS数据冷备份,将HDFS3个月前的数据按照月份移动至cos中,移动完成后删除HDFS中的数据,数据保留时间最大不超过3个月
# 执行时间为每个月1号12点

do_date=$1
hr=${do_date: 8: 2}
date1=${do_date: 0: 8}
#date1=`date -d "$date1 +1 day" +%Y%m%d`
date1_month=`date -d "$date1" +%Y%m`
date3=`date -d "$[ $date1_month + 0 ]01" +%Y%m%d`
if [ "$date1" -eq "$date3" ] && [ "$hr" -eq 11 ] ; then

  start_date=`date -d "$date3 -3 month" +%Y%m%d`
  end_date=`date -d "$date3 -2 month" +%Y%m%d`	# 日期自增
  echo ================== $COS_TABLE 导入月份为 $start_date ==================
  while [[ $start_date != $end_date ]]
  do
      hadoop fs -test -e $HDFS_PATH2/part_day=$start_date
      if [[ $? -eq 0 ]]; then
        #数据备份开始
        echo "$start_date 数据开始移动..."
        hadoop distcp -Dmapreduce.job.queuename=dw $HDFS_PATH1/part_day=$start_date $COS_PATH
        hadoop fs -test -e $COS_PATH/part_day=$start_date/part_hour=23
        if [[ $? -eq 0 ]]; then
            #数据备份完成,删除hdfs中的数据
          echo "路径 $COS_PATH/part_day=$start_date 数据已移动至cos,HDFS数据删除......"
          hadoop fs -rm -rf $HDFS_PATH2/part_day=$start_date
        else
          echo " $COS_PATH/part_day=$start_date HDFS数据没有移动至cos"
        fi
      else
        echo " $HDFS_PATH2/part_day=$start_date 文件夹中没有数据"
      fi
      start_date=$(date -d "$start_date +1 day" +%Y%m%d)
  done
  echo ================== $COS_TABLE 导入月份为 $do_date ==================
  sql="MSCK REPAIR TABLE ${APP}.${COS_TABLE};"
  hive -e "$sql"
else
  echo "$do_date 不是月初第一天的12点"
fi

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ES6中新增Array.of()函数的用法详解

new Array()方法 ES6为Array增加了of函数用一种明确的含义将一个或多个值转换成数组。因为用new Array()构造数组的时候,是有二意性的。 构造时,传一个参数,实际上是指定数组的长度,表示生成多大的数组。 构造时,传…

(源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模

本篇文章是: 2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模的源码版本,包含具体建模代码到生成模型步骤。那么废话不多说直接开始展示建模过程建模: 数据预处理 之前我给大家提供的一年的风暴数据是远远不够的,要做时…

前端excel带样式导出 exceljs 插件的使用

本来用的xlsx和xlsx-style两个插件&#xff0c;过程一步一个坑&#xff0c;到完全能用要消灭好多bug。这时发现了exceljs&#xff0c;真香&#x1f600; 案例 <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"view…

iOS图像处理----探索图片解压缩到渲染的全过程以及屏幕卡顿

一&#xff1a;图像成像过程 ①、将需要显示的图像&#xff0c;由CPU和GPU通过总线连接起来&#xff0c;在CPU中输出的位图经总线在合适的时机上传给GPU &#xff0c;GPU拿到位图做相应位图的图层渲染、纹理合成。 ②、将渲染后的结果&#xff0c;存储到帧缓存区&#xff0c;帧…

Linux 驱动开发基础知识——设备树的语法驱动开发基础知识(九)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;Vir2021GKBS &#x1f43c;本文由…

Docker进阶学习笔记-持续更新中

容器数据卷 什么是容器数据卷 docker的理念回顾 将应用和环境打包成一个镜像! 数据﹖如果数据都在容器中,那么我们容器删除,数据就会丢失!需求︰数据可以持久化MySQL,容器删了,删库跑路!需求:MySQL数据可以存储在本地! 容器之间可以有一个数据共享的技术!Docker容器中产生…

阅读欣赏推荐之(一)——纪录片《数学的故事》

寒假是孩子最好的“增值期”&#xff0c;有很多家长选择让孩子“泡在”辅导班&#xff0c;想让孩子弯道超车&#xff0c;但效果往往是不尽人意的。其实&#xff0c;寒假是孩子提高素质、开阔眼界、增加兴趣的黄金时期&#xff0c;特别是学数学有困难的孩子&#xff0c;可以利用…

“量子+材料”!光量子公司PsiQuantum与日本两大巨头强强合作

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨慕一 编译/排版丨卉可 琳梦 深度好文&#xff1a;1200字丨10分钟阅读 近日&#xff0c;光量子计算公司PsiQuantum和三菱日联金融集团宣布&#xff0c;双方与三菱化学集团达成项目合作—…

Linux文件编译

目录 一、GCC编译 1.直接编译 2.分步编译 预处理&#xff1a; 编译&#xff1a; 汇编&#xff1a; 链接&#xff1a; 3.多文件编译 4.G 二、Make 1.概述 2.使用步骤 3.makefile创建规则 3.1一个基本规则 3.2两个常用函数 4.示例文件 三、GDB 示例&#xff1a;…

精雕细琢的文档体验:Spring Boot 与 Knife4j 完美交汇

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 精雕细琢的文档体验&#xff1a;Spring Boot 与 Knife4j 完美交汇 前言Knife4j 与 Swagger 的区别1. 特性与优劣势对比&#xff1a;Knife4j&#xff1a;Swagger&#xff1a; 2. 选择 Knife4j 的理由&a…

【Linux】静态库和动态库

动静态库 一、静态库1. 静态库概念2. 制作静态库&#xff08;1&#xff09;朴素方法 --- 不打包&#xff08;2&#xff09;对静态库打包 3. 使用静态库&#xff08;1&#xff09;朴素方法 --- 直接使用&#xff08;2&#xff09;使用打包好的静态库 二、动态库1. 动态库概念2. …

读论文:DiffBIR: Towards Blind Image Restoration with Generative Diffusion Prior

DiffBIR 发表于2023年的ICCV&#xff0c;是一种基于生成扩散先验的盲图像恢复模型。它通过两个阶段的处理来去除图像的退化&#xff0c;并细化图像的细节。DiffBIR 的优势在于提供高质量的图像恢复结果&#xff0c;并且具有灵活的参数设置&#xff0c;可以在保真度和质量之间进…

Allegro如何在关闭飞线模式下查看网络连接并显示引脚号

Allegro如何在关闭飞线模式下查看网络连接并显示引脚号 在用Allego进行PCB设计过程中,有时候在关闭全部飞线的情况下,但想查看网络的连接位置。那如何快速查看网络连接,并显示器件的引脚号呢? 操作效果如下图: 具体操作方法如下: 首先选择菜单Logic 选择Net_Schedule(网…

【51单片机】直流电机实验和步进电机实验

目录 直流电机实验直流电机介绍ULN2003 芯片介绍硬件设计软件设计实验现象 步进电机实验步进电机简介步进电机的工作原理步进电机极性区分双极性步进电机驱动原理单极性步进电机驱动原理细分驱动原理 28BYJ-48 步进电机简介软件设计 橙色 直流电机实验 在未学习 PWM 之前&…

算法每日一题: 使用循环数组所有元素相等的最少秒数 | 哈希

大家好&#xff0c;我是星恒&#xff0c;今天给大家带来的是一道需要感觉规律的题目&#xff0c;只要读懂题目中的规律&#xff0c;就可以做出来了 这道题用到了哈希&#xff0c;还有一个关键点比较类似循环队列 题目&#xff1a;leetcode 2808 给你一个下标从 0 开始长度为 n…

SpringBoot 过滤器Filter 拦截请求 生命周期

介绍 当用户请求接口时&#xff0c;请求会先到过滤器&#xff0c;在到处理逻辑的接口&#xff0c;在过滤器中可以可以判断用户权限&#xff0c;如&#xff1a;是否登录&#xff0c;或请求前的一些操作&#xff0c;完成一下比较通用的操作&#xff0c;如&#xff1a;前端的AXIO…

备战蓝桥杯---搜索(剪枝)

何为剪枝&#xff0c;就是减少搜索树的大小。 它有什么作用呢&#xff1f; 1.改变搜索顺序。 2.最优化剪枝。 3.可行性剪枝。 首先&#xff0c;单纯的广搜是无法实现的&#xff0c;因为它存在来回跳的情况来拖时间。 于是我们可以用DFS&#xff0c;那我们如何剪枝呢&#…

【Java程序设计】【C00232】基于Springboot的抗疫物资管理系统(有论文)

基于Springboot的抗疫物资管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的抗疫物资管理系统 用户主要分为管理员和普通用户 管理员&#xff1a; 管理员可以对后台数据进行管理、拥有最高权限、具体权限有…

蓝桥杯每日一解

可以看看a的ascii码为6532 而A为ascii码为65&#xff0c;大小写相差32位 #include <iostream>using namespace std; int main(){int n;cin >> n;char a;for (int i 1;i<n;i){while(scanf("%c",&a) ! EOF){//无限输入直到输入到空格if(a a || a …

Web html和css

目录 1 前言2 HTML2.1 元素(Element)2.1.1 块级元素和内联(行级)元素2.1.2 空元素 2.2 html页面的文档结构2.3 常见标签使用2.3.1 注释2.3.2 标题2.3.3 段落2.3.4 列表2.3.5 超链接2.3.6 图片2.3.7 内联(行级)标签2.3.8 换行 2.4 属性2.4.1 布尔属性 2.5 实体引用2.6 空格2.7 D…