1、环境:

1.1、cassandra 集群: 用于日志数据存储

1.2、spark集群: 用户后期的实时计算及批处理

1.3、codis 集群: 用于缓存一些基本数据如IP归属地,IP经纬度等,当日志上来,对日志进行补全

1.4、postgres数据库: 1、用于存储维度表 2、存储统计结果

1.5、消息队列 如:rabbitmq、apollo 或者kafka,用于接收产品日志数据。当日志数据低于5000条/s时,可以考虑使用rabbitmq。高于此值。建议换成apollo或者kafka。消息队列不建议留太长时间的数据,建议保留时间:15天~1月

部署说明:

spark 和cassandra 采用一对一部署,以保证后期计算时的数据本地性

codis集群:视具体情况而定,建议不少于3组,每组2个节点

postgres:开启自动vacuum

2、数据收集

日志数据直接发送到消息队列(可以考虑在消息队列前加上Nginx)。

3、数据补全与拆分 外加原始数据存储

使用日志数据时,我们可能会有一些期望,比如,

A: 后期需要按区域进行产品统计,热力图。这时可以将IP地址解析为国家、省、市、和经纬度。

B: 日志需要分发不同部门,日志记录需要唯一标识 如:添加长整型日期戳+进程标识

数据进行补全后,A:根据产品等拆分成topic后,扔回队列,供实时计算,B:并存储一份到cassandra作为原始数据,同时供离线计算

4、实时计算

spark streaming 根据需要,订阅topic,进行实时计算

5、数据仓库

根据实际业务,订阅拆分后的topic,生成数据仓库。维度表放在postgres中,事实表放在Cassandra中.

请注意以下几点:

A、维度表

  A1:采用Long作为主键,以增快后期Join效率。

  A2:同时为避免过于频繁读写关系数据库,可以使用codis缓存维度数据,设置ttl,如8小时。

B、事实数据,切忌放在关系数据库中。过于频繁的读写操作会对关系数据库造成过大压力。

C、如果精力、资源有限,可以先对核心日志类型做数据仓库,比如,订单。至于客户点击、浏览历史可以之后再做。

6、离线计算

6.1 spark 作业可以读取Cassandra中的原始数据,进行历史数据的离线计算。详见spark cassandra connector的使用

6.2 每日对事实表进行简单聚合后,与维度表进行join,join后的数据另外存储。供核心业务使用。

  6.2.1 由于每日join,刚好按日做了缓慢变化。若需要进行历史统计可以直接用。若需要按照最新维度信息对历史数据进行统计,各个业务自行与维度表join

  6.2.2 由于事实表join个所有维度表,字段比较多。但是实际使用时,各个业务只会取其中的十个八个字段,甚至更少,此时,强烈建议使用列存储,并启用压缩。

     建议使用parquet存储(详见:为什么我们使用parquet),而不用rc或者orc file,原因1:spark 原生支持parquet。原因2:即使你用hive,hive也完全支持parquet

7、计算结果

选择计算结果的存储位置,需要事先预估结果的记录数。切勿只考虑一天,至少要考虑一年。以每年3000W为门坎,

若小于3000W,可以考虑存储到关系数据库。

若大于3000W,需要使用NOSQL数据库。您可以选择cassandra、hbase、mongodb等

8、结果展现

结果展现时,请考虑以下因素

数据导出:大数据的计算结果未必会是小数据,因此数据导出一定要分页。在第7步选择哪种NOSQL,要先调研好分页实现。

可视化展现:千里之堤,溃于蚁穴。数据已经计算出来了,一定要在展现上把数据的价值体现出来。可以考虑使用折线图、柱状图、饼图、热力图、地图等,推荐使用Echarts

spark + cassandra +postgres +codis 大数据方案的更多相关文章

  1. 低调、奢华、有内涵的敏捷式大数据方案:Flume+Cassandra+Presto+SpagoBI

    基于FacebookPresto+Cassandra的敏捷式大数据 文件夹 1 1.1 1.1.1 1.1.2 1.2 1.2.1 1.2.2 2 2.1 2.2 2.3 2.4 2.5 2.6 3 ...

  2. 量化派基于Hadoop、Spark、Storm的大数据风控架构--转

    原文地址:http://www.csdn.net/article/2015-10-06/2825849 量化派是一家金融大数据公司,为金融机构提供数据服务和技术支持,也通过旗下产品“信用钱包”帮助个人 ...

  3. 双汇大数据方案选型:从棘手的InfluxDB+Redis到毫秒级查询的TDengine

    双汇发展多个分厂的能源管控大数据系统主要采用两种技术栈:InfluxDB/Redis和Kafka/Redis/HBase/Flink,对于中小型研发团队来讲,无论是系统搭建,还是实施运维都非常棘手.经 ...

  4. 一个大数据方案:基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎

    网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项.由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎, ...

  5. 大数据计算新贵Spark在腾讯雅虎优酷成功应用解析

    http://www.csdn.net/article/2014-06-05/2820089 摘要:MapReduce在实时查询和迭代计算上仍有较大的不足,目前,Spark由于其可伸缩.基于内存计算等 ...

  6. 大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序

    第1章 Spark 概述1.1 什么是 Spark1.2 Spark 特点1.3 Spark 的用户和用途第2章 Spark 集群安装2.1 集群角色2.2 机器准备2.3 下载 Spark 安装包2 ...

  7. 大数据学习:Spark是什么,如何用Spark进行数据分析

    给大家分享一下Spark是什么?如何用Spark进行数据分析,对大数据感兴趣的小伙伴就随着小编一起来了解一下吧.     大数据在线学习 什么是Apache Spark? Apache Spark是一 ...

  8. 大数据(13) - Spark的安装部署与简单使用

    一 .Spark概述 官网:http://spark.apache.org 1.        什么是spark Spark是一种快速.通用.可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校 ...

  9. 大数据的前世今生【Hadoop、Spark】

      一.大数据简介 大数据是一个很热门的话题,但它是什么时候开始兴起的呢? 大数据[big data]这个词最早在UNIX用户协会的会议上被使用,来自SGI公司的科学家在其文章“大数据与下一代基础架构 ...

随机推荐

  1. IIS Admin Service 服务由于下列服务特定错误而终止: 无效签名。

    于是查看系统日志: 具体信息如下:日志名称:          System来源:            Service Control Manager日期:            2015/11/2 ...

  2. Yii 获取url 的一些方法

    原文出处http://blog.csdn.net/iefreer/article/details/21325371 1. 获取url中的host信息: Yii::app()->request-& ...

  3. MacBook鼠标指针乱窜/不受控制问题的解决方法

    用了快一年的MacBook Pro最近出现了奇怪的问题.出问题时,鼠标不受控制,屏幕上鼠标指针乱窜,还时不时自动点击,犹如电脑被人远程控制一般.不管是用trackpad还是用外接鼠标,都是同样问题.电 ...

  4. 修改mysql的字符集和默认存储引擎

    转自:http://blog.csdn.net/wyzxg/article/details/8779682 author:skatetime:2012/05/18 修改mysql的字符集和默认存储引擎 ...

  5. Hive与ES整合

    https://www.elastic.co/guide/en/elasticsearch/hadoop/current/hive.html 注:添加的第三方jar必须位于namenode下,否则依然 ...

  6. Day05 xml详解

    day05总结 今日内容 XML语法 XML约束之DTD XML解析器介绍 XML解析之JAXP( DOM.SAX ) DOM4J Schema   一.XML语法 XML概述   1 什么是XML ...

  7. Windows中杀死某个端口的进程

    最近写项目,总是出现端口被占用的问题,原来傻傻的把电脑重启一下,终于有一天受不了了,想要想办法解决.刚开始从网上找了好多教程,发现不行.开始自己尝试,终于,成功的将占用端口的进程杀掉.在此记录下过程( ...

  8. (2.2)DDL增强功能-自定义函数与存储过程

    1.存储过程 精华总结: 通过对比@@ERROR一般和if判断结合使用,@@TRANCOUNT和try catch块结合使用,xact_abort为on可以单独使用Xact_abort为off时,如果 ...

  9. centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课

    centos LAMP第一部分-环境搭建  Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课 打命令之后可以输入: e ...

  10. 远程终端登录软件MobaXterm

    提到SSH.Telnet等远程终端登录,我相信很多人想到的都是PuTTY[注A]. PuTTY足够成熟.小巧.专注核心任务,并且对编码等常见坑的处理并不缺乏,这其实都是优点.但PuTTY在额外功能上就 ...