parent
6d6c9c726c
commit
5d5f4de497
|
|
@ -7,14 +7,10 @@ import java.util.Date;
|
|||
|
||||
import org.apache.hadoop.conf.Configuration;
|
||||
import org.apache.hadoop.conf.Configured;
|
||||
import org.apache.hadoop.fs.Path;
|
||||
import org.apache.hadoop.hbase.MetaTableAccessor;
|
||||
import org.apache.hadoop.hbase.TableName;
|
||||
import org.apache.hadoop.hbase.client.Scan;
|
||||
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
|
||||
import org.apache.hadoop.io.Text;
|
||||
import org.apache.hadoop.mapreduce.Job;
|
||||
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
|
||||
import org.apache.hadoop.mapreduce.lib.output.NullOutputFormat;
|
||||
import org.apache.hadoop.util.GenericOptionsParser;
|
||||
import org.apache.hadoop.util.Tool;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ public class Categorize2ChainMapper extends TableMapper<Text, ChainInfo> {
|
|||
}
|
||||
|
||||
public static ChainInfo spanToChainInfo(String key, List<Span> spanList) {
|
||||
CostMap costMap = new CostMap();
|
||||
SubLevelSpanCostCounter costMap = new SubLevelSpanCostCounter();
|
||||
ChainInfo chainInfo = new ChainInfo();
|
||||
Collections.sort(spanList, new Comparator<Span>() {
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public class Categorize2ChainReducer extends Reducer<Text, ChainInfo, Text, IntW
|
|||
int totalCount = 0;
|
||||
try {
|
||||
ChainRelationship chainRelate = HBaseUtil.selectCallChainRelationship(key.toString());
|
||||
Summary summary = new Summary();
|
||||
ChainSummary summary = new ChainSummary();
|
||||
while (chainInfoIterator.hasNext()) {
|
||||
ChainInfo chainInfo = chainInfoIterator.next();
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -12,12 +12,12 @@ import java.text.SimpleDateFormat;
|
|||
import java.util.*;
|
||||
import java.util.Date;
|
||||
|
||||
public class Summary {
|
||||
public class ChainSummary {
|
||||
|
||||
private Map<String, ChainSpecificTimeWindowSummary> summaryResultMap;
|
||||
private Map<String, Timestamp> updateChainInfo;
|
||||
|
||||
public Summary() {
|
||||
public ChainSummary() {
|
||||
summaryResultMap = new HashMap<String, ChainSpecificTimeWindowSummary>();
|
||||
updateChainInfo = new HashMap<String, Timestamp>();
|
||||
}
|
||||
|
|
@ -8,7 +8,6 @@ public class SpanEntry {
|
|||
|
||||
private Span clientSpan;
|
||||
private Span serverSpan;
|
||||
private String startTime;
|
||||
|
||||
public SpanEntry() {
|
||||
|
||||
|
|
@ -66,7 +65,7 @@ public class SpanEntry {
|
|||
return resultCost;
|
||||
}
|
||||
|
||||
public long getClientCost() {
|
||||
private long getClientCost() {
|
||||
if (clientSpan != null) {
|
||||
return clientSpan.getCost();
|
||||
}
|
||||
|
|
@ -74,7 +73,7 @@ public class SpanEntry {
|
|||
return 0;
|
||||
}
|
||||
|
||||
public long getServerCost() {
|
||||
private long getServerCost() {
|
||||
if (serverSpan != null) {
|
||||
return serverSpan.getCost();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package com.ai.cloud.skywalking.analysis.categorize2chain;
|
|||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class CostMap {
|
||||
public class SubLevelSpanCostCounter {
|
||||
private Map<String, Long> costs = new HashMap<String, Long>();
|
||||
|
||||
public void put(String parentLevel, Long cost) {
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.ai.cloud.skywalking.analysis.categorize2chain.filter;
|
||||
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.CostMap;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.SubLevelSpanCostCounter;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.SpanEntry;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode;
|
||||
|
||||
|
|
@ -8,9 +8,9 @@ public abstract class SpanNodeProcessFilter {
|
|||
|
||||
private SpanNodeProcessFilter nextProcessChain;
|
||||
|
||||
public abstract void doFilter(SpanEntry spanEntry, ChainNode node, CostMap costMap);
|
||||
public abstract void doFilter(SpanEntry spanEntry, ChainNode node, SubLevelSpanCostCounter costMap);
|
||||
|
||||
protected void doNext(SpanEntry spanEntry, ChainNode node, CostMap costMap){
|
||||
protected void doNext(SpanEntry spanEntry, ChainNode node, SubLevelSpanCostCounter costMap){
|
||||
if(nextProcessChain != null){
|
||||
nextProcessChain.doFilter(spanEntry, node, costMap);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.ai.cloud.skywalking.analysis.categorize2chain.filter.impl;
|
||||
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.CostMap;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.SubLevelSpanCostCounter;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.SpanEntry;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.filter.SpanNodeProcessFilter;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode;
|
||||
|
|
@ -8,7 +8,7 @@ import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode;
|
|||
public class AppendBusinessKeyFilter extends SpanNodeProcessFilter {
|
||||
|
||||
@Override
|
||||
public void doFilter(SpanEntry spanEntry, ChainNode node, CostMap costMap) {
|
||||
public void doFilter(SpanEntry spanEntry, ChainNode node, SubLevelSpanCostCounter costMap) {
|
||||
node.setViewPoint(node.getViewPoint() + spanEntry.getBusinessKey());
|
||||
|
||||
this.doNext(spanEntry, node, costMap);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.ai.cloud.skywalking.analysis.categorize2chain.filter.impl;
|
||||
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.CostMap;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.SubLevelSpanCostCounter;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.SpanEntry;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.filter.SpanNodeProcessFilter;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode;
|
||||
|
|
@ -8,7 +8,7 @@ import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode;
|
|||
public class CopyAttrFilter extends SpanNodeProcessFilter {
|
||||
|
||||
@Override
|
||||
public void doFilter(SpanEntry spanEntry, ChainNode node, CostMap costMap) {
|
||||
public void doFilter(SpanEntry spanEntry, ChainNode node, SubLevelSpanCostCounter costMap) {
|
||||
node.setCallType(spanEntry.getCallType().toString());
|
||||
node.setStatus(spanEntry.getSpanStatus());
|
||||
node.setLevelId(spanEntry.getLevelId());
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
package com.ai.cloud.skywalking.analysis.categorize2chain.filter.impl;
|
||||
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.CostMap;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.SubLevelSpanCostCounter;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.SpanEntry;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.filter.SpanNodeProcessFilter;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode;
|
||||
|
||||
public class ProcessCostTimeFilter extends SpanNodeProcessFilter {
|
||||
@Override
|
||||
public void doFilter(SpanEntry spanEntry, ChainNode node, CostMap costMap) {
|
||||
public void doFilter(SpanEntry spanEntry, ChainNode node, SubLevelSpanCostCounter costMap) {
|
||||
node.setCost(spanEntry.getCost());
|
||||
|
||||
this.saveCostAsSubNodeCost(spanEntry, node, costMap);
|
||||
|
|
@ -17,7 +17,7 @@ public class ProcessCostTimeFilter extends SpanNodeProcessFilter {
|
|||
}
|
||||
|
||||
private void saveCostAsSubNodeCost(SpanEntry spanEntry, ChainNode node,
|
||||
CostMap costMap) {
|
||||
SubLevelSpanCostCounter costMap) {
|
||||
long subNodeCost = spanEntry.getCost();
|
||||
if (costMap.exists(spanEntry.getParentLevelId())) {
|
||||
subNodeCost += costMap.get(spanEntry.getParentLevelId());
|
||||
|
|
@ -26,7 +26,7 @@ public class ProcessCostTimeFilter extends SpanNodeProcessFilter {
|
|||
costMap.put(spanEntry.getParentLevelId(), subNodeCost);
|
||||
}
|
||||
|
||||
private void computeChainNodeCost(CostMap costMap, ChainNode node) {
|
||||
private void computeChainNodeCost(SubLevelSpanCostCounter costMap, ChainNode node) {
|
||||
String levelId = node.getParentLevelId();
|
||||
if (levelId != null && levelId.length() > 0) {
|
||||
levelId += ".";
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.ai.cloud.skywalking.analysis.categorize2chain.filter.impl;
|
||||
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.CostMap;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.SubLevelSpanCostCounter;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.SpanEntry;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.filter.SpanNodeProcessFilter;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode;
|
||||
|
|
@ -11,7 +11,7 @@ public class ReplaceAddressFilter extends SpanNodeProcessFilter {
|
|||
private static String IP_PORT_REGEX = "(([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))|localhost):([1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[0-9]{1,4})";
|
||||
|
||||
@Override
|
||||
public void doFilter(SpanEntry spanEntry, ChainNode node, CostMap costMap) {
|
||||
public void doFilter(SpanEntry spanEntry, ChainNode node, SubLevelSpanCostCounter costMap) {
|
||||
|
||||
String viewPoint = spanEntry.getViewPoint().replaceAll(IP_PORT_REGEX, spanEntry.getApplicationId());
|
||||
node.setViewPoint(viewPoint);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.ai.cloud.skywalking.analysis.categorize2chain.filter.impl;
|
||||
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.CostMap;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.SubLevelSpanCostCounter;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.SpanEntry;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.filter.SpanNodeProcessFilter;
|
||||
import com.ai.cloud.skywalking.analysis.categorize2chain.model.ChainNode;
|
||||
|
|
@ -9,7 +9,7 @@ import com.ai.cloud.skywalking.analysis.util.TokenGenerator;
|
|||
public class TokenGenerateFilter extends SpanNodeProcessFilter {
|
||||
|
||||
@Override
|
||||
public void doFilter(SpanEntry spanEntry, ChainNode node, CostMap costMap) {
|
||||
public void doFilter(SpanEntry spanEntry, ChainNode node, SubLevelSpanCostCounter costMap) {
|
||||
|
||||
String nodeToken = TokenGenerator.generateNodeToken(node.getParentLevelId() + "." + node.getLevelId() +
|
||||
"-" + node.getViewPoint());
|
||||
|
|
|
|||
Loading…
Reference in New Issue