(六)日志生成
日志启动
1)代码参数说明 // 参数一:控制发送每条的延时时间,默认是0 Long delay = args.length > 0 ? Long.parseLong(args[0]) : 0L;
// 参数二:循环遍历次数 int loop_len = args.length > 1 ? Integer.parseInt(args[1]) : 1000; 2)将生成的jar包log-collector-0.0.1-SNAPSHOT-jar-with-dependencies.jar拷贝到hadoop002服务器/opt/module上,并同步到hadoop003的/opt/module路径下 xsync log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar 3)在hadoop002上执行jar程序 java -classpath log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar com.atguigu.appclient.AppMain >/opt/module/test.log 说明1: java -classpath 需要在jar包后面指定全类名; java -jar 需要查看一下解压的jar包META-INF/ MANIFEST.MF文件中,Main-Class是否有全类名。如果有可以用java -jar,如果没有就需要用到java -classpath 说明2:/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。 标准输入0:从键盘获得输入 /proc/self/fd/0 标准输出1:输出到屏幕(即控制台) /proc/self/fd/1 错误输出2:输出到屏幕(即控制台) /proc/self/fd/2 4)在/tmp/logs路径下查看生成的日志文件 cd /tmp/logs/ ls app-2020-06-10.log
将日志数据传入系统黑洞中,1表示标准输出到控制台,2表示标准输出错误信息,0表示键盘输入 java -classpath log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar com.atguigu.appclient.AppMain 1>/dev/null 2>/dev/null 2给1,1扔入黑洞,全都丢入黑洞,避免占用磁盘空间 java -classpath log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar com.atguigu.appclient.AppMain >/dev/null 2>&1 去掉全类名的写法,把jar包解压后,打开META-INFMANIFEST.MF,如果最后一行Main-Class:跟着全类名,就可以这样使用,与打包的插件功能有关 java -jar log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar >/dev/null 2>&1
集群日志生成启动脚本
1)在/home/shsxt/bin目录下创建脚本lg.sh
vim lg.sh 2)在脚本中编写如下内容 .#! /bin/bash
for i in hadoop002 hadoop003
do
ssh $i "java -classpath /opt/module/log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar com.atguigu.appclient.AppMain $1 $2 >/dev/null 2>&1 &"
done
3)修改脚本执行权限 chmod 777 lg.sh 4)启动脚本 lg.sh 5)分别在hadoop002、hadoop003的/tmp/logs目录上查看生成的数据 ls app-2020-06-10.log ls app-2020-06-10.log
远程登录,执行传入的所有命令
.# !/bin/bash
for i in hadoop002 hadoop003 hadoop004 do echo "==========
i "$*" done
- 如何在Windows Server2008搭建DNS服务并配置泛域名解析
- 如何通过CM API优雅的获取元数据库密码
- CM启动报InnoDB engine not found分析
- 如何在Hue中使用Sentry
- 如何在Redhat中配置R环境
- 如何在Redhat中安装R的包及搭建R的私有源
- 什么是sparklyr
- 如何利用Dnsmasq构建小型集群的本地DNS服务器
- Cloudera Labs中的Phoenix
- 如何在CDH中使用Phoenix
- Java 8 时间 API 快速入门
- 如何在CDH中使用HPLSQL实现存储过程
- 如何掌握所有的编程语言
- 如何使用Sentry管理Hive外部表(补充)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法