刚开始学习Hadoop,就听说Spark会取代Hadoop。噩耗啊!为什么??为什么一切来的那么快???互联网新技术对于初学者来说是机遇还是盲从??
学习技术并不一定需要学习最新的。
Hadoop目前相对Spark有更成熟的商业环境和社区、文档等各方面支持。
底层很多技术理论都是想通的,建议你先学习Hadoop入门,即便后续Spark要取代Hadoop,届时过度过去也不是难事。
Spark相对于Hadoop的优势,在任务调度的开销方面:传统的MR系统,如Hadoop 是为了运行长达数小时的批量作业而设计的,在某些极端情况下,提交一个任务的延迟非常高。spark采用了事件驱动的类库 akka来启动任务,可以避免进程或线程启动,以及切换开销。
spark现在很火,但是还不是分布式的全部的。
建议初学者学习一种学习能力,掌握这种元的能力。
对于hadoop重点是学习一种分布式的思想,可以分布式去思考一些问题。
至于api层面的一些变化,spark也是在hadoop的基础上优化的,flink也可以认为是spark基础上优化的。
祝福LZ
1 Hadoop主要针对map-reduce函数编程模型的程序,spark则比较灵活,提供多种transformation和action,可以表达更复杂的模型;
2 运行在Hadoop上的map-reducec程序,基本上自己管理自己的数据(来自HDFS或者http等文件系统的文件数据,来自关系型数据库或者NoSQL型数据库的数据),而Spark则是提供了RDD这种数据结构并把RDD当作分布式数据来对待;
3 Spark可以在程序中指定将特定的RDD缓存于内存还是磁盘,而Hadoop的cache机制并没有那么有效(?)至少理论上是这样;
4 Hadoop通常认为适合数据是key-value这种形式的,实际中个人感觉至少要是表格形式的,而且在一次job中表格的条目之间最好逻辑不相关;而Spark则可以处理逻辑结构更加复杂的数据(例如图特别是有向无环图);
5 个人感觉Hadoop可以当做分布式计算框架来使用,而Spark更像是一种数据过滤和统计计算工具。未必准确,只是个人的感觉;
6 编程语言方面,Hadoop除了Java(或者其他JVM语言)之外,理论上可以支持任何可以用stdin/stdout进行输入输出的编程语言(通过Hadoop Streaming);而Spark仅仅支持Java/Scala/Python/R这四种。
建议楼主可以以Hadoop为基础然后进一步了解spark,特别可以着重的掌握spark与Hadoop之间的区别以及这项技术产生的原因,这样更加帮助你掌握大数据的处理数据的方式和架构。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。