为了上传文件到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. #
  4. export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
  5. windows="/hdfs/track_1469 /hdfs/track_1470 /hdfs/track_1722"
  6. TRACK=/log/source/iCast_iFocus_track
  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. if ~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -copyFromLocal $DIR/$New $TRACK
  18. then
  19. H_size=$(~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -ls $TRACK/$New |awk '{print $5}')
  20. RAND=0
  21. while [ "$H_size" -ne "$L_size" ]; do
  22. RAND=$(($RAND+1))
  23. if [ $RAND -gt 5 ]; then
  24. 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
  25. break
  26. fi
  27. ~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -rm $TRACK/$New
  28. ~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -copyFromLocal $DIR/$New $TRACK
  29. done
  30. fi
  31. ~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -mv $TRACK/$New $TRACK/$Original
  32. rm -f $DIR/$New
  33. fi
  34. fi
  35. done
  36. done
    做计划任务的时候,写个脚本判断一下上面的脚本是否正在运行,是的话就先等一下,否的话,使用source的方式调用上面的脚本。
  1. #!/bin/bash 
  2. # 2012-03-02 by qinshan.li 
  3. if [ -z "$(/usr/bin/pgrep aa.sh)" ] 
  4. then 
  5.     echo -e "$(/bin/date +%F_%H:%M) Now running aa.sh" >>/hdfs/bb.log 
  6.     source /hdfs/aa.sh 
  7. else 
  8.     echo -e "$(/bin/date +%F_%H:%M) The script aa.sh is running." >>/hdfs/bb.log 
  9. fi
本文转自 li_qinshan 51CTO博客,原文链接:
http://blog.51cto.com/share/795404

hdfs日志上传脚本(三)相关推荐

  1. MySQL自动备份脚本和ftp上传脚本

    MySQL自动备份脚本,并上传ftp 在日常的工作中Mysql数据库备份是长期需要去做的一件运维工作,但是人工手动去做这一机械的动作确实必要性不高,所以写个脚本来跑是比较好的. mysql备份脚本 # ...

  2. 文件上传的三种方式-Java

    前言:负责,因为该项目他(jetty嵌入式开始SpringMvc)实现文件上传的必要性,并拥有java文件上传这一块还没有被曝光.并 Http 更多晦涩协议.因此,这种渐进的方式来学习和实践上载文件的 ...

  3. vue获取上传图片的名字和路径_使用Vue实现图片上传的三种方式

    项目中需要上传图片可谓是经常遇到的需求,本文将介绍 3 种不同的图片上传方式,在这总结分享一下,有什么建议或者意见,请大家踊跃提出来. 没有业务场景的功能都是耍流氓,那么我们先来模拟一个需要实现的业务 ...

  4. HDFS重复上传文件将会覆盖原文件

    HDFS重复上传文件,将会覆盖原文件.

  5. ESXi与Linux主机配置syslog日志上传远程服务器

    ESXi与Linux主机配置syslog日志上传远程服务器 https://www.conum.cn/cloud/vmware/148.html 前言 最近很多客户遇到等级保护监测,需要搭建日志服务器 ...

  6. 6.HDFS文件上传和下载API

    HDFS文件上传和下载API package hdfsAPI;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop ...

  7. CuteFTP上传脚本(VBS)

    CuteFTP上传脚本(VBS) 2010年08月13日 Option Explicit ' 强制显式声明变量. '****************************************** ...

  8. Android崩溃日志框架,崩溃日志上传框架 LogReport

    软件介绍 LogReport是一个崩溃日志上传框架 ,当App崩溃的时,把崩溃信息保存到本地的同时,自动给GitHub提交崩溃issue,你只需要几句,就能完成所有配置,更多细节请了解下方 另外,崩溃 ...

  9. Unity使用UnityWebRequest实现本地日志上传到web服务器

    一.前言 Unity项目开发中,遇到bug的时候,我们一般是通过日志来定位问题,所以写日志到本地文件,或者把日志文件上传到web服务器这样的功能就很必要了.下面就介绍下如何实现日志写入本地文件和上传本 ...

最新文章

  1. 推荐给c++学习者的经典
  2. Hive中文注释乱码解决方案
  3. openCV滑动条TrackBar事件实例
  4. JavaFX技巧8:美丽深层
  5. mongodb的常用增删改查命令:
  6. 工业数据采集平台SaaS
  7. 异常检测的总结性介绍
  8. 如何看懂EMC测试报告
  9. 如何在github上创建自己的个人网站
  10. js问号点的作用(?.)和问号问号(??)的用法
  11. 中国老百姓一生要交多少税?
  12. Praat将连续录制的声音文件切成小单位文件
  13. 音频均衡器 matlab code,急求高手 设计声音均衡器 滤波器
  14. java解析JT808协议
  15. 如何打造一支无法跨部门合作的团队?
  16. Codeforces Round #505 B. Weakened Common Divisor(思维)
  17. CAS单点登录-第三方登录[QQ、微信、CSDN、GitHub](十四)
  18. 三星linux应用程序,三星推出Linux on DeX应用程序,正式发布高端手机新品W2019
  19. Python3:《机器学习实战》之决策算法(3)预测隐形眼镜类型
  20. 关于esp8266 OLED气象图标显示和Return代码对应关系

热门文章

  1. redis单机版安装
  2. Django--Uploaded Files以及Handlers
  3. 总是多次出现 那个同样的 权限错误 _storage_write_error_, 所以一开始就把机器设好setenforce 0...
  4. PostgreSQL9.5和JSONB的强大功能
  5. 如何保护自己的android app
  6. 高效学习Oracle的方法论
  7. perl中的几个模块使用.
  8. IT工程师实战英语之一
  9. asp sql查询字段 过滤空格_SQL面试经典问答集萃
  10. OpenYurt — Yurtctl