hdfs日志上传脚本(二)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
写了一个从服务器上拉日志的脚本, 从多台服务器上拉日志,日志名称是相同的,且每天有两个日志文件生成,如每台服务器上都有如下两个文件:ok_2011-04-24_24H.rar,ok_2011-04-24_12H.rar。显然不能把所有日志放到同一目录中进行处理,而且要同时解压两个文件后才能进行下一步处理,我想到了使用awk打印出相应命令,然后再执行。
 
  1. #!/bin/bash 
  2. #2011-04-25 by qinshan.li 
  3. #download the track log 
  4. DIR="22 33 45 46 47 135 136 137" 
  5. DAY=$(/bin/date +%F) 
  6. #DAY=$(echo $1) 
  7.  
  8. for P in $DIR; do 
  9.   [[ -d "/lzo/jiaxing/track/$P" ]] || /bin/mkdir -p /lzo/jiaxing/track/$P 
  10.   MULU=/lzo/jiaxing/track/$P 
  11.  
  12. #Download the rar files. 
  13.   /usr/bin/wget -nc -r --exclude-directories=tmplog -nd -np -A "ok_${DAY}_*.rar" -P $MULU http://10.10.17.66:8003/"$P"/track/ 
  14.  
  15. #Create directory to save the decompressed rar files. 
  16.   n=$(/bin/ls $MULU/*.rar 2>/dev/null |/usr/bin/wc -l) 
  17.   if [[ "$n" != "0" ]]
  18. then 
  19.   [[ -d $MULU/$DAY ]] || /bin/mkdir -p $MULU/$DAY 
  20.  
  21.   /usr/bin/find $MULU -name "*${DAY}*.rar" |/bin/awk '{printf "/usr/local/bin/rar e %s %s/%s\n",$1,"'$MULU'","'$DAY'"}' |/bin/sh >/dev/null 
  22.   if [[ "$?" = "0" ]]
  23. then 
  24.   if /bin/cat $MULU/$DAY/*.* >>$MULU/66_icast_"$P"_"$DAY".txt
  25. then
  26.     if /usr/local/bin/lzop -U -9 $MULU/66_icast_"$P"_"$DAY".txt 
  27.     then 
  28. if /usr/local/bin/lzop -t $MULU/66_icast_"$P"_"$DAY".txt.lzo 
  29.       then 
  30.       ~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -moveFromLocal $MULU/66_icast_"$P"_"$DAY".txt.lzo /log/source/iCast_iFocus_track 
  31.         if [[ "$?" = "0" ]]
  32. then 
  33.         rm -rf $MULU/*  >/dev/null 2>&1
  34.         fi 
  35.        fi 
  36.       fi 
  37.     fi 
  38.     fi 
  39.   fi 
  40. done 
   这个脚本没有再使用wget的-N参数,因为同事告诉我,这里的日志虽然是以HTTP方式提供,但时间戳标记是关闭的,所以-N参数是没有用的。
   添加了-nc参数,wget会忽略已经下载过的文件,当然,这可能会导致一个问题,就是该文件在上次下载后已经更新,但wget仍然会忽略它,不过这种情况非常少见。
   这次也没有再使用awk的substr函数来提取字段,是因为这次R 目录长度不同,不如直接使用$MULU和$DAY方便。要说明的是,$MULU这个变量,原来写的是$PATH,但是后来在执行hadoop的fs命令进行上传操作时,报了错误,它把$PATH变量解释成了环境变量的$PATH!看来,在设置自定义变量时要慎之又慎啊!

本文转自 li_qinshan 51CTO博客,原文链接:http://blog.51cto.com/share/554160
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
509 1
|
监控 安全 Shell
防止员工泄密的措施:在Linux环境下使用Bash脚本实现日志监控
在Linux环境下,为防止员工泄密,本文提出使用Bash脚本进行日志监控。脚本会定期检查系统日志文件,搜索敏感关键词(如"password"、"confidential"、"secret"),并将匹配项记录到临时日志文件。当检测到可疑活动时,脚本通过curl自动将数据POST到公司内部网站进行分析处理,增强信息安全防护。
390 0
|
Java Shell
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
200 1
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
存储 分布式计算 资源调度
通过日志聚合将作业日志存储在HDFS中
如何通过配置Hadoop的日志聚合功能,将作业日志存储在HDFS中以实现长期保留,并详细说明了相关配置参数和访问日志的方法。
260 1
通过日志聚合将作业日志存储在HDFS中
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
258 2
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
304 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
411 6
|
Shell 测试技术 Linux
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
237 3

热门文章

最新文章