中小型企业基于大数据技术的项目实践
这样的微服务架构就为我们的日志分析提供了方便,可以认为,日志上的 url 路径包含了很多的信息,基于不同的 url 我们可以发现用户的行为,并针对用户的行为进行数据分析。
1) HDFS VS MongoDB
既然我们说 MongoDB 可以用在 HDFS 的地方,那我们来详细看看两者之间的差异性。
在说区别之前,其实我们可以先来注意一下两者的共同点。HDFS 和 MongoDB 都是基于廉价 x86 服务器的横向扩展架构,都能支持到 TB 到 PB 级的数据量。
数据会在多节点自动备份,来保证数据的高可用和冗余。两者都支持非结构化数据的存储,等等。
2) HDFS 和 MongoDB 的区别
如在存储方式上 HDFS 的存储是以文件为单位,每个文件 64MB 到 128MB 不等。而 MongoDB 则是细颗粒化的、以文档为单位的存储。
HDFS 不支持索引的概念,对数据的操作局限于扫描性质的读,MongoDB 则支持基于二级索引的快速检索。
MongoDB 可以支持常见的增删改查场景,而 HDFS 一般只是一次写入后就很难进行修改。
从响应时间上来说,HDFS 一般是分钟级别而 MongoDB 对手请求的响应时间通常以毫秒作为单位。
4) 什么时候选用 MongoDB
涉及到快速读取数据
建立索引
对数据的存储粒度要求较细(文档形式)
能够对数据进行修改的场合。
5) 什么时候选用 HDFS
HDFS 数据存储节点不要求就有较大的内存,而 MongoDB 要想保证读写迅速的前提是要占据较大的内存空间;
对数据修改的要求不高,例如图片,音视频文件,一般写入后不需要再次修改;
HDFS 被设计部署在低廉的硬件设备上,对硬件的要求不苛刻,能够保证高可用性,集群的数据吞吐量也很高;
相比之下,MongoDB 对 CPU 和内存的要求要高得多。
6) MongoDB 的地理位置搜索
MongoDB 具有很多高级搜索功能,譬如微信搜索附近的人,我们可以通过 MongoDB 的 GEO 搜索来完成,这是 MongoDB 的又一大好处,有关地理位置搜索,推荐这篇博文:https://goo.gl/FYiZJg。
4. 数据的分析
我们首先来回顾一下,日志中主要包括的内容有:
在我们的日志 url 中记录了用户的 id,用户的行为,用户的行为属性,用户的设备,用户的 IP,用户访问时间,服务器处理时间,服务器响应时间等等。
上述数据是来自日志的原始数据,经过 ETL 后,被存储到 MongoDB 的 raw 数据库中,以 K-V 对文档的形式存储起来,下面,我们将要对存储到 MongoDB 中,经过整理后的数据进行分析。
4.1 宏观分析
宏观分析是最基础也是最简单的,例如:
我们可以统计一天 24Hour,那个小时用户的活跃量最多;
我们可以根据用户的 IP 来判断哪个区域的用户最多;
我们可以根据使用设备,来判断使用什么终端的用户最多;
同样,我们也可以用服务器的响应时间来判断服务器的运转情况。
4.3 机器学习
其实,在我们实践当中,最常用到的机器学习算法恐怕就是聚类算法了。
五、总结
在本次的 Chat 中,我们谈到了中小型企业基于大数据技术的项目实践。其实,对于中小型企业来讲,可能数据量并没有大型公司相向得那么多,一般一天产生的日志条数几千万到一亿的居多。
对于这种离线计算场景,其实并不一定就非得用分布式集群去消费数据,如果公司尚有闲置的单节点内存容量达到 16G,双核心及以上的一台机器,实际上在做离线计算的时候,也够用了。