自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 hbase和es在搜索场景的应用

背景    最近有个简单的需求,离线数据挖掘得出的标签需要支持online的查询,查询场景比较简单,支持按照单个id或者多个id批量查询,tp99需要在200ms,批量的时候id 集合的大小不会超过1000,平均下来不会超过200的样子。这种场景直接上ES相对来说比较省事,不过ES占用资源较多,想尝试用hbase来解决这种场景,下面记录下具体的过程。     为何要考虑HBase?

2017-08-02 01:04:46 14924

原创 那些年,我使用过的轮子(二)--memcached+couchbased

背景    memcached 出现的比较早了,支持的数据类型比较简单,而且没有持久化,在绝大多数的应用场景中都作为缓存来使用,加上根据一致性Hash扩展成分布式的缓存集群也是互联网中常用的方案设计。couchbase 文档较少,国内用的公司应该不多, 它作为一种NoSQL的数据库,支持memcached协议,支持JSON的文档格式和索引,加上其天生的Auto-Sharding和P2P特性,在

2017-03-19 17:06:51 1011

原创 那些年,我使用过的轮子(一)--Redis

背景  最近面试准备加上工作交接有点小忙,导致原来的计划耽搁了蛮久,上午刚回京,偷个安静的下午来完成这篇文章。Redis 作为一个广泛使用NoSQL的存储工具,相信大家都比较熟悉了, 从工作至今3年的时间里面,对它的使用是比较多的,当然也一直把它当作工具用,没有涉及到底层源代码级别的改造。结合做过的业务,Redis有当作缓存来用的,也有当作存储系统来使用的,它支持的数据结构丰富,能满足

2017-03-12 16:29:56 646

原创 PHP 连接Mongo操作实例

工作之余,给内容做了个小工具,数据需要存储到mongo里面,简单的封装了相关的API, 方便查看,因为是内部工具,用户数不多,并没有考虑并发方面的性能,倒是根据连接的时候出现的remote connection closed的exception, 增加了retry的操作。<?phpclass MongoFactory { #const _uri = "mongodb://q

2017-02-25 14:07:36 826

原创 那些年,我使用过的轮子

背景    13年7月19日研究生毕业正式工作开始,到目前已经三年多了,接触和开发的业务线经历了后台+算法->大数据+算法+推荐(新闻,广告)->大数据+微服务(推荐,数据)这个过程,使用的缓存和存储的轮子基本包括了redis,memcached,couchbase,MongoDB,Aerospike,EhCache;既有Localized Cache,也有Distributed Cache;

2017-02-19 21:01:48 442

原创 AeroSpike 类Redis 接口封装实现

业务背景有个业务需要评估班级和学生的知识点能力,计算维度多,数据量大,目前按照redis cluster和sharding方式进行存储,然而无论cluster还是sharding方式,都存在扩容和迁移困难的问题,特别是在数据量大的情况下,存在较高的风险。另外,redis作为存储,为了提高可靠性,基本需要提供master-slave的方式,造成内存的利用率偏低,比较浪费服务器资源。AeroSpike

2017-02-13 23:06:31 903

原创 Java 实现ES批量索引

项目中有部分数据通过Hadoop离线分析之后,需要将这部分数据的检索功能暴露出去,于是考虑搭建一套简单的索引服务。Lucene比较灵活, 可以自定义比较多的规则,比如分词,排序等,除了索引之外,服务化方面需要写一些代码,本着少开发,易维护的原则,采用了ES来搭建索引服务。ES的REST类型的接口还是比较容易上手的,把数据刷到ES之后,第三方可以直接调用ES的接口来进行检索,目前百万级别的时候性能还

2016-05-11 17:10:27 6099

原创 聚类(一)pyspark 实现特征的ID化

项目中需要实现一个简单的聚类,初步衡量了下样本数量在2000W左右,第一次写spark还是14年的时候,而且都是基于java实现的模型算法,这次就简单用pyspark实现了特征的Id化, 即将字符串类型的特征转为数字表示的Id。这个在模型中相对比较常见, 比较主要的点应该是使用broadcast广播了特征和id的映射关系。 #!/usr/bin/env python#-*-coding:u

2016-04-25 21:16:21 2384

原创 nginx https配置以及 api接口版本号rewrite

在做APP的接口设计时,需要考虑不同版本会采用不同的接口API,调研了几种方式之后,采用了在http header里面增加application/json;version=vxx的方式来实现版本控制,这样做的好处是地址不用做变更,客户端只需要在header中增加声明使用的版本即可. 由于采用https是大势所趋,后台也增加了对https的支持, APP和后台的前端机器采用https通信, 前端机器

2016-04-25 00:08:55 4592

原创 nginx跨域设置

在做一个项目的时候,采用了前后端分离的结构设计,后台设计的rest风格的http接口既需要满足后台服务调用,也需要满足前端直接采用ajax调用,于是碰到了跨域问题, 后台采用的是spring mvc结构, HTTP方法支持get、post、put、delete、option等方法,由于在post调用的时候,前端http会先采用option到服务器端,204了之后再提交请求数据,除了在nginx层面

2016-04-24 23:55:36 4454

原创 Java 直连Hive Server运行Hive SQL

最近在做个简单的hive 查询调度系统, 需要实现用java 连接hive server运行sql,并需要把结果自动导入到mysql中, 直接上代码: import com.google.common.collect.Lists;import org.apache.commons.dbutils.DbUtils;import java.sql.Connection;import j

2016-01-13 19:20:15 1059 1

原创 mongo-kafka: mongodb 数据到kafka的实时传输

mongodb 作为文档型的NoSQL数据库,性能较传统的关系型数据库有较大提升,而且可以利用其自带的capped collection 来实现消息队列的功能,但是sharding方式是不支持capped collection的,来新公司刚接触mongo, 公司这边的运行状态大概有两种,一种是master-slave的方式,另外一种是sharding+replication方式,由于相当的数据都存

2015-09-01 17:13:14 13172 3

原创 spark 笔记(二) 参数设置和调优

在迁移相关的spark程序到yarn的过程中间,对有些地方的配置进行了调整和优化, 总结起来,常用的一些设置如下:1. spark.serializer 对象的序列化设置可以设置成spark的序列化类型,相对比较高效和紧凑,网络传输性能比较好2. spark.kryoserializer.buffer.mb 用来设置对象序列化占用空间大小,当对象比较大的时候需要设置这个选项3. spa

2015-06-26 10:17:14 4138

原创 spark 笔记(一) stand alone 和yarn-cluster的部分区别

公司最近的spark集群由原来的standalone迁移到spark on yarn了,在迁移相关的程序时,发现调整还是有一些的,以下分别是两个版本提交的部分shell命令,从命令可以看出其区别,这个区别主要是spark on yarn的工作方式不太一样,造成提交的方式也不太一样。    standalone方式的脚本为:spark-submit --class com.bg.tools

2015-06-17 20:24:17 5595

原创 实时数据流处理简介

最近在组内作了次简单的分享,题目是实时数据流的处理,切入点主要是推荐系统中多种实时数据流的实时计算问题,当然像搜索的trends, 广告的实时计费等也可能会碰到类似的问题,PPT里面简单的介绍了下线上系统实际的结构和流程,系统上线运行近半年多,虽然没有出现过问题,其中有些问题还是值得修改和改善的,如果有业务相关的需求,这些问题会一并改善。    主要处理的问题:1. 乱序的问题,这个在多数

2015-03-29 16:04:30 2791

原创 kafka consumer gc问题探讨

kafka是一种高性能的分布式消息系统,通常用于大规模的数据处理, 其吞吐量是非常高的,我们的蛮多业务线都用到了kafka,包括实时模型,用户标签,实时点击率等,在开发的过程中间,踩了一些坑,其中consumer gc问题便碰到过几次,在这里探讨下可能的解决方式。

2015-03-14 14:42:32 1834

原创 基于One-Class的矩阵分解方法

在矩阵分解中, 有类问题比较常见,即矩阵的元素只有0和1, 对应实际应用中的场景是:用户对新闻的点击情况,对某些物品的购买情况等。基于graphchi里面的矩阵分解结果不太理想,调研了下相关的文献,代码主要实现了基于PLSA的分解方法,详细请参考后面的参考文献 #!/usr/local/bin/python#-*-coding:utf-8-*-import sysimport math

2014-07-25 20:55:53 1584

原创 拣阅一:缘由和系统设计

在使用相关新闻资讯的APP过程中间,发现有些不满意的地方,结合之前工作积攒的知识和基于个人兴趣,准备实现个简单的新闻资讯阅读系统,主要用来验证自己的想法和相关的算法

2014-05-17 23:24:55 1111 2

原创 redis集群状态信息维护脚本

通常在redis机器数量多的时候,需要对redis的机器进行状态监控,可以采用Linux 的nc 来对多个shard进行状态查询和监测

2014-05-17 12:04:23 2036

原创 新闻去重算法的设计和实现

之前有介绍过大规模去重算法的设计,可惜没有办法付诸实现,主要是因为没有相应的应用场景,还是停留在纸上谈兵的阶段!这里简单的介绍下新闻去重算法的实现,客户端在基于yahoo shingle算法的基础上进行了封装,便于采用服务的方式来进行调用,这样比较容易进行复用和提高扩展性,利用thrift来进行跨语言的通信,客户端采用Java实现,原有的设计是服务端既提供计算的接口,即根据文本计算它的shingl

2014-02-25 22:09:21 2935

原创 基于情感词库和PMI互信息的情感分类

情感分类在数据挖掘领域应该是一个比较细分而且难做的部分,之前在研究生阶段了解了一点,印象中有研究把twitter的情感可以分为21类,情感分析在观点预测、市场营销都有一定的用处,刚好项目中有需要区分用户情感的部分,就花了点时间实现了一个比较简单的demo,效果不是很好,大概65%左右的准确率,需要进一步细化。

2014-02-23 22:23:49 9289 3

原创 chrome插件-新闻推荐评测插件开发

在实现新闻推荐的过程中,需要对推荐算法进行评测来衡量推荐的效果。前期一般通过人工去评测,但是因为是根据网页来推荐的,为了满足随机性和提高效率,开发了基于chrome的插件来对网页的推荐效果进行评测,前期主要是为了解决一些比较明显的问题,比如标题长度,乱码符号等,后期可以切一部分流量进行a/b test来看效果。

2014-02-23 18:02:14 1244

原创 Kmeans的改进-kmeans++算法的聚类中心初始点选取和蓄水池采样算法

kmeans算法存在的一个问题是初始中心的选取是随机的,造成聚类的结果也是随机的,一般的做法是进行多次重复整个聚类过程,然后选取聚类效果好的。Kmeans++算法可以很好的解决初始点的选取问题,本文简单进行了总结和实现,并结合kmeans++算法提到了蓄水池算法在ClouderaML中的两个应用。

2014-02-15 18:17:10 7967 1

翻译 高负载下Nginx,Node.JS和网络的优化

Nginx和Node.JS通常一起使用,在高吞吐量的Web应用程序中是一对完美的组合。它们都基于事件驱动原则设计,并且能够越过困扰传统Web服务器如Apache的C10K限制扩展到更高的水平。即插即用的配置可以使你的应用工作的足够好,但是当你需要在商业硬件上支撑每秒上千的请求时,你必需作一些针对性的优化最大程度的提高服务器的性能。 这篇文章假设你使用Nginx的HttpProxyModule模块将负载均衡一个或更多的upstream Node.JS服务器,主要涉及Ubuntu 10.04下调整sy

2014-02-09 14:01:15 2384

原创 倒排索引-Indexing Boolean Expressions

在搜索领域,索引是一项非常重要的技术,直接影响到查询的效率,其基本的流程是:文章先进行分词、计算权重,然后利用词和文档的信息建立倒排索引,在查询的时候,得到符合条件的文档的id集合,然后利用正排索引返回文档的详细信息,在计算广告中,广告主通常会定义广告投放的条件,这些条件时通过布尔表达式来定义的。

2013-11-11 08:33:42 4080 1

原创 Shell 中mysql 查询以及shell字符串数组的使用

利用shell既可以读取本地文件进行文本处理,也可以很方便的操作远程数据库,两者结合起来用可以实现一些较为复杂的统计逻辑。

2013-11-09 18:06:33 5644

原创 Hadoop Streaming shell 脚本命令汇总

在编写JOB相关的脚本中,都会涉及集群输入和输出地址的定义,一般都是按照年月日并且按照文件大小进行切割,如果输入的路径下都是需要的文件,这个时候只需要定义路径的变量即可,可以利用正则匹配的方式来定义变量,如果路径下的文件需要筛选和拼接,可能会稍微麻烦点,但是Hadoop Streaming的命令对拼接的文件个数有限制,比如在map输入的时候,可以利用","将文件进行拼接,但是这里文件个数有限制,太长的话提交的时候会报错,具体数值我记不清了,大概不到2000个文件,一般情况下,当文件个数较

2013-10-18 23:03:29 2325

原创 streaming kmean cluster 聚类算法实现和分析

主要介绍下streaming kmeans的算法思想,虽然项目中没有用到,但其中的思想还是很有借鉴意义的,感兴趣的可以搜论文原文看看。从streaming可以看出,算法是基于流式的,文件中的数据只参与计算一次,算法对加入一篇文档到新的类别和产生新类的代价分别进行评估,当满足一定的阈值才会将文档添加到聚类中去或者产生新的聚类。算法和常见的kmeans算法主要有如下区别:

2013-10-14 23:50:00 3911

原创 基于Density Based Selection 的文本摘要算法

摘要算法目前的实现基本上是从正文选择有代表性的句子或段落形成文章的摘要。一般是先抽取关键词,然后计算关键词的权重,根据关键词在文章中的出现位置来计算最短摘要,详情可以看下编程之美的最短摘要算法,这里介绍下基于密度的摘要算法,首先是将文章按照句子分隔,对每一个句子计算权重,然后根据句子的权重来选择哪个句子作为摘要,影响句子的权重的主要特征有句子和标题的一致性,句子在文章和段落的位置,句子的长短,句子和文章关键词的一致性等。以下算法是计算句子和文章关键词的一致性算法,代码比较简单但是没有经过验证,只是简单的描述

2013-10-14 00:26:23 2995 1

原创 淘宝京东类电商评论标签化的思路

最近发现京东的评论也开始标签化了,虽然相对于淘宝的标签显得比较生硬,但是也可以看出标签化是评论的一个趋势,我个人比较喜欢看评论说话,作为一个IT工作者,曾经思考了下评论的标签化工作可能涉及的技术,正好微博有人问起,现在简单的整理如下。    评论标签化的作用    评论的标签化的作用首先体现在用户体验好了,相对于看评论,标签可读性更好,更加明了,用户一眼便能看出好坏,当然电商是不会把坏的结

2013-10-12 00:28:40 5564 1

原创 openmp 中部分函数简介

考虑对plsa进行并行化,并行化主要包括机器之间的并行和单机多线程的并行,考虑采用omp来实现单机多线程的并行,这样既可以快速验证下算法的效率提升又可以避免把很多时间花在多线程控制上,结合算法特点,需要用到以下函数,在这里简单整理下,

2013-10-10 12:52:14 1117

原创 一致性哈希算法的简单实现和在redis集群的应用

项目中需要搭建一个简单的redis集群,用来存储系统中的算法模型产生的特征值,利用到了一致性哈希算法,简介可以看一致性哈希算法,本文简单实现了下一致性哈希的算法,主要阐述下应用场景和一些感想。

2013-10-09 10:58:27 3033

原创 中文字符串的编码转换(c实现)

中文字符串在c/c++中表示为字节序列,在分词的时候需要根据不同的编码方式进行分词,一般分词器需要转换成统一的编码方式再进行转换,有些分词器如ICTCLAS在分词的时候可以不显示定义编码方式,可以检测字符串的编码方式再进行转换,本文就项目中用到的几种编码转换方式进行总结,主要利用了iconv进行编码转换。

2013-10-08 18:41:26 3354

原创 Thrift 中以GBK传输中文字符和分词服务搭建

项目中需要将分词做成线上服务形式,服务后端用c++实现,客户端用java实现,来调用分词的服务。由于分词程序默认是以GBK编码为准,但是JAVA读写字符串的固定编码为utf-8,需要在数据传输的时候以GBK编码方式传输,Thrift 的JAVA库中不支持以GBK方式传输字符串,而且预期不会增加如此功能(Support non-UTF-8 in Java and C#),原因参考Support

2013-10-08 12:05:23 2685

原创 关于推荐系统

推荐系统实践和系统接触了一些,偶然读到百分点推荐系统设计一文,有些感想总结如下:1.推荐的行业差异性1)行业共有的:实时性,高可用性等主要体现在架构上2)差异性主要体现在推荐的内容上:有的购买重复性高,具有周期性,有的产品就不能重复购买,例如相同款式的包包等,这里需要对行业进行细分,这个差异主要区别在特征上,时间特性,内容特性等。例如在不同的时间如节假日相关的物品,话题。

2013-10-08 10:57:29 1218

原创 LDA中Gibbs采样算法和并行化

最近在用topic model跑一些数据,算法采用了LDA和PLSA进行对比,由于数据量稍大,采用了LDA的并行化版本,对其并行化方法很感兴趣,查看了相关资料后先总结如下,有时间可以继续琢磨。Gibbs Sampling用来逼近LDA中的隐式变量,是一种较为简单的实现方式。    Gibbs 方法    传统的实现方法是串行的,主要流程如下:    步骤4中,每一个word都需要对

2013-09-25 19:42:45 5714

原创 Hadoop & Hadoop Streaming 自定义输出格式

在用Hadoop处理大量的日志文件的时候,有时候会将错误的或者不符合要求的日志输出到另外一个目录,以备后来进行查验,这里给出个简单的例子,并简单说明下如何在Hadoop Streaming中使用这种方法将错误格式的日志输出到自定义的路径。

2013-09-23 22:30:17 2273

原创 基于Map-Reduce的大规模分词服务搭建

目前项目中,分词的主要工作方式可以分为online和offline,online的方式主要是提供服务接口供应用程序来进行调用,比较侧重并发和速度,offline的工作方式主要是一次性的,调用完成就释放,适合一次处理大量文章,较online的工作方式,省去了网络传输的代价,效率要高一些,但是不是很灵活,不能实现良好的易用性。    在数据挖掘任务中,在语料库庞大的条件下,比如千万或者亿级别的文档

2013-09-23 08:58:25 1188

原创 LDA并行化实验(待完善)

实验数据    语料大概有1800篇文档,2W+的词,机器为16核,48G内存,因为机器上有其它程序运行,实际可用内存不足6G。    实验方案    主要包含LDA的三种实现:第一种是LDA的单机版本,第二种是LDA的mpi版本,第三种是LDA的mpi和openmpi混合版本,不过实验条件所限,没有搭建基于MPI的集群,这里只是初步看下效果。迭代次数为1500,主题数目为50,假设n

2013-09-22 21:31:56 2577

原创 非负矩阵分解中基于L1和L2范式的稀疏性约束

L1 norm使得求得的解更趋近于0,即产生更多的0解,确保稀疏性,L2 norm防止over-fitting

2013-09-21 11:23:17 4008 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除