建造者说

总在造着什么的路上

Observer希望解决的问题

HBase是一个分布式的存储体系,数据按照RowKey分成不同的Region,再分配给RegionServer管理。但是RegionServer只承担了存储的功能,如果Region能拥有一部分的计算能力,从而实现一个HBase框架上的MapReduce,那HBase的操作性能将进一步提升。正是为了解决这一问题,HBase 0.92版本后推出了Coprocessor – 协处理器,一个工作在Master/RegionServer中的框架,能运行用户的代码,从而灵活地完成分布式数据处理的任务。

Coprocessor包含两个组件,一个是EndPoint(类似关系型数据库的存储过程),用以加快特定查询的响应,另一个就是Observer(类似关系型数据库的触发器)。Observer也分为几个类型,其中RegionObserver提供了一组表数据操作的钩子函数,覆盖了Get、Put、Scan、Delete等操作(通常有pre和post两种情况,表示在操作发生之前或发生之后),我们可以通过重载这些钩子函数,利用RegionServer实现特定的数据处理需求。

阅读全文 »

ElasticSearch是一个强大的搜索服务器,基于Apache Lucene的全文搜索引擎开发,具有高性能、分布式和零配置的优点。在当前的项目中,我们希望ES能承担亿级文档的搜索,而ES也证明了即便面对这样的数据规模,也能实现十分迅速的搜索响应。

阅读全文 »

闽南人有一首传唱四方的歌,歌名叫「爱拼才会赢」,里面有句歌词是这么唱的:「三分天注定,七分靠打拼」,透着浓浓的人定胜天的味道。可说实在的,究竟是「三分天命,七分人事」,还是「三分人事,七分天命」,不同年龄、不同阅历、不同性情的人心里的谱恐怕也不一样。可就是有这么一本书,希望用科学的角度来描述实力、运气和成功三者的关系,让我感觉很荒诞:实力和运气交替作用于人的一生,恐怕连上帝都经常迷惑不已,何来科学之有?读下去,才发现作者的用意是教我们如何理性看待实力和运气之间的化学反应,以及在实力和运气交错的现实生活中,什么样的策略更可能得到好的结果。

阅读全文 »

三月中旬,Spark发布了最新的1.3.0版本,其中最重要的变化,便是DataFrame这个API的推出。DataFrame让Spark具备了处理大规模结构化数据的能力,在比原有的RDD转化方式易用的前提下,计算性能更还快了两倍。这一个小小的API,隐含着Spark希望大一统「大数据江湖」的野心和决心。DataFrame像是一条联结所有主流数据源并自动转化为可并行处理格式的水渠,通过它Spark能取悦大数据生态链上的所有玩家,无论是善用R的数据科学家,惯用SQL的商业分析师,还是在意效率和实时性的统计工程师。

阅读全文 »

sigmoid函数

逻辑回归(Logistic-Regression)是数据挖掘领域的一种基本的回归和分类算法。很长的一段时间里我对逻辑回归的理解仅限于「有逻辑的回归」。直到有次面试一个实习生,跟他聊起正在做的热门电台排行榜,需要把各个指标加权得出的分值映射到(0,1)空间,采用的是最简陋的线性映射方法。他建议我可以用sigmoid函数做,我立时两眼放光,请教起sigmoid函数相对于线性映射的好处。他的回答是「sigmoid函数没有不可导的点」,当时我为自己的无知感到窘迫,就没敢再问下去。直到后来系统地阅读数据挖掘的书,才发现他没有说对。sigmoid函数最显著优于线性映射的地方,是实现了经济学上经常用吃饼类比的边际递减效用,能够避免概率的分布被少数的噪点破坏。

阅读全文 »

我算是靠坑蒙拐骗进了程序员的门,然后一路狂奔。26岁之前几乎没有任何写代码的经验,研究生毕业却意外选择了一家不可能提供培训的初创公司,在每日担忧公司倒闭、害怕被炒鱿鱼以及同事冷落白眼的三重压力下逆流而上,一年半后离职,已是拥有500万用户产品的后台主程。从前我对计算机技术心怀畏惧,认定技术高人一定有佛光笼罩,昼夜不息运键如飞日吐代码上万行。现在也算见过一些世面了,回首那段忐忑不安宛如初夜的过程,我却不发觉有任何的励志意味,而是视为一种理所当然。理想的程序员,和理想的建筑师、理想的财务师、理想的按摩师没有任何的差别,他们本质上都是一群手艺人。我相信理想的程序员人人皆可成为。

阅读全文 »

我一直自诩是菜刀流的工程师,作为一个非科班出身的数据小码农,竟也操刀过三个推荐系统的项目了。这三个推荐系统,用户群不同,业务场景不同,连地域和文化也有些差别。所以近来总在琢磨,推荐系统的缘起千人千面,纷繁万变的细节当中,能不能汇聚出一些普遍共性?有没有一个普适的标准,回答什么是一个真正出色的推荐系统?有没有哪些不二法则,是构造一个推荐系统所不可或缺的?我希望迈出这一步,把之前想过的梗、跳过的坑以及卑微的沉思亮出来,等待真正的高人点拨一二。

阅读全文 »

最近需要爬取某网站,无奈页面都是JS渲染后生成的,普通的爬虫框架搞不定,于是想到用Phantomjs搭一个代理。
Python调用Phantomjs貌似没有现成的第三方库(如果有,请告知小2),漫步了一圈,发现只有pyspider提供了现成的方案。
简单试用了一下,感觉pyspider更像一个为新手打造的爬虫工具,好比一个老妈子,有时无微不至,有时喋喋不休。
轻巧的小工具应该更受人喜爱,我也怀着一点私心,可以带着我最爱的BeautifulSoup一块儿用,而不用再学PyQuery(pyspider用来解析HTML),更不用忍受浏览器写Python的糟糕体验(偷笑)。
所以花了一个下午的时间,把pyspider当中实现Phantomjs代理的部分拆了出来,独立成一个小的爬虫模块,希望大家会喜欢(感谢binux)。

阅读全文 »

对程序员来说,新浪云SAE无疑是国内最好的PaaS平台,实名认证和绑定移动端得到的免费云豆,可以让你在做出一款能抬起头的应用之前不愁吃喝。
所以这一年里做过的网站和应用,第一个版本都是起于SAE。
对于Python的网络框架,小2原本专攻大路货Django,工作中被一高手点醒后,开始迷醉于Tornado的快。对,并不是非阻塞的快,而且开发的快,极适合做前后端分离、以JSON传递数据的模式。
人老怕忘,随手记记Tornado在SAE上的坑。

阅读全文 »
0%