- 博客(22)
- 资源 (4)
- 收藏
- 关注
原创 python多进程卡死排查记录
问题背景: python程序一开始为单进程结构,属于CPU密集型计算任务,为提高性能调整为多进程并行计算。 调整后运行时程序启动一会就全部进程卡死,不再往下运行。 问题排查: 程序中没有使用到进程锁或者分布式锁,所以先是排除了死锁的原因,可能为逻辑BUG或者代码异常。 多进程下只好通过打日志的方式定位下程序运行到什么位置了,最后定位出不再往下运行的代码行为: msgs: Dict = kwargs['msgs'] 这部分...
2021-08-13 16:12:56
9463
1
原创 Flink 学习笔记 4. Job的提交运行
Flink version: 1.11.3 1. 打包Job Jar 将前面的流处理WordCount打包成jar包,入口类为com.mit.wc.StreamWordCount 2. web UI 提交Job 2.1 提交Jar包到JobManager, 并配置相应执行参数 我这里是docker-compose启动的flink环境,所以监听的socket host是宿主机IP; 2.2 可以通过 Show Plan 查看执行图 执行图与并行度的设置有关,并行度的优先级顺序为 算..
2021-01-24 14:35:14
2105
4
原创 Dockerfile 构建 Flume 镜像
flume version: 1.9.0 1. 依赖的服务/组件 - java8 - flume 1.9.0 - supervisor-4.2.1 -setuptools-44.0.0 # 这里是基于centos7的镜像,内置python版本为2.7.6,所以需要一个支持py2的setuptools版本 -meld3-2.0.1 2.下载离线安装包 jdk8 https://repo.huaweicloud.com/java/jdk...
2021-01-04 21:26:09
1352
1
原创 Flume NetCat UDP Source 获取客户端IP
Flume-ng version: 1.9.0 Flume 官方文档:http://flume.apache.org/ - 官方文档中关于 NetCat UDP Source 的说明如下: 其中 remoteAddressHeader 这一项就是指定一个 key 用于再header中存放客户端IP,但实际使用中发现存在出入。 - 先编写一个自定义拦截器,将接收的event header和body在debug模式下打印出来看下,拦截器代码如下: package com.mit.DC; i.
2020-12-30 00:04:43
929
1
原创 Flink 学习笔记 3. docker-compose 搭建Flink环境
docker-compose version 1.27.4, build 40524192 flink image tag:1.11.3-scala_2.12-java8 docker hub 查看可用的flink镜像,这里选用的是1.11.3-scala_2.12-java8 这个tag的镜像 1. 拉取Flink 1.11.3 镜像 docker pull flink:1.11.3-scala_2.12-java8 2. 本地创建一个docker-flink目录用于搭建f...
2020-12-23 20:33:35
1599
原创 Flink 学习笔记 2. 流处理WordCount
Flink version: 1.11.3 1. StreamWordCount.java 这里使用 socketTextStream 作为流式数据源 package com.mit.wc; import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.enviro..
2020-12-23 12:11:32
506
原创 Flink 学习笔记 1. WordCount
Flink version: 1.11.3 目录 1. 创建project 2. 在resource下创建数据源文件 hello.txt 3. 创建 com.mit.wc.WordCount.class 3. 运行WordCount 1. 创建project 使用gradle创建项目,build.gradle 配置内容为 plugins { id 'java' } apply plugin: 'java' apply plugin: 'idea' sourceCom...
2020-12-22 21:29:40
408
原创 docker 修改无法启动的容器内的文件
docker 修改无法启动的容器内的文件 docker 修改已停止的容器内的文件 修改了docker内服务的配置文件, 修改后重启docker时因为配置错误导致docker无法启动, 这时无法通过exec方式再次进入容器进行修改。 # 1. 查看容器日志,一般可以看出是哪里改错了 docker logs <containerID> # 2. 将修改错误的配置文件拷贝到宿主机上 docker cp containerID:container_path host_path # 3. 修改拷..
2020-07-22 11:39:18
1950
1
原创 kafka partition offset的保存时间及重置
kafka partition offset的保存时间及重置 1. 问题背景 后端业务流程设计上有两个进程会以生产者和消费者角色操作kafka,每次操作会指定kafka topic下的指定partition,一段时间没用这个功能后,再次使用是发现消费进程从指定partition中取出的数据不是生产者新写入的数据; 即存在重复消费问题 2. 问题排查 查看被消费的topic的数据情况 查看使用的消费组在当前数据的消费情况 此时消费进程还在开着,可以看到 CURRENT-OFFSET 还在增长.
2020-07-15 17:36:57
2744
原创 使用celery canvas中的group任务类型实现分组任务
1. 需求背景: 某个业务需求实现过程需要对发布到celery的异步任务进行拆分,得到两个并行执行的子任务,同时在主任务的进度反馈中需要更新子任务的进度; 2. 实现方案: 1. 任务发布端通过 "send_task()" 方式进行任务发布; 2. worker接收到任务后,创建 group 任务,子任务的调用方式为 "task signature"; 3. 进度的更新利用了 celery res.get() 方法中的 "on_message" 回调进行任务状...
2020-05-22 18:47:40
2139
4
原创 neo4j 删除重复节点
这里的重复节点指的是一个label下的部分节点,属性A相同,其他属性不相同 问题背景: 本文中的数据为举例说明,实际数据不便展示,但表达的意思一致; 1. neo4j中label为PERSON的的节点有name和wechat两个属性,关系type为FRIEND; 2. 在进行数据的清洗和预处理过程中,name对应的wechat数据获取出现偏差,导致一个name在先后获取we...
2020-04-26 15:53:55
8283
1
原创 vcenter 问题排查--vcenter api上传文件至虚拟机报500错误
vcenter 问题排查–vcenter api上传文件至虚拟机报500错误 文章目录vcenter 问题排查--vcenter api上传文件至虚拟机报500错误1. 问题背景2. 问题排查记录 1. 问题背景 vcenter由5.5升级到6.0后,向esxi下的windows10虚拟机上传文件,vcenter api反馈500,但向同esxi下的windows7虚拟机上传文件是成功的。 2...
2019-12-19 12:32:41
2701
原创 使用py2neo查询/增加/删除neo4j索引
为避免在使用一个新建的graph_db时忘记创建索引,故在neo4j数据导入程序运行初进行索引的检查。 实现方式为在配置文件中配置需要使用的索引信息, 和neo4j中已存在的索引进行比较, 根据比较结果进行索引的增加, 删除等 配置文件config.pyclass CONFIG: class neo4j: host = "127.0.0.1" us...
2019-11-15 20:30:12
2177
原创 redis 限制内存使用大小
记录一次生产环境问题排查过程: 生产环境部署方式:nginx + uwsgi + flask 问题描述: 发现生产环境中之前正常运行的服务突然不可用了,查看程序日志发现部分接口访问时报I/O写错误,nginx acess.log显示504,error.log显示 upstream time out. 同时 netstat -apn | grep 6379 | wc -l 检查发现redis存...
2019-03-06 01:09:40
17179
1
原创 flask_sqlalchemy获取数据库中已有的表
许多flask_sqlalchemy都是在程序初始化时进行建表,当需要使用数据库中已存在的表时,有以下几种方法: - 1. 在程序中将该表以ORM模型的形式写出,可借助sqlacodegen工具生成,但似乎太费事了; - 2. 将已存在的表反射出来; 反射数据库中已存在的表 from flask_sqlalchemy import SQLAlchemy from flask_sqlalchemy ...
2019-03-05 12:56:52
11681
11
转载 redis 配置解析
我们可以在启动redis-server时指定应该加载的配置文件,方法如下: $ ./redis-server /path/to/redis.conf 在配置文件的开头部分,首先明确了一些度量单位: # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # ...
2019-03-05 11:39:51
338
转载 [scikit-learn] 特征二值化编码函数的一些坑
1. 前言 2. 问题起源 2.1. 对付数值型类别变量 2.2. 对付字符串型类别变量 2.3. 无用的尝试 3. 另一种解决方案 4. 参考资料 1. 前言 这几天埋头撰写『优雅高效地数据挖掘——基于Python的sklearn_pandas库』 一文,其中有一部分涉及如何批量并行地进行特征二值化,在此过...
2018-04-11 23:40:10
490
原创 python 执行shell命令无法获取返回值的解决方法
问题背景:利用python获取服务器中supervisor状态信息时发现未能获取到返回值。python获取执行shell命令后返回值得几种方式:# 1.os模块 ret = os.popen("supervisorctl status") ret_data = ret.read() # 2.subprocess模块 ret = subprocess.Popen('supervisorctl sta...
2018-03-21 12:05:35
6366
原创 利用Linux的crontab实现python定时任务
linux 系统下的crontab 定时任务: */2 表示定时任务周期。 cron 执行日志 /var/log/cron crontab -e 添加定时任务 crontab -l 查看添加的定时任务 1.Ubuntu: service cron start / status / restart / stop 编辑 /etc/crontab 文件添加定时任务:
2018-01-06 23:37:21
3184
1
原创 MongoDB数据删除后的磁盘空间释放
mognodb 在删除数据的情况下不释放占用的磁盘空间,即使drop collection也不行,除非drop database。 即,mongodb占用磁盘空间为10G时,删除8G数据后,数据文件占用空间大小仍是10G。"df"命令查看磁盘空间占用没有变化。 平时可以通过mongo命令行来监控MongoDB的磁盘空间使用情况,如下所示: mongo> db.serverStat...
2018-01-06 23:21:16
34853
1
原创 利用supervisor替换redis自带的守护
使用中发现有redis-server停止后未重启的情况 redis本身自带daemon,可查看redis自身配置文件: ################################ GENERAL ##################################### # By default Redis does not run as a daemon. Us
2018-01-06 23:01:06
2531
转载 zip bzip2 gzip xz tar文件解压缩
//压缩文件 zip bzip2 gzip xz tar 确定文件格式 file xxx //查看文件压缩格式 1.zip 压缩 zip -r xxx.zip xxx ==> xxx.zip 解压 unzip xxx.zip //解压后xxx.zip存在 2.gzip 压缩 gzip xxx ==> xxx.gz 解压 gunzip xxx.gz ==> xxx 解压后xxx.g
2018-01-06 22:26:41
427
Beautiful Soup 4官方翻译版.pdf
2019-10-08
streamparse文档
2018-09-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅