以我角度看大数据
最近公司开启了大数据项目,有幸的,我能够有个平台学习和实践大数据。研究和实验了两个月,虽然都是属于个人研究,但还是有所体会。在此分享给大家。既然要从我的角度说大数据,那我得说下我的背景,我写Java已有很多很多年了,工作也快有6年了。专业是软件工程,所以代码经验和功底还是有一些的,可以评一评所谓的大数据。由于见识没有广大网友这么广大(有次看黑客帝国的影评,发现自己电影白看了),所以我的评论可能稍微有点偏见,欢迎拍砖交流。
大数据由来
根据百度百科,大数据是在2008年提出的,到现在已经有10年了。
我的印象中,“大数据”概念好像是2014年到2015年火起来的。当时觉得大数据是一个很神秘的东西,就算是现在,在不懂大数据的人面前,依然可以很神秘(懂大数据的你故作神秘是可以忽悠到他们)。
以我不严谨地猜想大数据的由来,简单的说就是MySQL遇上瓶颈了(哈哈,够简单直白吧)。世界上的IT公司,互联网公司,并不是各个都是谷歌。很多公司都是没有自主研发创造能力的,这或许是没有资金,没有合适的生产关系,也或者是这社会过于浮躁(只有挣钱的就是好公司,也确实是,只不过别忘记“有趣”也很重要的)。于是很多公司都是只是使用开源产品,作为Java开发人员,估计无人不晓得Spring这些开源框架吧。这些开源框架已经被验证过无数次,已经是很成熟,所以对于初创公司来说,能节省大量的成本,无论是开发时间还是人才成本(培训机构批量生产)。于是我觉得在数据层面,普通公司的基本同一颜色都是MySQL等关系型数据库,其便利性和可靠性等我就不展开说了,应该都知道。然而在时间这个天使或恶魔的驱使下,数据慢慢地累积,时间让无论大小的公司(只要还活着的公司)都会遇上数据问题,MySQL等关系型数据库的问题开始凸显,准确来说是达到了其边界。这时候,迫切需要一个可能处理大量数据的工具。于是开源框架Hadoop的承担了这历史责任。
MySQL等关系型数据库的痛点
MySQL等关系型数据库是属于OLTP(On Line Transcation Processing)。也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。注重的响应,而不是高吞吐。用过MySQL都是指有insert、update、select和delete,其用了大量的硬盘随机读写,这才让数据原地更新。在这种机制下,想要高吞吐量,那势必极大地加大响应时间。
可扩展性也是关系型数据库的痛点,大家对于其扩展,基本也就是读写分离,分库分表分区。每次数据库扩展,有经历的人,都是心有余悸的。一是需要停机维护,二是需要时间好长,而且害怕恢复不起来。简单地说就是要熬夜加班。三是成本增长会非线性增长,扩展硬盘和CPU都是很花钱呢。
从MySQL等关系型数据库的痛点思考
我们发现其痛点可以归于两类:一是硬盘的随机读,二是扩展性。
Hadoop基本上可以很好的解决这两个问题,一是引入线性读写的概念,这样就重塑了update的概念,update不仅仅包括让数据原地更新,以追加的形式保存历史记录的状态也是属于update概念范畴。二是其使用的都是普通PC,所以需要将其连起来使用,所以天生就是具有扩展性。
虽然Hadoop能够很好的解决关系型数据库的两大痛点,它就可以替代关系型数据库。这里就要引入吞吐量(Throughtput)和响应时间(RT),可参考。
吞吐量是对单位时间内完成的工作量的量度。示例包括:
每分钟的数据库事务
每秒传送的文件千字节数
每秒读或写的文件千字节数
每分钟的 Web服务器命中数
响应时间是提交请求和返回该请求的响应之间使用的时间。示例包括:
数据库查询花费的时间
将字符回显到终端上花费的时间
访问 Web 页面花费的时间
通常,在资源一定的情况下,平均响应时间越长,系统吞吐量较大;平均响应时间越短,系统吞吐量越小。
所以在Hadoop处理全量数据的情况下,目标就是高吞吐量,所以其响应速度可能就无法和传统的关系型数据库媲美了。
大数据概念火的原因
1.时势
2.是其带来的价值,能够全量的分析数据,让全量分析成为可能,从而延伸出人功能智能什么的(我猜的)。如果你实践一下大数据的全量分析,那感觉,真的很爽。
3.Hadoop开源框架的出现,让不懂写代码,或者说是没有多少年写代码经验或对计算机理论不熟悉的人,让这些人按照其官网教程或自己拼接组件,从而很轻易的使用上大数据,而且方案还算很成熟,如离线方案:Flume->Kafka->Flume->HDFS->Hive。这方案可以说基本不用自己写代码。(或许说得有点过,要成为商业级产品,还是需要些计算机理论和代码的功底滴)
观点总结
数量随着时间的增长,数据量以达到传统关系型数据库的边界。其关键边界,一是硬盘的随机度,二是扩展性。而Hadoop以线性读写和高扩展性解决这两个痛点,成为大数据的代名词,但依然无法代替传统关系型数据库。那是因为资源一定的情况下,响应时间和吞吐量成反比(响应时间越长,系统吞吐量较大,响应时间越短,系统吞吐量越小)。一项技术诞生,往往需经历,发明创造、优化和普及等三个阶段。而Hadoop带来普及,Hadoop也成为大数据的代名词。
以上观点纯属个人观点,算是属于实验结论,非逻辑推理。可能不严谨不全面。但我觉得适合用于入门铺垫,降低人的心理门槛。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。