学习hadoop必须有java基础吗

如题所述

作者:markxiao
链接:https://www.zhihu.com/question/34185054/answer/149007333
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

hadoop一般在工业环境大部分是运行在linux环境下,hadoop是用java实现的。所以最好是熟悉linux环境下编程。至于java做到看得懂比较好,遇到问题可以看看源码。
如果不会java,开源的可以用streaming写mapreduce程序,只用跟stdin和stdout打交道就行了。百度之前开发出了bistreaming,hce组件,用这些组件写c/c++就好了,不清楚有没有开源。
如果你要定制化一些东西,比如inputformat/outputformat之类的,或者你想调用hdfs/yarn的java接口,懂java就很必要了。
至于hadoop学习路径,主要基于我个人的学习路线来说得,可能不一定适合你,仅供参考,我对yarn和hdfs的细节了解不深,可能更多侧重mapreduce。
(1)实践:了解基本的mapreduce原理后,可以仿照demo写一些mapreduce程序,然后查看任务监控页面,了解监控页面一些指标,这个是你分析任务很好的帮手。可以处理一些大的数据量,写完了之后分析监控页面的指标,思考这个任务还有没有优化空间?任务哪部分耗时比较多比较多?如果失败了,你能不能根据日志定位到错误的地方?在此阶段可能会遇到各种各样的问题,比如streaming怎么处理二进制数据,很多小文件导致性能低下。
(2)理论:经过一段时间的实践,对mapduce的思想应该比较熟悉了。这个时候可以看看mapreduce的运行过程,mapreduce的提交过程是怎么样?map输出阶段有哪些过程?shuffle过程是怎么样?在大数据量情况下怎么保证reduce阶段,相同的key的记录在一起的?
(3)读源码阶段:如果你对mapreduce的使用和调优很熟练了,对源码也有兴趣,就可以看看源码了。上层的有mapreduce,streaming;基础点的可以看看hdfs,yarn的实现;底层的可以看看hadoop的rpc源码实现。
最后,我只是根据我的经历大致可以划分这三个阶段,三者完全可以穿插进行。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答