Shell定时上传日志到HDFS

news2024/9/24 1:18:14

Shell定时上传日志到HDFS

  • 一、任务需求
  • 二、实现思路
  • 三、具体实现流程
    • 3.1 规划文件上传目录
    • 3.2 开发 shell 脚本
    • 3.3 授予 shell 可执行权限
    • 3.4 手动执行查看
    • 3.4 定时执行 shell 脚本

一、任务需求

公司在线服务器每天都会产生网站运行日志,为了避免志文件过大,日志文件需按照群,后期再使用MapReduce计每小时进行回滚,现在要求每小时定时上传日志文件到算框架定时处理日志文件。

二、实现思路

在线服务器每小时滚动生成的访问日志文件名称为access.log,历史访问日志文件以时间为后缀精确到小时名称为access.log.2021-10-27-10。当前access.log会继续写入访问日志等待日志回滚,历史访问日志access.log.2021-10-27-10满足上传条件,可以先移动到待上传区间,然后再将待上传区间的文件上传至HDFS集群

三、具体实现流程

3.1 规划文件上传目录

  • 原始日志存放目录
[root@hadoop1 hadoop]# mkdir -p /usr/local/hadoop/data/tomcat/log/

在这里插入图片描述

  • 待传日志存放目录
[root@hadoop1 hadoop]# mkdir -p /usr/local/hadoop/data/unupload/log/

在这里插入图片描述

3.2 开发 shell 脚本

#!/bin/bash
#使得环境变量生效
source ~/.bashrc
#hadoop根目录
hadoop_home=/usr/local/hadoop/bin
#原始目录
log_src_dir=/usr/local/hadoop/data/tomcat/logs/
#待传目录
log_unupload_dir=/usr/local/hadoop/data/unupload/logs/
#hdfs日志存放路径
curDay=`date +%Y%m%d`
curHour=`date -d "1 hour ago" +"%H"`
hdfs_root_dir=/warehouse/web/ods/o_web_access_log_d/$curDay/$curHour/
#测试hdfs目录是否存在
$hadoop_home/hdfs dfs -test -e $hdfs_root_dir
if [ $? -eq 0 ] ;then
	echo 'directory is exist'
else
	$hadoop_home/hdfs dfs -mkdir -p  $hdfs_root_dir
fi

#第一步:将原始目录访问日志移动到待上传目录
ls $log_src_dir | while read logName
do
    if [[ "$logName" == access.log.* ]]; then
		suffix=`date +%Y_%m_%d_%H_%M_%S`
        #将原始目录文件移动到待上传目录
        mv $log_src_dir$logName $log_unupload_dir
        #将待上传文件路径写入文件logUploadPath中
        echo $log_unupload_dir"$logName" >> $log_unupload_dir"logUploadPath."$suffix
    fi
done
#第二步:将待上传目录中的访问日志上传至HDFS
ls $log_unupload_dir | grep logUploadPath |grep -v "_Ready_" | grep -v "_Done_" | while read logName
do
    #将待上传logUploadPath文件更名为logUploadPath_Ready_
    mv $log_unupload_dir$logName $log_unupload_dir$logName"_Ready_"
    #循环将logUploadPath_Ready_文件内容,上传至hdfs
    cat $log_unupload_dir$logName"_Ready_" |while read logName
    do
        $hadoop_home/hdfs dfs -put $logName $hdfs_root_dir
    done    
	#将准备上传logUploadPath_Ready_文件名,改为logUploadPath_Done_
    mv $log_unupload_dir$logName"_Ready_"  $log_unupload_dir$logName"_Done_"
done

3.3 授予 shell 可执行权限

[root@hadoop1 bin]# chmod u+x uploadAccessLogToHDFS.sh 

在这里插入图片描述

3.4 手动执行查看

[root@hadoop1 bin]# ./uploadAccessLog2HDFS.sh 

在这里插入图片描述

3.4 定时执行 shell 脚本

[root@hadoop1 bin]# crontab -e

添加内容如下所示:

5 * * * * /usr/locl/shell/bin/uploadLog2HDFS.sh

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

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

相关文章

WPF学习笔记

WPF WPF(Windows Presentation Foundation,Windows呈现基础)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的…

学习STM32(6)-- STM32单片机ADCDAC的应用

1 引 言 深入了解并掌握STM32F103单片机在模拟数字转换(ADC)和数字模拟转换(DAC)应用方面的功能和操作。学习如何配置STM32F103的ADC模块,实现模拟信号到数字信号的精确转换;同时,探索DAC模块…

【AI学习】[2024北京智源大会]具身智能:具身智能关键技术研究:操纵、决策、导航

具身智能关键技术研究:操纵、决策、导航 董 豪 | 北京大学助理教授 依然是边看边做些记录 这张图的重点是在说,我们的大脑,也是不同的部分处理不同的功能。这里面有些功能,比如视觉、听觉理解等功能,LLM已经具备&…

一键浪漫的回忆:微软开源的修复工具!!【送源码】

项目介绍 “Bringing-Old-Photos-Back-to-Life”是一款由微软开发的创新软件解决方案,它利用人工智能技术来修复和增强老旧照片的质量。这款工具可以解决老旧照片中常见的问题,如褪色、低分辨率以及物理损坏(如划痕和撕裂)。通过采…

分析 Vue3 Effect 函数看响应式依赖收集和触发更新过程

先给一个简单的实例,分析依赖收集和更新的过程 let obj { name: "hefeng6500", age: 10, flag: true }const state reactive(obj);effect(() > {app.innerHTML state.name state.age })setTimeout(() > {state.age 20 }, 1000)reactive 函数只…

吴恩达:如何系统学习机器学习?

最近在知乎圆桌里看到吴恩达的回答,【如何系统学习机器学习?】颇为惊喜,仿佛看到了知乎刚成立时的样子,请各个行业大佬来分享专业知识。 该回答目前已经有三千多赞,评论区也相当火爆,一片膜拜之声。 吴恩…

java学习19VUE

VUE NPM npm的全称是Node Package Manager 中文名为Node.js包管理器,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。NPM可以方便地从一个全球的代码库中获取并安装Node.js模块,这些模块可以用于构建应用程序、…

开发框架DevExpress XAF v24.2产品路线图预览——增强跨平台性

DevExpress XAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。 DevExpress XAF是一…

Python 之Scikit-learn(二) -- Scikit-learn标准化数据

在机器学习中,数据标准化是一项关键的预处理步骤。标准化(Standardization)是将数据转换为具有均值为0和标准差为1的分布。这样可以确保特征在相同的尺度上,有助于提升某些机器学习算法的性能和稳定性。 Scikit-learn提供了一个简…

一篇教会搭建ELK日志分析平台

日志分析的概述 日志分析是运维工程师解决系统故障,发现问题的主要手段日志主要包括系统日志、应用程序日志和安全日志系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因经常分析日志可以了解服务器的负荷,性…

Date类型的字段序列化成JSON字符串

我们发现收到的响应结果里面有一个参数为: 我们收到的时间字符串格式是由JSON序列化框架来决定的。 spring将JAVA数据类型的序列和反序列化为JSON字符串是依赖jackson(com.fasterxml.jackson.core:jackson-core)库来实现的。 Date类型的字段在序列化成JSON字符串时…

【人工智能】人工智能与机器学习的相关介绍

文章目录 人工智能的发展历程人工智能与机器学习关系图谱数据处理机器学习ML和深度学习DL的区别人工智能按照学习方式划分监督学习算法无监督学习算法总结 人工智能的发展历程 重要的时间点了解一下: 早在1950年人工智能就已经开始兴起 1997年deep blue战胜了人类国…

天津美术学院2024级专升本新生开学报道须知

天津美术学院2024级新生入学须知 亲爱的新同学: 祝贺你成为天津美术学院的新成员,开启新的求学历程!为方便新生入学,现将有关事宜通知如下: 一、报到安排 1.报到时间:2024年9月6日上午8:30—…

MYSQL的引擎、清空数据的两种方式

目录 1.MYSQL引擎介绍 1.1MySQL的引擎作用: 1.2 MySQL的3类引擎 1.3 MyISAM和InnoDB的区别 1.4设定引擎 2. 清空数据有两种不同的方式 2.1 区别 1.MYSQL引擎介绍 MySQL有多种引擎,能执行create table、select等命令,在数据量不多时…

二十九、MongoDB(1)

🌻🌻 目录 一、MongoDB简介1.1 什么是 MongoDB1.2 MongoDB特点1.3 MongoDB 体系结构 二、下载与安装2.1 MongoDB下载2.2 在Linux 上的安装2.2.1 安装前的准备2.2.2 开始安装2.2.3 测试软链接启动 2.3 在windows上的安装 三、基本增删改查操作3.1 选择或创…

lvs防火墙mark标记解决调度问题

实验环境是在之前部署DR模式集群的基础上做的,参考如下 部署DR模式集群 以http和https为例,当我们在webserver中同时开放80和443端口,那么默认控制是分开轮询的,就会出现了一个轮询错乱的问题: 当第一次访问80被轮询…

浅谈基础的图算法——Tarjan求强联通分量算法(c++)

文章目录 强联通分量SCC概念例子有向图的DFS树代码例题讲解[POI2008] BLO-Blockade题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 思路AC代码 【模板】割点(割顶)题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示…

【论文分享】测量城市夜间活力及其与城市空间结构的关系:一种数据驱动的方法

近年来,夜间活力作为反映城市经济和生活质量的重要指标受到关注。本次我们给大家带来一篇SCI论文的全文翻译。该论文采用了数据驱动的方法来测量夜间活力,并探索了其与城市空间结构的关系。该论文派生的洞见可以帮助制定空间策略,以增强夜间活…

微信小程序 - 自定义底部菜单栏

微信小程序底部菜单栏是可以通过自定义来实现的。主要涉及:新建组件、编写组件代码、设置样式、配置导航栏、在页面中引用。自定义底部导航栏可以创建出符合项目设计需求效果,实现个性化的页面切换功能。 如下图效果,为比较常见的中间突出半圆…

2-58 基于matlab的图像处理 GUI 程序

基于matlab的图像处理 GUI 程序,功能包括裁剪、 旋转和翻转图像。 更改曝光、 对比度和饱和度, 黑白、 灰度等常见处理效果。程序已调通,可直接运行。 2-58 图像处理 GUI 程序 - 小红书 (xiaohongshu.com)