追踪着鹿的猎人是看不见山的

0%

前言

该项目可用于java、spark和hadoop项目的运行日志转发到kafka

工程中的日志通过该SDK收集发送到kafka,通过logstash收集到ES,通过kibana建立项目日志索引区分查看

操作方法

源代码

https://github.com/duhanmin/log-router.git

Spark on Yarn 日志接入ES

1
2
3
4
--jars  libs/kafka-clients-1.0.1.3.0.0.0-1634.jar,  \
--files spark-log4j.properties, \
--conf spark.driver.extraJavaOptions="-Dlog4j.configuration=spark-log4j.properties" \
--conf spark.executor.extraJavaOptions="-Dlog4j.configuration=spark-log4j.properties" \

Java、Spring、Spark、Flink接入日志方式类似

  • 详见Spark和Flink官网
  • 接入日志方式类似,详见下文中logback和log4j

logback方式配置模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?xml version="1.0" encoding="UTF-8" ?>

<configuration scan="true" scanPeriod="3 seconds">
<!--设置日志输出为控制台-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%logger{32}] %msg%n</pattern>
</encoder>
</appender>

<appender name="KAFKA" class="com.router.log.kafka.log4jappender.KafkaLogbackAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
<syncSend>false</syncSend>
<brokerList>ip:port</brokerList>
<appName>hotwheels-api</appName>
<topic>HOTWHEELS-REALTIME_LOG</topic>
</appender>

<!--设置日志输出为文件-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>logFile.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>logFile.%d{yyyy-MM-dd_HH-mm}.log.zip</FileNamePattern>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss,SSS} [%thread] %-5level %logger{32} - %msg%n</Pattern>
</layout>
</appender>

<root>
<level value="info"/>
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
<appender-ref ref="KAFKA"/>
</root>
</configuration>
阅读全文 »

修改网络和主机名

cdh6-master

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@cdh6-master ~]# hostnamectl set-hostname cdh6-master

[root@cdh6-master ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=bdf6fb11-50f4-403a-8ba6-b9dca61a591e
DEVICE=ens33
ONBOOT=yes

IPADDR=192.168.200.101
NETMASK=255.255.255.0
GATEWAY=192.168.200.2
DNS1=8.8.8.8
阅读全文 »

flink on yarn需要的组件与版本如下

  1. Zookeeper 3.4.9 用于做Flink的JobManager的HA服务
  2. hadoop 2.7.2 搭建HDFS和Yarn
  3. flink 1.9.1(scala 2.11)
阅读全文 »

场景

有张表,里面的记录不能存在重复记录,记录存在就更新,如果不存在就插入,分布式并发场景下会存在以下问题:

1
 Duplicate entry '1203923435854168066-139-68' for key 'PRIMARY'

phonetic-recognition项目介绍

采用cnn方案进行训练,与人脸识别face-recognition项目的网络结构类似

phonetic-recognition项目将一个维度的音频向量处理成了一个音频特征矩阵

MFCC相关知识参见“梅尔频率倒谱系数 MFCC”一文

最后用cnn训练,后面过程与人脸识别类似

源代码

https://github.com/duhanmin/phonetic-recognition.git

音频训练与识别

语音MFCCs特征处理:

image

阅读全文 »

face-recognition项目介绍

这个项目有两个大功能:人脸预处理和CNN人脸训练与识别

由于不能上传大文件,需要下载shape_predictor_68_face_landmarks文件,在该文件夹内提供了下载链接

人脸数据需要自己造,暂不提供

源代码

https://github.com/duhanmin/face-recognition.git

需要注意

由于dlib新版API只支持python3.6,在其他版本的python环境中需要进行重构

对人脸切割部分代码进行以下的重构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cutting_position = (d.left(), d.top(), d.right(), d.bottom())
# 切割出人脸
im = Image.open(path)
region = im.crop(cutting_position)
# 人脸缩放
a = 500 # 人脸方格大小
if region.size[0] >= a or region.size[1] >= a:
region.thumbnail((a, a), Image.ANTIALIAS)
else:
region = region.resize((a, a), Image.ANTIALIAS)
# 将Image转化为cv2
region = cv2.cvtColor(np.asarray(region), cv2.COLOR_RGB2BGR)
# 保存人脸
cv2.imshow('region', region)
print(type(region))
cv2.waitKey(0)

1、人脸预处理

人脸活体检测:从原始图片中识别出人脸的位置,以及68个特征点位置,借助shape_predictor_68_face_landmarks模型。

image

阅读全文 »