大数据快速入门(3):漫谈数据收集,你的数据值百万

札记

亲爱的粉丝老爷,好久不见。
这次我为文章增加一个新的栏目,叫“札记”,记录一下平时的工作,给冷冰冰的技术文章增加一些温度,给即将到来的冬天暖暖心,大概 200 字左右。
说说我入门大数据的奇葩故事吧。
大概在 2017 年的时候,公司准备做一款球赛预测的产品,做出来给平台粉丝预测足球比赛的胜平负,提示他们的返奖率。

大数据快速入门(3):漫谈数据收集,你的数据值百万
当时我们是基于一些规则来做的。比如根据赔率波动,水位升降,**大小来预测比赛的胜平负。
于是乎我就开发了这么一个系统。但是它跟大数据毛关系没有啊。
估计当时领导们已经给我贴上大数据的标签了。
过了一段时间,老板招了一个厉害的数据总监,然后就自然而然把我划到那个大数据那个部门了,于是就这么开始了大数据之路。
后来我曾经尝试过很多方向,比如离线数仓,实时计算,推荐,挖掘,发现数学是我的短板,于是我就给自己定位是数据开发。

大数据快速入门(3):漫谈数据收集,你的数据值百万

而现在,我所在的部门虽然是大数据部门,但是我的日常工作是做后端开发,做一个数据平台。

人生重在折腾

从垃圾堆里发现百万价值的数据

这是2013年互联网上流传的一个小故事。
一个小伙子名牌大学毕业,看上去很有想法,也很有追求。
但让人不可思议的是,他居然跑去应聘上海某高档小区的物业管理工作。更不能让人理解的是,他的兴趣好像并不只在工作上,因为他经常在非工作时间跑到小区的垃圾堆里。
他拿着一把超市里用的扫描枪扫描垃圾上的条形码。
大数据快速入门(3):漫谈数据收集,你的数据值百万

很多人看到这里可能以为他疯了,谁会没事对着垃圾扫描啊?
原来,这个小伙子是个有心人,他通过扫描各种包装袋、包装盒上的条形码,整理出了很多有用的数据。
比如这个小区居民大多喝什么水,这个就可以通过他扫描过的矿泉水瓶看出
。同理,小区居民爱吃什么牌子什么品类的油、买什么价位的衣服等数据也都被他收集到手。
最后,他将整个小区的消费种类和品牌偏好都了解清楚了,形成了一份非常详细的报告,并卖给了期望得到这些数据的某相关公司。
这样的报告给他带来了一笔不菲的收入。
数据的重要性不言而喻。

如何收集数据

那么既然数据如此重要,我们该如何去收集数据?

互联网数据收集
百度,Google,Bing 这种世界级的 搜索引擎,使用了一种网络爬虫(Web Crawler)的技术,去触达信息世界的每一个角落,发现并收集相关的内容。

之后对相关信息进行索引,索引之后,使用者就可以使用一定规则来查询这些数据了。

大数据快速入门(3):漫谈数据收集,你的数据值百万
网络爬虫主要的工作流程是从一个或若干个初始网页的地址URL(Uniform Resource Locator)开始,获得初始网页上的URL列表。

然后在抓取网页的过程中,不断地从当前页面上抽取新的URL放入待爬行队列,直到满足系统的停止条件为止

爬虫也是按照一定策略来爬取数据的,主要有三种,深度优先,广度优先,最佳优先。

深度优先就是按照一条路线,一直深挖下去,直到处理完毕,再处理下一条线路。

这种策略最明显的麻烦就是,路线越深,价值就越低,会很影响抓取效率。所以一般这种策略很少被使用。

广度优先就是只有在当前层次搜索完毕之后,才会去下一个层次搜索。一般情况下,会选择这种策略,不会太陷入价值过低的非核心页面上。

但是对于一些网站局部高价值频道的特殊爬取需求,宽度优先,则可能不太适合了。

最佳优先,则是聚焦,定向爬取,它会按照一定的算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取相似度最高的若干个URL进行抓取。

一定程度上缓解了之前两种策略重“量”不重“质”的局面

爬虫部分则了解一下就好,也是一个非常大的专题,这里了解一下就好。

内部数据收集
内部数据收集则是对企业内部用户行为日志数据,公司业绩的销售数据,各种订单数据等等的收集。

内部数据极有可能关乎企业的整体运营和表现,是各种核心指标的分析来源。

内部数据的收集可以分为推送(Push)和拉取(Pull)两大类

推送模型

大数据快速入门(3):漫谈数据收集,你的数据值百万
推送模型,数据的实时性无疑是比较高的,不过数据收集的容量必须要大于高峰期数据产生的规模,否则如果生产源主动推送过来的数据不能得到及时处理,将会带来更多更复杂的后续问题。

拉取模型

大数据快速入门(3):漫谈数据收集,你的数据值百万
主动权则掌握在收集端,收集的模块可以根据自己的节奏拉取数据,高峰期产生的海量数据会在一段时间内被慢慢地消化。如此一来,只要保证收集的能力高于数据产生的平均值就足够了。

开源实现

Apache Flume

是一款分布式、可靠和高可用的海量数据收集系统。

Flume 的初始发行版本为 Flume-OG(Origin Generation),随着Flume功能的扩展,Flume-OG代码工程臃肿、核心模块设计不合理、核心配置不标准等缺点纷纷暴露出来。

大数据快速入门(3):漫谈数据收集,你的数据值百万
为了解决这些问题,2011年Cloudera完成了Flume中里程碑式的改动,核心模块、核心配置及代码架构都得到了重构,改善后的新版本统称为Flume-NG(NextGeneration)

Flume 的核心模块有三个:

源头(Source):负责接收数据的模块

沉淀器(Sink):批量地从通道读取并移除数据,并将所读取的内容存储到指定的位置

通道(Channel):作为一个管道或队列,连接源头和沉淀器。

大数据快速入门(3):漫谈数据收集,你的数据值百万
如上图所示,则是Flume最核心的架构了。

Flume 为我们内置了很多的内部的默认实现,比如有默认的文件夹读取,kafka 数据读取,hdfs 写入,kafka 写入,Hbase 写入。

可以直接拿来即用,是一个非常好的数据采集工具。

sqoop

主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

大数据快速入门(3):漫谈数据收集,你的数据值百万
另外,阿里巴巴也开源了 DataX,则设计更加的巧妙。

采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。

大数据快速入门(3):漫谈数据收集,你的数据值百万
关于这些开源技术的精讲,会放到下个高级系列中。

种一棵树最好的时间是十年前,其次是现在。

此系列是大数据快速入门系列,力求以最简单的文字,说清楚大数据各个环节,帮助你更好的入门大数据。
扫码关注公众号:KK架构师
大数据快速入门(3):漫谈数据收集,你的数据值百万