今天想跟大家唠唠我之前捣鼓“大算”这玩意儿的经历。一开始我也没太搞明白这词儿具体指感觉挺高大上的,直到自己实打实地碰上硬骨头,才算是摸着石头过河。
起因:小水管顶不住大洪水
那时候我在一个小团队,负责处理一些用户行为数据。刚开始数据量不大,写个脚本在本机或者随便一台服务器上跑跑,半小时一小时也就出结果,轻松加愉快。谁知道后来业务跑起来,用户量“蹭蹭”往上涨,那数据量简直是几何级数增长,从MB到GB,到TB级别。
原来的小脚本彻底歇菜,跑一次得花个一两天,机器CPU、内存直接拉满,卡得动弹不得。老板天天催结果,我这边是真没办法,感觉就像拿个小水瓢舀太平洋,急得是满头大汗。
折腾过程:摸索着往前走
第一步:暴力升级?此路不通。
最直接的想法就是给服务器加配置,换更强的CPU,加更多的内存和硬盘。试试,确实快点,但很快又到瓶颈,而且成本直线上升,老板那边脸都绿。关键是,数据还在涨,这根本不是长久之计。
第二步:人多力量大,试试“云”?
没办法,硬着头皮开始研究怎么把活儿分出去干。听说“云”上能随时租到一大堆机器,听起来就像是能临时组建一个庞大的计算队伍。于是开始尝试:
- 研究怎么在云平台上批量开机器、部署环境。这玩意儿刚上手是真头大,各种配置、网络、安全组,跟以前单机搞完全不是一个路数。
- 琢磨怎么把我的任务拆分开,让不同的机器并行处理。这又涉及到任务调度、数据分发、结果汇总,全是新坑。
- 搞半天,算是勉强能让一堆机器一起跑起来,速度确实上去不少。感觉就是把原来一个人干的活,分给几十上百个“虚拟工人”。这大概就是沾点“云计算”的边儿,主要是解决“算力不够”的问题。
第三步:数据本身也得“治”。
光有机器还不够。面对那么大的数据,读写、处理本身就很慢。就算机器再多,每个机器光是加载那一小块数据都费劲。这时候发现,光解决“算”的问题不够,还得解决“存”和“取”的问题。
- 开始接触一些专门处理大数据的工具和方法。怎么把数据存得更合理,方便快速读取和分发。
- 学习怎么用一些特定的框架或者服务,它们能更聪明地管理数据,把计算任务推到数据旁边去执行,而不是傻乎乎地把海量数据传来传去。
- 这一步感觉更像是针对“大数据”本身的处理。重点是怎么高效地搞定这些海量信息。
结果与体会:稀里糊涂搞定“大算”
七搞八搞,总算是把那个数据处理任务的速度提到可以接受的范围。虽然过程挺曲折,踩不少坑,但也确实把问题解决。
回过头来看,所谓的“大算”,在我这儿的实践就是:
当单台机器扛不住的时候,就得想办法利用更多的资源(机器、存储等),这就是往“云”那个方向靠。
当数据本身大到处理起来非常麻烦的时候,就得用专门的技术和工具去高效地管理和运算这些数据,这就是往“大数据”处理那个方向靠。
很多时候,这两个东西是分不开的,你中有我,我中有你。对我来说,没那么多理论,就是遇到问题,找方法解决问题。先是算力不够,找云要资源;后来发现数据本身处理难,又去找处理大数据的法子。整个过程就是不断试错,不断调整。
“大算”这东西,说白就是当你面对的问题规模超过传统单机处理能力时,你不得不采用的一套组合拳,涉及到资源调度、分布式计算、数据管理等一堆东西。对我而言,它不是一个清晰的概念,而是一段解决实际问题的、有点狼狈但最终搞定的经历。
还没有评论,来说两句吧...