2017年6月,开始数据分析的职业生涯,作为架构师,建立起一套基于.Net/.Net Core的小数据实时处理计算平台,这里记录学习过程中的点点滴滴!
数据分析的核心,可以理解为:Select xxx From table Where yyy Group By zzz
小数据计算平台的定位:
- 数据量在1000万行到100亿行之间,传统关系型数据库算起来吃力,且类似项目不是特别多,Hadoop搭起来难以收回成本
- 资源投入有限,基于传统项目之上的轻量级数据分析,一般只能有1~2台服务器,Hadoop最好能有8台以上服务器
- 门槛低,普通软件工程师容易上手做数据分析,并参与开发配套的业务系统,大数据开发工程师需要会很多(Hadoop、MapReduce、HDFS、Hive、HBase、Spark、Zookeeper、Sqoop)
- 实时内存计算,C#/Java/Go+Redis/MongoDB,轻松做到0.5~5分钟实时处理,大多数大数据开发工程师只熟悉 Hadoop+Hive,擅长T+1离线计算,对实时计算Spark+HBASE熟悉的不多
题外:其实大家平时借助消息队列(Kafaka/RocketMQ)异步处理的统计,本身就属于实时计算数据分析的一种!
该平台的目标并非替代Hadoop,而是对中小型数据分析提供一种轻量级选择。
实际上我们大部门就有完整的Hadoop大数据平台,我们的许多模块,都跟Hive、HBase、Kafka等有大量的数据交互
未来的日子里,会根据后面的小数据平台配套,把相关技术慢慢写下来。
文章目录:
小数据计算平台配套:
- 关系型数据库,数据来源以及计算结果存储,推荐MySql,批量插入5000~50000tps
- Redis,原始数据源预热,中间计算数据临时存储,结果数据缓冲队列,选Linux/Windows多实例部署,单实例性能8w~10wops
- 计算节点,核心数据分析应用,从数据库或Redis或微服务读取原始数据和基础数据,根据业务规则进行计算,统计结果直接落库或借助Redis异步落库
- 调度系统,时间片调度算法,对数据进行切片处理,多实例多线程并行计算,错误或超时重试机制。计算节点上跑的分析应用依赖于调度系统
- 服务节点,频繁且反复读取的小数据(1000万~100亿)预热进入Redis,大量部署微服务,封装各种数据访问,10万以下数据直接缓存到进程内存
- 微服务注册中心,每个服务至少部署2个节点(可用性、负载均衡),大量服务需要管理起来,伸缩扩容
- 配置中心,数据分析应用和微服务的大量伸缩部署,需要有配置中心把数据库配置等各种配置管理起来
- 监控中心,监控重要计算节点和服务节点,通过微信/短信/钉钉等工具报告紧急情况,或每天提供数据简报
实际使用根据需要进行调整,如果数据分析项目不多,后面的辅助性配套可以不要。
关于博客,10多年来断断续续也写了不少博文,我写的博客有个特点,都是经过深思熟虑并且在网络上很少能找到相关内容的知识点。
关于工作,公司财报提到2018年第二季度包裹量21.16亿件,公司名和具体工作内容不方便讨论,还请大家见谅和监督!
本文答疑:QQ群1600800,2018-08-12 20:00:00
End.
原文地址:https://www.cnblogs.com/nnhy/p/Data.html
时间: 2024-10-07 18:00:25