HADOOP集群 SHELL日志采集

12人阅读 评论(0) 收藏 举报
分类:

JAVA代码模拟生成日志

public class GenerateLog {
	public static void main(String[] args) throws Exception {
		Logger logger = LogManager.getLogger("testlog");
		int i = 0;
		while (true) {
			logger.info(new Date().toString() + "-----------------------------");
			i++;
			Thread.sleep(500);
			if (i > 1000000)
				break;
		}
	}
}
log4j.rootLogger=INFO,testlog

log4j.appender.testlog = org.apache.log4j.RollingFileAppender 
log4j.appender.testlog.layout = org.apache.log4j.PatternLayout 
log4j.appender.testlog.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n 
log4j.appender.testlog.Threshold = INFO 
log4j.appender.testlog.ImmediateFlush = TRUE 
log4j.appender.testlog.Append = TRUE 
log4j.appender.testlog.File = /home/hadoop/logs/log/access.log 
log4j.appender.testlog.MaxFileSize = 10KB 
log4j.appender.testlog.MaxBackupIndex = 20 
#log4j.appender.testlog.Encoding = UTF-8 

将工程打成JAR包(export---->Java---->Runnable JAR file---->(Export dextination:重命名F:\log.jar))

在linux服务器中执行命令:java -jar log.jar

shell脚本

#!/bin/bash

#set java env
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_51
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

#set hadoop env
export HADOOP_HOME=/home/hadoop/app/hadoop-2.6.4
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH


#版本1的问题:
#虽然上传到Hadoop集群上了,但是原始文件还在。如何处理?
#日志文件的名称都是xxxx.log1,再次上传文件时,因为hdfs上已经存在了,会报错。如何处理?

#如何解决版本1的问题
#       1、先将需要上传的文件移动到待上传目录
#	2、在讲文件移动到待上传目录时,将文件按照一定的格式重名名
#		/export/software/hadoop.log1   /export/data/click_log/xxxxx_click_log_{date}


#日志文件存放的目录
log_src_dir=/home/hadoop/logs/log/

#待上传文件存放的目录
log_toupload_dir=/home/hadoop/logs/toupload/


#日志文件上传到hdfs的根路径
hdfs_root_dir=/data/clickLog/20151226/

#打印环境变量信息
echo "envs: hadoop_home: $HADOOP_HOME"


#读取日志文件的目录,判断是否有需要上传的文件
echo "log_src_dir:"$log_src_dir
ls $log_src_dir | while read fileName
do
	if [[ "$fileName" == access.log.* ]]; then
	# if [ "access.log" = "$fileName" ];then
		date=`date +%Y_%m_%d_%H_%M_%S`
		#将文件移动到待上传目录并重命名
		#打印信息
		echo "moving $log_src_dir$fileName to $log_toupload_dir"xxxxx_click_log_$fileName"$date"
		mv $log_src_dir$fileName $log_toupload_dir"xxxxx_click_log_$fileName"$date
		#将待上传的文件path写入一个列表文件willDoing
		echo $log_toupload_dir"xxxxx_click_log_$fileName"$date >> $log_toupload_dir"willDoing."$date
	fi
	
done
#找到列表文件willDoing
ls $log_toupload_dir | grep will |grep -v "_COPY_" | grep -v "_DONE_" | while read line
do
	#打印信息
	echo "toupload is in file:"$line
	#将待上传文件列表willDoing改名为willDoing_COPY_
	mv $log_toupload_dir$line $log_toupload_dir$line"_COPY_"
	#读列表文件willDoing_COPY_的内容(一个一个的待上传文件名)  ,此处的line 就是列表中的一个待上传文件的path
	cat $log_toupload_dir$line"_COPY_" |while read line
	do
		#打印信息
		echo "puting...$line to hdfs path.....$hdfs_root_dir"
		hadoop fs -put $line $hdfs_root_dir
	done	
	mv $log_toupload_dir$line"_COPY_"  $log_toupload_dir$line"_DONE_"
done

crontab配置

 */1 * * * * sh /export/servers/shell/uploadFile2Hdfs.v2.sh
# 一分钟运行一次
# 编辑命令是crontab -e
# 查看命令是crontab -l
查看评论

hadoop集群启动和关闭shell脚本

说明: 1、先启动zookeeper,再启动hdfs,再启动yarn。 2、user为hadoop使用的linux用户。 3、采用SSH登陆到其他机器执行脚本的方式,且配置了ssh免密钥登陆。s...
  • jinyingone
  • jinyingone
  • 2015-03-08 20:27:53
  • 1020

hadoop集群及相关服务的启动、停止shell脚本

之前一直是手动启动,一个一个命令敲,好麻烦,最近写了一个启动和暂停的脚本分享给大家启动脚本start-cluster.sh#!/bin/sh echo -e "\033[31m ========Sta...
  • lieyanhaipo
  • lieyanhaipo
  • 2017-09-03 15:11:54
  • 252

linux下hadoop集群常用命令

1.上传文件    1)hadoop fs -put words.txt /path/to/input/    2)hdfs dfs -put words.txt /path/wc/input/2.获...
  • u011254180
  • u011254180
  • 2018-02-28 13:58:56
  • 1173

flume日志采集

  • 2018年04月02日 16:23
  • 43B
  • 下载

tuxedo shell日志采集脚本

  • 2009年10月28日 11:56
  • 1KB
  • 下载

自定义shell脚本采集日志信息

一、模拟日志的动态产生在真实的环境中,日志是有nginx或者是tomcat等容器生成的,只需要采集的脚本或者是框架如flume、logstack等。 在本次测试中,采取log4j动态生成来模拟真实环...
  • tianjun2012
  • tianjun2012
  • 2017-03-16 15:41:19
  • 1133

日志采集——架构分类

角色 Agent 消息收集点,运行于消息产生源,分为三个角色: Adaptor,他从物理文件、sock、unixsock、标准输入等抽取原始消息,处理Filter,对不同的消息类型对...
  • anghlq
  • anghlq
  • 2016-01-19 15:29:56
  • 1825

【Hadoop】同步集群时间

转载:hadoop集群时间同步测试环境:192.168.217.130 master master.hadoop192.168.217.131 node1 node1.hadoop192.168.21...
  • NextAction
  • NextAction
  • 2018-01-17 21:14:42
  • 225

Shell脚本定时采集日志数据到HDFS

在一些web站点上,会在页面上用js来监听一些用户操作事件,然后用ajax请求web服务器上的action来记录用户的行为。Web服务器上会有很多日志文件描述了用户的行为。其他的Web服务器也是分别记...
  • mrbcy
  • mrbcy
  • 2017-02-25 21:33:06
  • 762

Flume 构建高可用可扩展的海量日志采集系统

  • 2018年02月08日 10:40
  • 70.78MB
  • 下载
    个人资料
    持之以恒
    等级:
    访问量: 467
    积分: 281
    排名: 31万+
    文章存档