From 1e38cc29f377bc83a5255de276654939580b0176 Mon Sep 17 00:00:00 2001 From: gaosiao <1761735028@qq.com> Date: Wed, 9 Aug 2023 11:50:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 27 +++ .gitignore | 1 + .project | 23 ++ .settings/org.eclipse.core.resources.prefs | 5 + .settings/org.eclipse.jdt.core.prefs | 5 + .settings/org.eclipse.m2e.core.prefs | 4 + README.md | 120 +++++++++- docs/images/architecture.png | Bin 0 -> 54731 bytes docs/日志分析系统.docx | Bin 0 -> 62325 bytes docs/架构.ppt | Bin 0 -> 267776 bytes pom.xml | 87 +++++++ .../com/wankun/logcount/kafka/MsgSender.java | 54 +++++ .../com/wankun/logcount/kafka/TailLog.java | 132 +++++++++++ .../wankun/logcount/kafka/TailService.java | 28 +++ .../com/wankun/logcount/spark/LogStream.java | 141 ++++++++++++ .../com/wankun/logcount/spark/RecsysLogs.java | 49 ++++ src/main/resources/hbase-site.xml | 214 ++++++++++++++++++ src/main/resources/logback.xml | 53 +++++ src/main/resources/webapps/recsys/index.html | 11 + 19 files changed, 953 insertions(+), 1 deletion(-) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 docs/images/architecture.png create mode 100644 docs/日志分析系统.docx create mode 100644 docs/架构.ppt create mode 100644 pom.xml create mode 100644 src/main/java/com/wankun/logcount/kafka/MsgSender.java create mode 100644 src/main/java/com/wankun/logcount/kafka/TailLog.java create mode 100644 src/main/java/com/wankun/logcount/kafka/TailService.java create mode 100644 src/main/java/com/wankun/logcount/spark/LogStream.java create mode 100644 src/main/java/com/wankun/logcount/spark/RecsysLogs.java create mode 100644 src/main/resources/hbase-site.xml create mode 100644 src/main/resources/logback.xml create mode 100644 src/main/resources/webapps/recsys/index.html diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..6a3cba6 --- /dev/null +++ b/.classpath @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/.project b/.project new file mode 100644 index 0000000..0d2f4df --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + logcount + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..839d647 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..60105c1 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/README.md b/README.md index 2126131..f130fba 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,120 @@ -# logcount +# 日志分析系统 + +## 系统架构 + + 本使用kafka,spark,hbase开发日志分析系统。 + +![architecture](/docs/images/architecture.png "architecture") + +### 软件模块 + + * Kafka:作为日志事件的消息系统,具有分布式,可分区,可冗余的消息服务功能。 + * Spark:使用spark stream功能,实时分析消息系统中的数据,完成计算分析工作。 + * Hbase:做为后端存储,存储spark计算结构,供其他系统进行调用 + +## 环境部署 + +### 软件版本 + + * hadoop 版本 : Hadoop相关软件如zookeeper、hadoop、hbase,使用的是cloudera的 cdh 5.2.0 版本。 + * Kafka : 2.9.2-0.8.1.1 + +### 软件安装 + +a. 部署kafka + + tar -xzf kafka_2.9.2-0.8.1.1.tgz + +b. 编辑kafka 配置文件 + + config/server-1.properties: + broker.id=0 + port=9093 + log.dir=/tmp/kafka-logs + + config/server-2.properties: + broker.id=1 + port=9093 + log.dir=/tmp/kafka-logs + + config/server-3.properties: + broker.id=2 + port=9093 + log.dir=/tmp/kafka-logs + +c. 启动kafka + + bin/kafka-server-start.sh config/server-1.properties & + bin/kafka-server-start.sh config/server-2.properties & + bin/kafka-server-start.sh config/server-3.properties & + +d. 创建kafka topic + +> bin/kafka-topics.sh --create --zookeeper 10.10.102.191:2181, 10.10.102.192:2181, 10.10.102.193:2181 --replication-factor 3 --partitions 1 --topic recsys + +e. 查看是否创建成功 + +> bin/kafka-topics.sh --list --zookeeper localhost:2181 + +> bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic +Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs: + Topic: my-replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0 + + + +f. kafka启动测试 + +> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test +This is a message +This is another message + +> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning +This is a message +This is another message + +g. 注意事项 + +在开发程序的时候,producer客户端必须要配置上broker的host映射信息,即使你的程序中使用的都是ip地址。 + +## 项目开发 + +### 程序部署目录 + + /libs + * Logback包:logback-classic-1.1.2.jar,logback-core-1.1.2.jar + * Kafka包(在kafka安装包lib目录中) + /conf + * Logback:logback.xml + + /webapps/recsys + * index.html + / + * logcount-1.0.jar + +### Spark_Streaming 处理数据 +### HBase 保存数据 + +创建hbase表 + + create ‘recsys_logs’,’f’ + +服务器端部署.服务器端启动了一个httpserver,该server需要将jar包中的html页面解压出来,所以先解压,后运行程序 + + jar xvf recsys-1.0.jar + + +#### 系统运行 + +客户端 + +> java -Dlogback.configurationFile=./conf/logback.xml -classpath .:libs/*:logcount-1.0.jar com.wankun.logcount.kafka.TailService dest.log + + 服务端 + +> spark-submit --class com.wankun.logcount.spark.LogStream --master spark://SparkMaster:7077 logcount-1.0.jar + + +### 注释 + + diff --git a/docs/images/architecture.png b/docs/images/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..036c4d89d4f302e68359b3f0084396c3c3217522 GIT binary patch literal 54731 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 Mm9!Mg<;~yxALw%?8~^|S literal 0 HcmV?d00001 diff --git a/docs/日志分析系统.docx b/docs/日志分析系统.docx new file mode 100644 index 0000000000000000000000000000000000000000..91fd8e37c301d61a327969fdb7b43bc545f3a937 GIT binary patch literal 62325 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 ZETgFk#QyY71H%-63-|zl&c^Ax{{nc<;W_{S literal 0 HcmV?d00001 diff --git a/docs/架构.ppt b/docs/架构.ppt new file mode 100644 index 0000000000000000000000000000000000000000..6ea3b53a88599d75bc18d614d78e306c9842592f GIT binary patch literal 267776 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%0D0xK6tU81?$|vg8IVVsw69Qp8+|3HF7|%za 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 z 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 literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..e2512bc --- /dev/null +++ b/pom.xml @@ -0,0 +1,87 @@ + + 4.0.0 + + com.wankun + logcount + 1.0 + jar + + logcount + http://maven.apache.org + + + + cloudera + https://repository.cloudera.com/cloudera/cloudera-repos + + + + + UTF-8 + 1.1.0-cdh5.2.0 + 0.98.6-cdh5.2.0 + + + + jdk.tools + jdk.tools + 1.7.0_51 + system + ${JAVA_HOME}/lib/tools.jar + + + ch.qos.logback + logback-classic + 1.1.2 + + + org.apache.kafka + kafka_2.10 + 0.8.1.1 + + + + org.apache.spark + spark-streaming_2.10 + ${spark.version} + + + org.apache.spark + spark-streaming-kafka_2.10 + ${spark.version} + + + + org.apache.hbase + hbase-client + ${hbase.version} + + + org.apache.hbase + hbase-server + ${hbase.version} + + + + junit + junit + 4.11 + test + + + + + + + maven-compiler-plugin + 3.1 + + 1.6 + 1.6 + UTF-8 + + + + + diff --git a/src/main/java/com/wankun/logcount/kafka/MsgSender.java b/src/main/java/com/wankun/logcount/kafka/MsgSender.java new file mode 100644 index 0000000..e8c1c45 --- /dev/null +++ b/src/main/java/com/wankun/logcount/kafka/MsgSender.java @@ -0,0 +1,54 @@ +package com.wankun.logcount.kafka; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Properties; +import java.util.concurrent.BlockingQueue; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import kafka.javaapi.producer.Producer; +import kafka.producer.KeyedMessage; +import kafka.producer.ProducerConfig; + +public class MsgSender extends Thread { + private final static Logger logger = LoggerFactory.getLogger(MsgSender.class); + + private SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); + + private BlockingQueue queue; + private Producer producer; + + public MsgSender(BlockingQueue queue) { + this.queue = queue; + + Properties props = new Properties(); + props.put("metadata.broker.list", "10.10.102.191:9092,10.10.102.192:9092,10.10.102.193:9092"); + props.put("serializer.class", "kafka.serializer.StringEncoder"); + // props.put("partitioner.class", "example.producer.SimplePartitioner"); + props.put("request.required.acks", "1"); + + ProducerConfig config = new ProducerConfig(props); + + producer = new Producer(config); + } + + @Override + public void run() { + while (true) { + try { + String line = queue.take(); + if (line != null && !line.replace("\n", "").replace("\r", "").equals("")) { + String timestamp = sdf.format(new Date()); + KeyedMessage data = new KeyedMessage("recsys", timestamp, line); + logger.debug("sending kv :( {}:{})", timestamp, line); + producer.send(data); + } + } catch (InterruptedException e) { + logger.error("kafka producer 消息发送失败", e); + } + } + } + +} \ No newline at end of file diff --git a/src/main/java/com/wankun/logcount/kafka/TailLog.java b/src/main/java/com/wankun/logcount/kafka/TailLog.java new file mode 100644 index 0000000..b013870 --- /dev/null +++ b/src/main/java/com/wankun/logcount/kafka/TailLog.java @@ -0,0 +1,132 @@ +package com.wankun.logcount.kafka; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.nio.CharBuffer; +import java.util.concurrent.BlockingQueue; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TailLog extends Thread { + private final static Logger logger = LoggerFactory.getLogger(TailLog.class); + + private BlockingQueue queue; + private String logname; + + private CharBuffer buf = CharBuffer.allocate(4096); + + // private ByteBuffer buf = ByteBuffer.allocate(4096); + + public TailLog(BlockingQueue queue, String logname) { + this.queue = queue; + this.logname = logname; + } + + @Override + public void run() { + BufferedReader reader = null; + try { + // Path logpath=Paths.get(logname); + // File posfile = + // logpath.getParent().resolve("."+logpath.getFileName()+".pos").toFile(); + reader = new BufferedReader(new FileReader(new File(logname))); + + long filesize = 0; + while (true) { + // 判断文件是否已经切换 + if (filesize > new File(logname).length()) { + logger.debug("filesize :{} current system file size :{} . Log file switchover!", filesize, + new File(logname).length()); + try { + // 在切换读文件前,读取文件全部内容 + StringBuilder line = new StringBuilder(); + while (reader.read(buf) > 0) { + buf.flip(); + synchronized (buf) { + // 读buffer 并解析 + for (int i = 0; i < buf.limit(); i++) { + char c = buf.get(); + line.append(c); + if ((c == '\n') || (c == '\r')) + if (line.length() > 0) { + queue.put(line.toString()); + line = new StringBuilder(); + } + } + } + } + queue.put(line.toString()); + buf.clear(); + + // 切换读文件 + if (reader != null) + reader.close(); + reader = new BufferedReader(new FileReader(new File(logname))); + } catch (Exception e) { + logger.error("文件 {} 不存在", logname, e); + Thread.currentThread().sleep(10000); + continue; + } + } + + for (int retrys = 10; retrys > 0; retrys--) { + int bufread = reader.read(buf); + if (bufread < 0) { + if (retrys > 0) + Thread.currentThread().sleep(1000); + else { + // 等待10s后无新数据读出 + synchronized (buf) { + // 等待 cachetime 秒后文件仍未写入 + buf.flip(); + char[] dst = new char[buf.length()]; + buf.get(dst); + buf.clear(); + queue.put(new String(dst)); + } + } + } else { + filesize = new File(logname).length(); + retrys = -1; + + buf.flip(); + synchronized (buf) { + // 读buffer 并解析 + StringBuilder line = new StringBuilder(); + for (int i = 0; i < buf.limit(); i++) { + char c = buf.get(); + line.append(c); + if ((c == '\n') || (c == '\r')) + if (line.length() > 0) { + queue.put(line.toString()); + line = new StringBuilder(); + } + } + // 接着写不完整的数据 + buf.compact(); + if (line.length() > 0) { + buf.append(line); + } + } + break; + } + } + } + } catch (Exception e) { + logger.error("文件读取失败", e); + } finally { + if (reader != null) { + try { + reader.close(); + } catch (IOException e) { + logger.error("文件 reader 关闭失败", e); + } + } + } + + } + +} \ No newline at end of file diff --git a/src/main/java/com/wankun/logcount/kafka/TailService.java b/src/main/java/com/wankun/logcount/kafka/TailService.java new file mode 100644 index 0000000..4017fbd --- /dev/null +++ b/src/main/java/com/wankun/logcount/kafka/TailService.java @@ -0,0 +1,28 @@ +package com.wankun.logcount.kafka; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TailService { + + private final static Logger logger = LoggerFactory.getLogger(TailService.class); + + public static void main(String[] args) { + if (args.length < 1) { + logger.error("Usage : TailService [logfile]"); + System.exit(0); + } + + BlockingQueue queue = new ArrayBlockingQueue(10000); + + for (String arg : args) { + new TailLog(queue, arg).start(); + } + + new MsgSender(queue).start(); + } + +} diff --git a/src/main/java/com/wankun/logcount/spark/LogStream.java b/src/main/java/com/wankun/logcount/spark/LogStream.java new file mode 100644 index 0000000..1c307eb --- /dev/null +++ b/src/main/java/com/wankun/logcount/spark/LogStream.java @@ -0,0 +1,141 @@ +package com.wankun.logcount.spark; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.net.URI; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hbase.HBaseConfiguration; +import org.apache.hadoop.hbase.client.HConnection; +import org.apache.hadoop.hbase.client.HConnectionManager; +import org.apache.hadoop.hbase.client.HTableInterface; +import org.apache.hadoop.hbase.client.Put; +import org.apache.hadoop.hbase.util.Bytes; +import org.apache.hadoop.http.HttpServer2; +import org.apache.hadoop.net.NetUtils; +import org.apache.spark.SparkConf; +import org.apache.spark.api.java.JavaRDD; +import org.apache.spark.api.java.function.Function; +import org.apache.spark.streaming.Duration; +import org.apache.spark.streaming.api.java.JavaDStream; +import org.apache.spark.streaming.api.java.JavaPairReceiverInputDStream; +import org.apache.spark.streaming.api.java.JavaStreamingContext; +import org.apache.spark.streaming.kafka.KafkaUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import scala.Tuple2; + +import com.google.common.collect.Maps; + +public class LogStream { + private final static Logger logger = LoggerFactory.getLogger(LogStream.class); + + private static HConnection connection = null; + private static HTableInterface table = null; + private static HttpServer2 infoServer = null; + + public static void openHBase(String tablename) throws IOException { + Configuration conf = HBaseConfiguration.create(); + synchronized (HConnection.class) { + if (connection == null) + connection = HConnectionManager.createConnection(conf); + } + + synchronized (HTableInterface.class) { + if (table == null) { + table = connection.getTable("recsys_logs"); + } + } + + /* start http info server */ + HttpServer2.Builder builder = new HttpServer2.Builder().setName("recsys").setConf(conf); + InetSocketAddress addr = NetUtils.createSocketAddr("0.0.0.0", 8089); + builder.addEndpoint(URI.create("http://" + NetUtils.getHostPortString(addr))); + infoServer = builder.build(); + + infoServer.addServlet("monitor", "/monitor", RecsysLogs.class); + infoServer.setAttribute("htable", table); + infoServer.setAttribute("conf", conf); + infoServer.start(); + } + + public static void closeHBase() { + if (table != null) + try { + table.close(); + } catch (IOException e) { + logger.error("关闭 table 出错", e); + } + if (connection != null) + try { + connection.close(); + } catch (IOException e) { + logger.error("关闭 connection 出错", e); + } + if (infoServer != null && infoServer.isAlive()) + try { + infoServer.stop(); + } catch (Exception e) { + logger.error("关闭 infoServer 出错", e); + } + } + + public static void main(String[] args) { + // open hbase + try { + openHBase("logcount"); + } catch (IOException e) { + logger.error("建立HBase 连接失败", e); + System.exit(-1); + } + + SparkConf conf = new SparkConf().setAppName("recsys log stream"); + JavaStreamingContext ssc = new JavaStreamingContext(conf, new Duration(1000)); + + Map topicMap = Maps.newHashMap(); + topicMap.put("recsys", 4); + JavaPairReceiverInputDStream logstream = KafkaUtils.createStream(ssc, + "10.10.102.191:2181,10.10.102.192:2181,10.10.102.193:2181", "recsys_group1", topicMap); + + JavaDStream lines = logstream.map(new Function, String>() { + private static final long serialVersionUID = -1801798365843350169L; + + @Override + public String call(Tuple2 tuple2) { + return tuple2._2(); + } + }).filter(new Function() { + private static final long serialVersionUID = 7786877762996470593L; + + @Override + public Boolean call(String msg) throws Exception { + return msg.indexOf("character service received paramters:") > 0; + } + }); + + // 统计Log中的数据,并保存到HBase中 + JavaDStream nums = lines.count(); + nums.foreachRDD(new Function, Void>() { + + private SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); + + @Override + public Void call(JavaRDD rdd) throws Exception { + Long num = rdd.take(1).get(0); + String ts = sdf.format(new Date()); + Put put = new Put(Bytes.toBytes(ts)); + put.add(Bytes.toBytes("f"), Bytes.toBytes("nums"), Bytes.toBytes(num)); + table.put(put); + return null; + } + }); + + ssc.start(); + ssc.awaitTermination(); + } + +} diff --git a/src/main/java/com/wankun/logcount/spark/RecsysLogs.java b/src/main/java/com/wankun/logcount/spark/RecsysLogs.java new file mode 100644 index 0000000..cb5b804 --- /dev/null +++ b/src/main/java/com/wankun/logcount/spark/RecsysLogs.java @@ -0,0 +1,49 @@ +package com.wankun.logcount.spark; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.hadoop.hbase.client.HTableInterface; +import org.apache.hadoop.hbase.client.Result; +import org.apache.hadoop.hbase.client.ResultScanner; +import org.apache.hadoop.hbase.client.Scan; +import org.apache.hadoop.hbase.filter.PageFilter; +import org.apache.hadoop.hbase.util.Bytes; +import org.apache.hadoop.hbase.Cell; +import org.apache.hadoop.hbase.CellUtil; + +public class RecsysLogs extends HttpServlet { + + private static final long serialVersionUID = 4289573629015709424L; + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + HTableInterface htable = (HTableInterface) getServletContext().getAttribute("htable"); + Scan scan = new Scan(); + scan.addColumn(Bytes.toBytes("f"), Bytes.toBytes("nums")); + scan.setReversed(true); + // scan.setMaxResultSize(20); + scan.setFilter(new PageFilter(20)); + ResultScanner scanner = htable.getScanner(scan); + StringBuilder sb = new StringBuilder(); + for (Result res : scanner) { + Cell cell = res.getColumnLatestCell(Bytes.toBytes("f"), Bytes.toBytes("nums")); + Long nums = Bytes.toLong(CellUtil.cloneValue(cell)); + String key = Bytes.toString(CellUtil.cloneRow(cell)); + sb.append(key + " : " + nums + "\n"); + } + scanner.close(); + + resp.getWriter().write(sb.toString()); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + this.doGet(req, resp); + } + +} diff --git a/src/main/resources/hbase-site.xml b/src/main/resources/hbase-site.xml new file mode 100644 index 0000000..1fa2c4f --- /dev/null +++ b/src/main/resources/hbase-site.xml @@ -0,0 +1,214 @@ + + + + + + hbase.cluster.distributed + true + + + + hbase.rootdir + hdfs://dwztgame/hbase + + + + dfs.datanode.max.xcievers + 40960 + + + + hbase.zookeeper.quorum + node01.dw.ztgame.com:2181,node02.dw.ztgame.com:2181,node03.dw.ztgame.com:2181 + + + + hbase.regionserver.handler.count + 200 + Count of RPC Server instances spun up on RegionServers + Same property is used by the Master for count of master handlers. + Default is 10. + + + + hbase.regionserver.flushlogentries + 500 + Sync the HLog to HDFS when it has accumulated this many + entries. Default 1. Value is checked on every HLog.hflush + + + + hbase.regionserver.optionallogflushinterval + 2000 + Sync the HLog to the HDFS after this interval if it has not + accumulated enough entries to trigger a sync. Default 1 second. Units: + milliseconds. + + + + hbase.regionserver.thread.splitcompactcheckfrequency + 600000 + How often a region server runs the split/compaction check. + + + + hbase.regions.slop + 0 + Rebalance if any regionserver has average + (average * slop) regions. + Default is 0% slop. + + + + hbase.server.thread.wakefrequency + 5000 + Time to sleep in between searches for work (in milliseconds). + Used as sleep interval by service threads such as log roller. + + + + hbase.hregion.memstore.flush.size + 134217728 + Memstore will be flushed to disk if size of the memstore + exceeds this number of bytes. Value is checked by a thread that runs + every hbase.server.thread.wakefrequency. + + + + hbase.hregion.memstore.block.multiplier + 6 + + Block updates if memstore has hbase.hregion.block.memstore + time hbase.hregion.flush.size bytes. Useful preventing + runaway memstore during spikes in update traffic. Without an + upper-bound, memstore fills such that when it flushes the + resultant flush files take a long time to compact or split, or + worse, we OOME. + + + + hbase.hregion.memstore.mslab.enabled + true + Experimental: Enables the MemStore-Local Allocation Buffer, + a feature which works to prevent heap fragmentation under + heavy write loads. This can reduce the frequency of stop-the-world + GC pauses on large heaps. + + + + hfile.block.cache.size + 0.2 + Percentage of maximum heap (-Xmx setting) to allocate to block cache + used by HFile/StoreFile. Default of 0.2 means allocate 20%. + Set to 0 to disable. + + + + hbase.regionserver.nbreservationblocks + 10 + The number of resevoir blocks of memory release on + OOME so we can cleanup properly before server shutdown. + + + + hbase.regionserver.global.memstore.upperLimit + 0.5 + Maximum size of all memstores in a region server before new + updates are blocked and flushes are forced. Defaults to 40% of heap + + + + hbase.regionserver.global.memstore.lowerLimit + 0.4 + When memstores are being forced to flush to make room in + memory, keep flushing until we hit this mark. Defaults to 35% of heap. + This value equaggl to hbase.regionserver.global.memstore.upperLimit causes + the minimum possible flushing to occur when updates are blocked due to + memstore limiting. + + + + hbase.hregion.max.filesize + 2684354560 + + Maximum HStoreFile size. If any one of a column families' HStoreFiles has + grown to exceed this value, the hosting HRegion is split in two. + Default: 256M. + + + + hbase.snapshot.enabled + true + + + + hbase.regionserver.regionSplitLimit + 200 + Limit for the number of regions after which no more region + splitting should take place. This is not a hard limit for the number of + regions but acts as a guideline for the regionserver to stop splitting after + a certain limit. Default is set to MAX_INT; i.e. do not block splitting. + + + + hbase.hstore.compactionThreshold + 4 + If more than this number of HStoreFiles in any one HStore + (one HStoreFile is written per flush of memstore) then a compaction + is run to rewrite all HStoreFiles files as one. Larger numbers + put off compaction but when it runs, it takes longer to complete. + + + + hbase.hstore.blockingStoreFiles + 12 + If more than this number of StoreFiles in any one Store + (one StoreFile is written per flush of MemStore) then updates are + blocked for this HRegion until a compaction is completed, or + until hbase.hstore.blockingWaitTime has been exceeded. + + + + hbase.hstore.compaction.max + 6 + Max number of HStoreFiles to compact per 'minor' compaction. + + + + hbase.hregion.majorcompaction + 172800000 + The time (in miliseconds) between 'major' compactions of all + HStoreFiles in a region. Default: 1 day. + .set to 0 to disable automated major compactions. + + + + io.storefile.bloom.enabled + true + + + + hbase.replication + true + + + diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000..8dd2893 --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,53 @@ + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + logs/recsys.log + + logs/recsys.log.%i.bak + 1 + 12 + + + 100MB + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + diff --git a/src/main/resources/webapps/recsys/index.html b/src/main/resources/webapps/recsys/index.html new file mode 100644 index 0000000..f9ba4cf --- /dev/null +++ b/src/main/resources/webapps/recsys/index.html @@ -0,0 +1,11 @@ + + + + recsys logs 监控系统 + + + +

欢迎使用recsys logs 监控系统!


+
查看日志最新情况 + +