hdfs日志上传脚本(三)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
为了上传文件到hdfs,我们曾写过脚本,也曾搭过webdav;但是原来写脚本时,我们把日志下载到linux服务器,这样就多了一步磁盘I/O操作,而通过webdav直接从windows上传日志到hdfs又遇到了些麻烦。
    下一步,我们想测试一下flume等日志收集系统,看看它们是否能够更方便、更实时地上传日志到hdfs。
    但现在,我们暂且回到脚本方式,但换了一下思路:原始日志在windows上直接处理成lzo格式,然后放到共享目录,我们linux服务器挂载这个windows共享目录,然后调用Hadoop命令进行上传,这样不就减少了本地磁盘I/O操作了吗? 看来思路很重要。
    这次的脚本,我们用两台linux服务器都挂载windows共享目录,两台linux服务器上都运行脚本,只需要在上传之前判断一下日志文件是否冲突,通过改名的方法达到独占的目的。
 
  1. #!/bin/bash 
  2. # 2012-03-02 by qinshan.li 
  3. export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin 
  4. windows="/hdfs/track_1469 /hdfs/track_1470 /hdfs/track_1722" 
  5. TRACK=/log/source/iCast_iFocus_track 
  6.  
  7. for DIR in $windows 
  8. do 
  9.     find $DIR -type f -name "*.lzo" |while read FILE 
  10.     do 
  11.         if [ -f "$FILE" ]; then 
  12.             if ! lsof |grep $FILE; then 
  13.                  Original=$(echo $FILE |awk -F '/' '{print $4}') 
  14.                  New=${L_N}_170 
  15.                  mv $DIR/$Original $DIR/$New 
  16.                  L_size=$(ls -l $DIR/$New |awk '{print $5}') 
  17.  
  18.                  if ~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -copyFromLocal $DIR/$New $TRACK 
  19.                  then 
  20.                      H_size=$(~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -ls $TRACK/$New |awk '{print $5}') 
  21.                      RAND=0 
  22.  
  23.                      while [ "$H_size" -ne "$L_size" ]; do 
  24.                          RAND=$(($RAND+1))  
  25.                          if [ $RAND -gt 5 ]; then 
  26.                              echo -e "Have tried 5 times to upload $FILE !" |mail -s "track jiaxing upload failure" -c aa@123.com bb@123.com -- -f bb@123.com -F bb 
  27.                              break 
  28.                          fi 
  29.  
  30.                          ~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -rm $TRACK/$New 
  31.                          ~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -copyFromLocal $DIR/$New $TRACK 
  32.                      done 
  33.                  fi 
  34.  
  35.                  ~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -mv $TRACK/$New $TRACK/$Original 
  36.                  rm -f $DIR/$New 
  37.              fi 
  38.          fi 
  39.      done 
  40. done 
    做计划任务的时候,写个脚本判断一下上面的脚本是否正在运行,是的话就先等一下,否的话,使用source的方式调用上面的脚本。
 
  1. #!/bin/bash 
  2. # 2012-03-02 by qinshan.li 
  3. # 
  4. if [ -z "$(/usr/bin/pgrep aa.sh)" ] 
  5. then 
  6.     echo -e "$(/bin/date +%F_%H:%M) Now running aa.sh" >>/hdfs/bb.log 
  7.     source /hdfs/aa.sh 
  8. else 
  9.     echo -e "$(/bin/date +%F_%H:%M) The script aa.sh is running." >>/hdfs/bb.log 
  10. fi
本文转自 li_qinshan 51CTO博客,原文链接:
http://blog.51cto.com/share/795404
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
8月前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
332 1
|
8月前
|
监控 安全 Shell
防止员工泄密的措施:在Linux环境下使用Bash脚本实现日志监控
在Linux环境下,为防止员工泄密,本文提出使用Bash脚本进行日志监控。脚本会定期检查系统日志文件,搜索敏感关键词(如"password"、"confidential"、"secret"),并将匹配项记录到临时日志文件。当检测到可疑活动时,脚本通过curl自动将数据POST到公司内部网站进行分析处理,增强信息安全防护。
199 0
|
3月前
|
Java Shell
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
47 1
|
2月前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
3月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
54 2
|
4月前
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
|
4月前
|
存储 分布式计算 资源调度
通过日志聚合将作业日志存储在HDFS中
如何通过配置Hadoop的日志聚合功能,将作业日志存储在HDFS中以实现长期保留,并详细说明了相关配置参数和访问日志的方法。
46 0
通过日志聚合将作业日志存储在HDFS中
|
5月前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
74 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
5月前
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
176 6
|
5月前
|
运维 监控 数据可视化
自动化运维:使用Python脚本进行日志分析
【8月更文挑战第31天】当系统出现问题时,我们通常会查看日志寻找线索。然而,手动阅读大量日志既费时又易出错。本文将介绍如何使用Python脚本自动分析日志,快速定位问题,提高运维效率。我们将从简单的日志读取开始,逐步深入到复杂的正则表达式匹配和错误统计,最后实现一个自动化的日志监控系统。无论你是新手还是老手,这篇文章都将为你提供有价值的参考。让我们一起探索如何用代码解放双手,让运维工作变得更加轻松吧!