July 19, 2017

剖析大数据平台的数据处理

我在一次社区活动中做过一次分享,演讲题目为《大数据平台架构技术选型与场景运用》。在演讲中,我主要分析了大数据平台架构的生态环境,并主要以数据源、数据采集、数据存储与数据处理四个方面展开分析与讲解,并结合具体的技术选型与需求场景,给出了我个人对大数据平台的理解。本文讲解数据处理部分。

无论是采集数据,还是存储数据,都不是大数据平台的最终目标。失去数据处理环节,即使珍贵如金矿一般的数据也不过是一堆废铁而已。数据处理是大数据产业的核心路径,然后再加上最后一公里的数据可视化,整个链条就算彻底走通了。

如下图所示,我们可以从业务、技术与编程模型三个不同的视角对数据处理进行归类:

July 08, 2017

剖析大数据平台的数据存储

我在一次社区活动中做过一次分享,演讲题目为《大数据平台架构技术选型与场景运用》。在演讲中,我主要分析了大数据平台架构的生态环境,并主要以数据源、数据采集、数据存储与数据处理四个方面展开分析与讲解,并结合具体的技术选型与需求场景,给出了我个人对大数据平台的理解。本文讲解数据存储部分。

数据作为一种资产,若少了存储,就成了无根之木,失去了后续挖掘的价值。在小数据时代,受存储容量与CPU处理能力限制,在现在看来相当小的数据,在当时其实也可以认为是“大数据”了。正如在蒸汽机时代,创造了时速126英里(203公里)纪录的Mallard蒸汽火车就可以被视为极速火车了。那么,为何在当时没人提出Big D......

July 07, 2017

高质量代码的特征

回想起来,我觉得我们似乎在误读Uncle Bob的Clean Code,至少我们错误地将所谓Clean与可读性代码简单地划上了等号。尤为不幸的是,在Clean Code一书中,从第二章到第五章都围绕着可读性代码做文章,于是加深了这种错误的印象。

许多具有代码洁癖的程序员将代码可读性视为神圣不可侵犯的真理,并奉其为高质量代码的最重要特征,封上了“神坛”。殊不知,Uncle Bob在Clean Code的第一章就通过别人之口对所谓“Clean Code”进行了正名:所谓整洁代码并非仅仅是“清晰”这么简单。

按照Kent Beck的简单设计规则,排在第一位的其实不是可读性,而是“通过所有测试”。......

July 05, 2017

败了,不要找理由,要找原因

秋,暮秋。残阳,血色残阳,大地染上一层肃杀。无风,一片静默,整个世界好似冷冻一般。

忽然,树叶开始摇动,纷纷坠落,无边落木萧萧下。然而,没有马蹄疾驰而至撼动地面,更无呼啸狂风穿林而过,一切还是如此静默,唯有林间持剑对立的两人,一人玄衫,一人白衫,衣衫骤然飘荡,虽无风,却鼓风而起。

白衫剑客拔剑,犹如划过一道闪电,“铮”——是剑刃撞击气浪的声音,居然有金属的颜色。栖于树巅的寒鸦不堪忍受这压抑的气息,“呱”的一声,不详地飞走了。

......

June 26, 2017

Java的ClassPath问题

在文章《Spark Submit的ClassPath问题》中,我探讨了针对spark-submit的Jar包,如何指定外部依赖的Jar包。同样的问题在本地部署时仍然存在。此时,运行Jar并不是通过spark-submit,而是通过java命令,例如:

exec java -Xmx2000m -DMORT_HOME=$MORT_HOME -Ddata-set-parquet.path=$MORT_HOME/parquet -Dconfig.file=$MORT_HOME/mort.conf -jar $MORT_HOME/target/mort.jar > $MORT_HOME/mort......