spark3.0出来一段时间了,内部做了很多的优化,所以想尝尝新。
下载下来spark3.0的源码,查看pom.xml文件,发现profile中的hadoop版本是2.7,所以把这个属性改成2.6, 当然我们是cdh5.14.2,hadoop版本是2.6.0。开始编译,发现编译报错,这是因为在2.6.0到2.6.3hadoop中有个class在之后的版本变了,而spark里使用的是之后版本的新API。
找到resource-managers/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala,把下面源码注释掉,并修改如下:
//sparkConf.get(ROLLED_LOG_INCLUDE_PATTERN).foreach { includePattern => // try { // val logAggregationContext = Records.newRecord(classOf[LogAggregationContext]) // logAggregationContext.setRolledLogsIncludePattern(includePattern) // sparkConf.get(ROLLED_LOG_EXCLUDE_PATTERN).foreach { excludePattern => // logAggregationContext.setRolledLogsExcludePattern(excludePattern) // } // appContext.setLogAggregationContext(logAggregationContext) // } catch { // case NonFatal(e) => // logWarning(s"Ignoring ${ROLLED_LOG_INCLUDE_PATTERN.key} because the version of YARN " + // "does not support it", e) // } //} //appContext.setUnmanagedAM(isClientUnmanagedAMEnabled) //sparkConf.get(APPLICATION_PRIORITY).foreach { appPriority => // appContext.setPriority(Priority.newInstance(appPriority)) //}
修改后:
sparkConf.get(ROLLED_LOG_INCLUDE_PATTERN).foreach { includePattern => try { val logAggregationContext = Records.newRecord(classOf[LogAggregationContext]) val setRolledLogsIncludePatternMethod = logAggregationContext.getClass.getMethod("setRolledLogsIncludePattern", classOf[String]) setRolledLogsIncludePatternMethod.invoke(logAggregationContext, includePattern) sparkConf.get(ROLLED_LOG_EXCLUDE_PATTERN).foreach { excludePattern => val setRolledLogsExcludePatternMethod = logAggregationContext.getClass.getMethod("setRolledLogsExcludePattern", classOf[String]) setRolledLogsExcludePatternMethod.invoke(logAggregationContext, excludePattern) } appContext.setLogAggregationContext(logAggregationContext) } catch { case NonFatal(e) => logWarning(s"Ignoring ${ROLLED_LOG_INCLUDE_PATTERN.key} because the version of YARN " + "does not support it", e) } }
为什么要修改? 我们可以在hadoop源码中找到LogAggregationContext.java,这个类在2.6.3之后的版本是修改了的。可以对比下。
相关推荐
carbondata-1.4,spark-2.1,hadoop-2.6.0-cdh5.11.1源码编译
带编译所需的maven库,spark2.3.3源码基于hadoop2.6.0-cdh-5.15.2进行重新编译
编译好的Spark编译好的Spark编译好的Spark编译好的Spark编译好的Spark
linkedin的dr-elephant 编译文件,在centos 7(64位)下进行编译,支持 hadoop 2.6.0 , spark 1.x 版本。
spark2.4.6编译,基于hadoop-2.6.0-cdh5.7.0.解压可用。可使用scala2.12.0运行,用于大数据方面的个人使用或测试
spark源码在hadoop-cdh5.7.0编译生成,用于学习hadoop和spark课程
windows系统手动编译spark-2.2.0-bin-2.6.0-cdh5.7.0.tgz apache-maven-3.3.9-bin.tar.gz hadoop-2.6.0-cdh5.7.0.tar.gz jdk-8u91-linux-x64.tar.gz scala-2.11.8.tgz
spark兼容Hadoop cdh 版本 自己编译
获取截止:2018-3-2号,Github最新源码从新编译解决了找不到类问题 ERROR CarbonProperties: main The specified value for property sort.inmemory.size.inmbis Invalid. Taking the default value.1024 java.lang...
HADOOP-COS功能说明Hadoop-COS实现了以腾讯云 COS 作为底层文件系统运行上层计算任务的功能,支持使用Hadoop、Spark以及Tez等处理存储在腾讯云COS对象存储系统上的数据。使用限制只适用于 COS V5 版本使用环境系统...