1 line
3.4 KiB
Java
1 line
3.4 KiB
Java
package cn.mesalab.utils;
|
||
|
||
import cn.mesalab.config.ApplicationConfig;
|
||
import org.apache.hadoop.conf.Configuration;
|
||
import org.apache.hadoop.hbase.HBaseConfiguration;
|
||
import org.apache.hadoop.hbase.HConstants;
|
||
import org.apache.hadoop.hbase.TableName;
|
||
import org.apache.hadoop.hbase.client.Connection;
|
||
import org.apache.hadoop.hbase.client.ConnectionFactory;
|
||
import org.apache.hadoop.hbase.client.Put;
|
||
import org.apache.hadoop.hbase.client.Table;
|
||
import org.apache.hadoop.hbase.util.Bytes;
|
||
import org.apache.hadoop.io.ArrayWritable;
|
||
import org.apache.hadoop.io.IntWritable;
|
||
import org.apache.hadoop.io.Writable;
|
||
import org.apache.hadoop.io.WritableUtils;
|
||
import org.slf4j.Logger;
|
||
import org.slf4j.LoggerFactory;
|
||
|
||
import java.io.IOException;
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
|
||
/**
|
||
* @author yjy
|
||
* @version 1.0
|
||
* @date 2021/7/23 4:56 下午
|
||
*/
|
||
public class HbaseUtils {
|
||
|
||
private static final Logger LOG = LoggerFactory.getLogger(HbaseUtils.class);
|
||
private static HbaseUtils hbaseUtils;
|
||
|
||
static {
|
||
hbaseUtils = HbaseUtils.getInstance();
|
||
}
|
||
|
||
public static HbaseUtils getInstance(){
|
||
if (hbaseUtils == null) {
|
||
hbaseUtils = new HbaseUtils();
|
||
}
|
||
return hbaseUtils;
|
||
}
|
||
|
||
public Table getHbaseTable(){
|
||
Table hbaseTable = null;
|
||
try{
|
||
Configuration config = HBaseConfiguration.create();
|
||
config.set(HConstants.ZOOKEEPER_QUORUM, ApplicationConfig.HBASE_ZOOKEEPER_QUORUM);
|
||
config.set(HConstants.ZOOKEEPER_CLIENT_PORT, ApplicationConfig.HBASE_ZOOKEEPER_CLIENT_PORT);
|
||
TableName tableName = TableName.valueOf(ApplicationConfig.HBASE_TABLE);
|
||
|
||
Connection conn = ConnectionFactory.createConnection(config);
|
||
hbaseTable = conn.getTable(tableName);
|
||
} catch (IOException e){
|
||
LOG.error("HBase 创建HBase table失败!");
|
||
e.printStackTrace();
|
||
}
|
||
|
||
return hbaseTable;
|
||
}
|
||
|
||
public List<Put> cachedInPut(List<Put> putList, String ip, int[] baseline, String attackType, String metricType){
|
||
Put rowPut = new Put(Bytes.toBytes(ip));
|
||
// FOR TEST
|
||
// start
|
||
if(attackType.equals(ApplicationConfig.DRUID_ATTACKTYPE_TCP_SYN_FLOOD)){
|
||
attackType = "TCP SYN Flood";
|
||
} else if(attackType.equals(ApplicationConfig.DRUID_ATTACKTYPE_UDP_FLOOD)){
|
||
attackType = "UDP Flood";
|
||
} else if(attackType.equals(ApplicationConfig.DRUID_ATTACKTYPE_ICMP_FLOOD)){
|
||
attackType = "ICMP Flood";
|
||
} else {
|
||
attackType = "DNS Amplification";
|
||
}
|
||
// end
|
||
|
||
rowPut.addColumn(
|
||
Bytes.toBytes(attackType),
|
||
Bytes.toBytes(metricType),
|
||
WritableUtils.toByteArray(toWritable(baseline)));
|
||
putList.add(rowPut);
|
||
return putList;
|
||
}
|
||
|
||
private static Writable toWritable(int[] arr) {
|
||
Writable[] content = new Writable[arr.length];
|
||
for (int i = 0; i < content.length; i++) {
|
||
content[i] = new IntWritable(arr[i]);
|
||
}
|
||
return new ArrayWritable(IntWritable.class, content);
|
||
}
|
||
|
||
public static ArrayList<Integer> fromWritable(ArrayWritable writable) {
|
||
Writable[] writables = ((ArrayWritable) writable).get();
|
||
ArrayList<Integer> list = new ArrayList<Integer>(writables.length);
|
||
for (Writable wrt : writables) {
|
||
list.add(((IntWritable)wrt).get());
|
||
}
|
||
return list;
|
||
}
|
||
|
||
}
|