2017年了还在用MapReduce的公司是不是智障?

失业在家,发点牢骚。

陆陆续续面了一些职位,跟朋友们也交流过,发现有些公司面试数据工程师确实挺有意思的,其中一种,就叫“我就是要用mapreduce我不听我不听我不听”。

所以到底为啥一定要用mapreduce?

我唯一的猜测,就是map reduce这种模型对于程序员们单线程的脑子来说,比sql来的简单,哦还有,schema-less,元数据这种事情最讨压了!

所以他们习惯于从文本文件里把数据读出来,然后若干个高度优化过的map reduce过程之后,得到了一个文本文件,然后再灌进mysql,数据处理完了。全套Java搞定,美滋滋。

稍微想一想,全用mapreduce 来处理数据有如下几个问题:

1.没有表

没有表意味着所有关于数据集的信息全部存在java code里,就像mongodb一样,不是没有模式,只是模式存在code里,别人想用就慢慢猜吧,所谓走自己的路让别人无路可走。

2.刻舟求剑的优化

有次去某云供应链公司面试,负责人跟我说他们觉得mapreduce更有控制力,更容易做优化,比如说对于数据倾斜可以预先把倾斜的key先提出来做处理等等,这种就叫做刻舟求剑式的优化,根据某一个时刻或者某一时期数据的状态来硬编码一些优化策略,等到下个月数据的状态变了,这些优化又要重做,不得加班加到死啊。

3.事倍功半

考虑一个企业数据分析的全流程,mr job 跟用hive相比,只省了建表的工作量,而且没有积累,昨天用mr job处理过的数据,为了和今天的新数据交互,还是要用mr job,once mr,alwayes mr。

hive只要加载到表里,后续工作可以用多种工具完成,比如spark,比如impala,比如presto等等,无论哪一种,都比mr job工作量少。

如果说2010年之前用mr job处理数据而不用hive是因为hive不够稳定不够好,现在还有什么理由?现在hive有tez有orc有llap,还有各种udf和udaf,还有各种分析函数,比起手写map reduce,不知道强大多少倍,到底是为啥不用hive?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容