在使用HDI 3.6的群集上,Spark始终使用旧的1.6.3版本

时间:2017-06-26 12:26:15

标签: azure hdinsight

我有一个运行3.6的 HDInsight 群集,根据docs捆绑包仅限Spark 2.1.0。

显然Livy尚未与此版本集成并尝试 curl Livy(如Spark作业建议的Azure教程文档)导致HTTP 502 BAD GATEWAY响应 - 所以我是试图手动提交火花作业。

但是,当我进入主节点并使用spark-submit时,我立即注意到包装器脚本打印了以下内容:

SPARK_MAJOR_VERSION is set to 1, using spark1

所以我假设设置SPARK_MAJOR_VERSION = 2将强制它运行spark2,并且包装器会检测到它并按原样打印它。但火花的版本实际上并没有改变。我得到了一个二进制不兼容的错误(与Scala一样神秘 - 关于funcArrow)。

我查看了spark-wrapper.sh文件,找到了处理不同版本spark的位置:

else
    echo -e "SPARK_MAJOR_VERSION is set to ${SPARK_MAJOR_VERSION}, using Spark${SPARK_MAJOR_VERSION}" 1>&2
    SCRIPT="/usr/hdp/current/spark${SPARK_MAJOR_VERSION}-client/bin/${FILE}"
fi

所以,我在spark-shell内启动了/usr/hdp/current/spark2-client可执行文件,它立即打印出以下内容:

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.6.3
      /_/

Using Scala version 2.10.5 (OpenJDK 64-Bit Server VM, Java 1.8.0_131)

Spark 2.1.0使用Scala 2.11 - 2.10会显示弃用警告 - 所以HDInsight绝对使用Spark 1.x

我错过了什么或这是一个已知的问题吗?

其他信息: 我使用powershell cmdlet创建了此集群 - 但集群肯定是3.6

2 个答案:

答案 0 :(得分:0)

这看起来不像HDI 3.6集群。或者实例出了问题。 你能查一下这个版本吗?检查Azure门户或ssh会话类型:if (abs(Row1-Row2)>1 && abs(Col1-Col2)>1){ vector<vector<int> > OutPut; // OutPut dies here }else{ vector<int> OutPut; // OutPut dies here } // here is no OutPut 。此命令将打印实际位的版本文件夹。它应显示:2.6.0.10-29或类似的基于3.6的群集。

答案 1 :(得分:0)

事实证明,因为我使用powershell azure cmdlet配置集群,所以无法指定我需要的集群类型(不管怎么说,我都不知道)。我已经把“故障”了一个,但我知道我在创建版本设置为3.6时没有收到任何错误。似乎HDInsight 3.6并不一定与Spark2一起使用。

简而言之,使用ARM(Azure资源管理器)的模板系统进行配置要好得多。这样做会立即让我得到一个以Spark2为默认值的提示。查看模板时,它非常清楚地表明群集类型为SPARK2