spark2.x编译步骤及异常处理

WHY

Q:为什么要手动编译spark源码?
A:1.可以自己定制开发相关代码,重新编译使用,配合业务场景效率更高;
2.spark官网支持hadoop,yarn,k8s等组件的配合编译,有具体的操作步骤;
3.尝鲜最新版的spark性能,了解其性能;

HOW

1.环境准备
The Maven-based build is the build of reference for Apache Spark. Building Spark using Maven requires Maven 3.3.9 or newer and Java 8+. Note that support for Java 7 was removed as of Spark 2.2.0.
官网对手动编译spark所需的组件本版要求,参考http://spark.apache.org/docs/2.3.1/building-spark.html

系统版本:centos7.4
jdk版本:jdk 1.8.0_131
编译工具:maven 3.5.4
(安装指令:wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz)

2.spark源码下载
下载地址:http://spark.apache.org/downloads.html(下载最新版本)
https://archive.apache.org/dist/spark/spark-2.3.1/
(下载以前版本)

下载完之后解压到指定目录下即可;
3.配置更新

cd spark-2.3.1  --进入spark解压后的根目录
vim pom.xml --编辑pom文件,添加以下内容:
<repository>
        <id>cloudera-repo</id>
        <name>Cloudera Repository</name>
        <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
</repository>

为什么要设置这个仓库地址?
原因:1.我是基于cdh去编译spark,就是说spark组件以后是在cdh环境中使用;
2.因为有些cdh的jar包在国内的镜像仓库里面没有,所以要从官网下载;
4.开始编译

./dev/make-distribution.sh --name 2.6.0-cdh5.13.1 --tgz -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop.version=2.6.0-cdh5.13.1

参数解释:

--name:指定编译完成后Spark安装包的名字
--tgz:以tgz的方式进行压缩
-Phadoop-2.6 以hadoop-2.6的profile进行编译
-Phive和-Phive-thriftserver:编译出来的Spark支持对Hive的操作
-Pyarn:编译出来的Spark支持运行在YARN上

如果需要支持k8s,加上-Pkubernetes,但是注意:k8s是在spark2.3.0版本之后才开始支持k8s组件的;

执行完以上指令之后,spark根目录下回出现一个压缩包,解压之后进入bin目录即可执行使用;
5.异常处理
因为maven的镜像仓库默认的ip是国外的地址,所以拉取jar包的时候会很慢,所以我想使用国内阿里的镜像仓库,但是出现一个问题;

[ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile (scala-compile-first) on project spark-network-yarn_2.11: Execution scala-compile-first of goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile failed. CompileFailed -> [Help 1]

网上关于这个异常的处理方法并不多,而且试了几个重新编译都没有效果,最后折腾了很久,把阿里的镜像去掉,使用国外的镜像,重新编译就没问题了;
以下是我在maven的setting里面设置的镜像地址:

<mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>*</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
 </mirror>

参考链接:1.http://flume.cn/2018/01/08/spark2-2%E6%96%B0%E7%89%88%E6%9C%AC%E7%BC%96%E8%AF%91%E6%89%93%E5%8C%85/
2.http://blog.itpub.net/30089851/viewspace-2140779/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark 3.x与Spark 2.x的区别主要有以下几点: 1. 支持Python 3:Spark 3.x支持Python 3,而Spark 2.x只支持Python 2。 2. 更好的性能:Spark 3.x在性能方面有所提升,包括更快的查询速度和更高的并行度。 3. 更好的SQL支持:Spark 3.x引入了一些新的SQL功能,包括ANSI SQL支持、更好的窗口函数支持和更好的类型推断。 4. 更好的流处理支持:Spark 3.x引入了一些新的流处理功能,包括更好的状态管理和更好的容错性。 5. 更好的机器学习支持:Spark 3.x引入了一些新的机器学习功能,包括更好的特征工程支持和更好的模型解释性。 总的来说,Spark 3.x相对于Spark 2.x来说是一个更加成熟和功能更加丰富的版本。 ### 回答2: Spark 3.x与Spark 2.x有很多显著的不同之处。 首先,Spark 3.x通过引入新的API和更好的优化器提高了性能和可伸缩性。 其次,它更易于使用,使开发人员更容易使用Spark构建复杂的应用程序。以下是Spark 3.x与Spark 2.x的主要区别: 1.新的API: Spark 3.x引入了一些新的API,如Delta Lake、Kubernetes、Pandas UDF等。Delta Lake是一个开源数据湖解决方案,使数据管理、可靠性和性能变得更加容易。有了Kubernetes,Spark可以更好地与容器化环境集成。同时,Pandas UDF支持Python的Pandas库,可以处理大量的数据。 2.优化器的改进: Spark 3.x引入了新的优化器(称为Spark 3.0 Optimizer),可显著提高查询性能。这个优化器使用基于规则的优化技术和成本模型,通过优化查询来提高查询性能。 3.支持更多的数据源: Spark 3.x做了很多工作来改进数据源API。它提供了更广泛的数据源支持,包括Apache Kafka、Amazon S3、Google BigQuery等。 4.增强了机器学习功能: Spark 3.x提供了更多的基于机器学习的库和工具,包括Python的Pandas和Scikit-Learn库的元数据集成,支持PySpark的PythonML库等。 5.交互式查询支持: Spark 3.x引入了新的交互式查询API,这使得Spark变得更加友好。您可以使用Spark SQL进行查询,该工具支持批处理和流处理查询。 总之,Spark 3.x相比Spark 2.x更加强大和易于使用。它提供了更多的API、更好的优化器和更好的可扩展性。这些变化使得Spark在处理大数据方面更加卓越,让开发人员更轻松地构建复杂的应用程序。 ### 回答3: Apache Spark是一个快速、通用,基于内存的分布式计算系统,已成为大数据领域中最受欢迎的计算框架之一。Spark 3.x是Apache Spark计算框架的最新版本,相比于之前的版本有很多新的特性和功能,以下是Spark 3.x与Spark 2.x的主要区别。 1. Python API重构 Python是Apache Spark中最受欢迎的编程语言,但它在之前的版本中没有得到很好的支持。在Spark 3.x中,Python API被重构,在性能和易用性方面都有了大幅改善。 2. 完全支持SQL ANSI标准 Spark 3.x从核心到应用都支持SQL ANSI标准。这意味着,Spark 3.x支持更多的SQL函数和操作,并且更加符合SQL标准。 3. 兼容性增强 Spark 3.x不再依赖于Hadoop,这意味着它能够更好地与其他数据源进行集成。同时,它也支持Kubernetes和Docker的容器化部署方式。 4. AI支持增加 Spark 3.x引入了许多新的机器学习和深度学习算法,例如支持自动编码器和多标签分类器的模型,以及更好的分布式模型训练功能。 5. 其它特性 Spark 3.x还支持Delta Lake,这是一个可靠、高性能的事务性存储。同时,它还提供性能更好的Spark流式处理API和更好的结构化API,这些API在处理大规模结构化数据时更加高效。 总之,Spark 3.x相比于Spark 2.x在性能、兼容性、AI支持和其它特性方面都有很大的改进。无论是开发人员还是数据科学家,Spark 3.x都能够提供更好的用户体验和更高的数据处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值