hadoop+spark集的版本关系
刚开始部署分布式计算的时候,常常会遇到这样的问题;如何搭配不同软件的版本呢?我们来梳理⼀下他们的关系。
1⾸先hadoop的底层开发是基于java开发的,⾃然是依赖于java的版本。
2另外spark的底层开发是基于scala开发的,⽽scala是⼀种范式语⾔,两者的共同点是都需要在JVM上运⾏。范式语⾔的好处是可以⽀持java,或者python。不会受到开发语⾔的过分限制。
3⽬前hadoop有两个⼤版本,hadoop2.x 和 hadoop3.x;关于,可以移步了解下。对于新⼿⾃然推荐先使⽤hadoop2.x;当熟练之后再考虑搭建hadoop3.x提升效率。这⾥要特别注意的是hadoop2.x都是基于java7开发的,这是最⼤的前提,hadoop3.x是基于java8开发的。这也是版本之间最⼤的区别。虽然都是java,但是他们之间的区别还是需要注意的。
4选择好hadoop版本之后,就是选择相搭配的scala+spark;在spark官⽹有这样⼀句话,⾮常清楚告诉我们选择的遵循规律。
总结⼀下如下表所⽰,这⾥我依然推荐新⼿选择低版本配置,情况1最佳。这样遇到问题也好解决。
版本号scala spark
情况1  2.11  2.x(不包括2.4.2)
情况2  2.12  2.4.2
情况3  2.12  3.0+
hadoop与spark的区别与联系
综上所述我们基本上就确定了版本的配置问题。
可能还会有⼈问具体的版本配置没有限制要求么?我们先看⼀下⼤神的版本配置:
java7--Hadoop2.6.4(2016年2⽉12⽇)--scala2.11.6(2015年2⽉26⽇)--spark2.0.0(2016年7⽉26⽇)
java8--Hadoop3.1.1(2019年)--scala2.11.x(2016年2⽉12⽇)--spark2.3.2(2016年2⽉12⽇)
java8--Hadoop2.9(2019年)--scala未知()--spark2.4.0(2016年2⽉12⽇)--Pycharm + Anaconda(Python 3.7版本)
由上可见,这个集配置还是相对⾮常宽松的。注意好上⾯提出的点,可以⼤胆选择配置。
补充1:
当我配置hadoop2.10.0+scala2.11.6+spark2.4.6的时候,打开spark会出现如下错误。可见我们安装的spark版本过⾼,导致JVM⽆法适配。应该将spark改装低版本的才⾏。