短k-v在Redis中的存储

一、背景 目前越来越多的互联网公司将特征工程集成到机器学习平台中了,而特征工程作为其中非常重要的一环,也在最近两年快速的平台化。我这边遇到的一个需求是将特征存到FeatureService中,以便线上进行预估时读取,按之前的设计,FS是本地缓存-》redis-》TiKV(也有可能是别的基于SSD的kv)。 特征会以的SequenceFile存在HDFS的指定目录, 其中value中的BytesWritable是将原始的特征以protobuf的格式写入,特征平台如果没有proto文件也无法反序列化出来做监控预警,所有的数据传递都是bytes,而线上模型是知道怎么反序列化。 单个的k-v字节数会比较少,例如k可能只是一些id,而value是一些基本特征,就算是embedding的也可能只在50个字节左右。在这篇文章中, Redis百亿级Key存储方案, 提到了如何去优化。我这边做的优化类似,另外对于为什么直接k-v存储的内存占用会的扩大到10倍左右, ...

我的程序员知识整理

一、背景 作为一名以职业程序员,有太多的方向可以做了,无论哪一种方向,都可以投入一辈子的时间去钻研。但人的时间是有限的,"吾生也有涯,而知也无涯,以有涯随无涯,殆已",所以成为专家的一个必要条件就是有选择有规划。 无意中发现百度脑图这个在线的思维导图,当时就想可以作为博客的一个补充,来进行知识管理,后来遇到一些容易忘记的就写在这上面,不知不觉感觉有不少了,虽然我依然面临技术深度不足的问题,不过写出来总会更有有激励一些,所以记录在这篇博客里面了。 任何一项难的事情,其实都可以系统的一步一步解决,目前很多事情按大多数人的努力和专注程度而言,都还没有到拼智商的程度。这个知识整理,也更像是一个长期纠正自己时间错用在了什么地方的工具。 ...

hive UDF序列化异常问题记录

一、背景 我需要使用udf将hive查询结果中的每一行写出到redis集群里面。当加上limit时,一切正常。 maven-shade-plugin打完包后,进行清理:zip -d target/validater-1.0-SNAPSHOT.jar META-INF/*.RSA META-INF/*.DSA META-INF/*.SF maven-assembly-plugin打包不用清理 进入hive: hive>add jar {localPath} ...

阿里编码规范自省

一、命名风格我做得不好的 有时为了让名字短一些,没有描述清楚变量名 DAO没有严格来按方法命名:get,list,count,save/insert,remove/delete,update 二、关于常量做得不好的 常量类需要分开来维护 跨应用共享常量(第二方库中)、应用内共享常量(子模块中的constant目录)、子工程内共享常量(当前子工程的constant目录)、包内共享常量(在当前包下单独的constant目录下)、类内共享常量(直接在类内部private ...

使用tcpcopy

一、背景 一般来说,测试完成后,上线前不用真实的流量测试一下效果,总觉得不太妥,所以需要有工具来copy一下线上流量过来。 项目地址:https://github.com/session-replay-tools/tcpcopy tcpcopy有两种结构,本文介绍的是intercept与测试机就是同一台机器的情况 二、操作 线上服务 aws-vicviz-p2(172.31.12.83):9091 需要转到 aws-vicviz-r2( ...

听'宇文化及'时感受到的一些管理心得

在回家路上听的广播经济之声的"那些年"节目,从三国聊到了隋唐英雄这段了,前两天说的宇文化及,从他的经历讲到了创业的问题,听着挺有兴趣所以记录一下。 一、有欲望: 宇文化及是被推选出来起哄杀了隋炀帝的,目标是让骁果军能'回家(回北方)'以及'吃饭(能生存)',自己并没有称王的心,所以拿到了隋最强大的部队也只能在隋唐英雄中失败。 欲望是指对所做产品成功的欲望,例如可以为了产品的成功不惜得罪同事,可以牺牲掉自己的私人时间去做工作上的事情,做这件事已经融入了你的生活。可以模糊掉了上班还是下班的时间概念,或者在下班时间凝聚精力彻底放松在上班的9个小时内能集中精力高效工作全力以赴(程序员高效和不高效战斗力能确实能差好几倍,高效时会累脑袋麻木) 如果想的是" ...

我的程序员生活规则

协作 不要为了同事的赞扬,而浪费本能写出更好的工具的时间去做苦力。成为一个好人并没有用,有用的是带领团队做出好业绩,会得到同事们更多的欣赏。 每一次自己轻松的时候,一定是有同事在帮你顶着压力。且行且珍惜。 保持善良的心,保持对生活和对工作的热爱。 维护好个人名片。 工具 不要浪费每一次优化代码的机会,有时候错过了后面就没有机会改了。没有整理过的代码会让后面接手的人很痛苦,会附带着把自己的声誉也会被损掉。 效率来源于程序员工具箱,需要一步步的丰富自己的工具箱,很多事情会事半功倍。常用工具的优化,例如编辑器,开发语言的优化和工具化,会让效率提升很快。之前的工具可以不断的在深度和广度上补充。 点好技能树, ...

在springboot中集成kafka客户端

使用springboot1.5.6可以非常简单的使用参数完成kafka的客户端集成,而不用再像之前一样写个复杂的config类填参数了。 参考的官网 mvn 配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-parent</artifactId> ...

热修改日志等级

几天前遇到了一些问题,想查看线上的debug日志但是不好重启服务,有人建议使用了一下log4j的日志等级调整。于是写了一个后台api可以简单的实现日志等级调整的接口让后续维护更简单一些,当然起新服务再tcpcopy流量到备份服务上也ok但是麻烦。本文只是记录一下这样可以。 public class LogTools { public static Level changeLevel(String value) { Level nowRootLevel = LogManager.getRootLogger().getLevel(); String nowLevel =nowRootLevel.toString(); if (nowLevel. ...

一个简单的nginx配置

今天需要设置一下nginx的配置,作个记录。 要点: 一点优化 http1.1连接 冷备 加了个监控 user nginx; worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000; #cpu开启4个进程,是一个优化项。可以减少内存访问损耗,提高速度 error_log ...

日志分析工具 安装篇(cm druid)

最近需要用到一些数据处理工具,折腾了一下安装,其实还是有点麻烦的。为了后续安装可以直接快速搞定,在这里记录一下整个流程。 clouder manager可以用来管理CDH/flume/spark等,主要体现在对机器状态的管理中,有免费版,不开源,但是用起来还是不错的。 而druid在日志分析领域相对于hive、kudu这样的工具来说,上手简单,除了不保存原始数据外,在查询速度、图形化界面这点上,可以快速实现一个简单版本的日志分析系统。 我选择了这两个工具来实现我的第一个简单版本的日志分析系统。 一、clouder manager的安装 1.1 ...

我的信息渠道

今天是从纸质书转向电子书的转折点,因为我发现由于小书架空间有限,并且可能几年后还会搬家,以后就不再买纸质书了。想到我还没有一个系统的信息来源获取办法,所以写一篇博客记录一下。 这里记录的是我所不知道的信息的渠道,也就是我的被动推送信息来源。在我打开前,并不知道这里面有什么,只有当我进入这个渠道后,我才知道这里面有哪些信息更新了。例如当我打开微信的看一看,我才知道今天我有哪些新的文章可以阅读。而不是记录哪个网站有某个具体的知识点。 这次整理也有一些反思,写在前面: 与人沟通获取到的信息少得可怜。真人沟通这个渠道在别人那里可能是最主要的信息,很多有价值的信息只有面对面的沟通才会得到,例如一个新的项目、新的生意、更高收益的app和股票、带娃经验、或者新的开源组件。还是性格问题以及太忙, ...

java8

在前东家测试过java8以及java6的性能对比,发现增长不大,另外自己也快离职了所以一直没有升级主服务到java8,自己平时写代码也都基本没有使用新的语言特性,主要还是和别的同事保持一致就好。现在新同事能用新特性的会使用新的特性,产品要求必须是jdk8的环境,所以看一下书记一下看的过程。 lambda表达示 lambda表达式名称源于字母λ,是参数的意思。在java8中可以使用参数,箭头,表达式来组成一个lambda表达式 如果表达式比较复杂不能用一行写清楚,可以放在{}里面 参数一般形式是(类型 参数1,类型 参数2, ...),对于可以推断出来的类型,可以省略;如果只有一个参数,可以不用小括号; ...

容器学习

docker背景 好处 线上线下环境一致,沙盒更安全,虚拟化提升硬件效率 轻量级的隔离环境:层共享 易于版本控制 保持简单,尽量只用无状态的服务以及静态的配置,有状态的例如数据库啥的能独立出去就独立出去。 学习流程 Docker basics->Define and deploy apps in Swarm Mode,可以看官网上的提示。 使用docker的行为 构建及保存镜像快照 上传镜像到仓库 下载镜像到宿主机 ...

Maven in Action

新公司大家都在用maven,老东家用的是ant,我自己用的是gradle,为了了解工具细节还是需要看一下书的,所以找了这本书过了一个,在这里作个记录。 概念 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" ...

更新Ghost的主题

赵一一小朋友出生了,托她的福刚进新公司没有到两周就开始要休陪产假了。两位老人家都在身边帮忙照顾,我除了晚上要起来照顾她们娘俩比之前睡得差一些外,貌似也帮不上别的忙所以比较轻松。所以也正好有时间整理一下自己的学习记录。一直看之前的Ghost主题不爽,而自己又没有打算花时间去做个主题,所以搜索一下,有挺多开源的主题的,所以用了Kaldorei主题, 谢谢xiaoluoboding. 一些问题 如何找可用的主题? 上github上搜索 Ghost对npm以及node.js的版本要求还是有的,这里是推荐的支持版本, 我用的是4.2.0 node.js以及淘宝的cnpm(npm太慢了) 下载的node.js用的是直接编译好的这个v4. ...

进入伟大航道

注:伟大航道是《海贼王》里面主角离开出生地东海后开始精彩冒险的地方 每年春节都是一个反思自己工作或者生活的好机会,所以挺多重要的决定也都是在放完假后就立刻执行,例如这次换工作。用了两周时间看了解了十来个团队,不少朋友知道我离职后也在问选择去哪里,所以干脆记录一下自己是如何考虑的。程序员喜欢分享信息也是一个优点,当然肯定不包括薪资信息,这是游戏规则,否则没得玩了。 为什么现在考虑换工作 最近两天有几篇文章比较火,一篇是华为34岁员工被裁员,另一篇是技术创业7年无股权,引发了众多码农正面或者反面的思考,三观比较正的人其实都明白里面的无可奈何。牛逼的程序员可能不会太在意,但不太牛的我焦虑也是有的。其实一年前我就遇到了这样的问题,突然感觉时间由不得我肆意挥霍了。一个选择是自己创业,但背着房贷马上有娃怎么看都折腾不了, ...

客户端常用的log字段

字段名 说明 备注 date 客户端本地时间,其实建议为long数字,但目前为 yyyy-MM-dd hh:mm:ss 例如:2017-01-04 23:36:34 。这个与analyzer最开头的时间是不一样的,那个是服务器时间,不需要打 os 平台(iphone, iphonepro, android,mac,wap, ...

运维工具open-falcon的配置

背景 目前运维同事的一些运维工具看jvm的信息比较麻烦,并且还没有历史指标可以监控,于是自己配置了一下。 过程 像昨天一样安装非root用户的mysql 参考这个文档: http://book.open-falcon.org/zh/quickinstall/graphcomponents.html,后续所有的步骤都是用这个文档中的内容,写得还是挺清楚的。有时不明白的可以加一下QQ群问一下。 git clone https://github.com/open-falcon/scripts.git ...

nutch抓取双语资料速度提升tips

[未写完] 1. 优化的目标 抓取网页一般是为了得到某种类型的数据,例如房产数据、影片信息,而我是为了抓取更多的中外双语的结构化文本。所以单位时间内的双语文本数量就是我的优化的目标,而单语的就算抓取很快,对我们的产出也没有任何意义。 2. 评估指标 上面提到的,是我们的最终的目标,除了最终目标外,还需要子目标来帮助我们的评估工作的。 抓取的页面数 ./runtime/deploy/bin/nutch readdb /user/dict/crawler/normal/ ...