当前位置:首页 » 编程软件 » spark110编译

spark110编译

发布时间: 2022-11-16 01:24:12

⑴ spark thrift server 与 网易 kyuubi thrift server

thrift server可以实现通过jdbc, beeline等工具,实现连接到spark集群,并提交sql查询的机制。

默认情况下,cdh安装的spark没有包含thrift server模块,因此我们需要重新编译spark。

另外,为了不影响cdh自带的spark,而且spark目前都是基于yarn运行的,本身也没有什么独立的服务部署(除了history sever)。

所以,在一个集群中,可以部署安装多个版本的spark。

我们使用源码编译的spark 2.4.0(其中hive的版本是1.2.1)

cdh集成的spark版本和Hive版本如下:

使用jdk1.8
修改spark提供的mvn,使用自行安装的maven 3.8.1

使用make-distribution.sh可以帮助与我们编译之后打包成tgz文件

修改pom.xml文件的配置如下。

最后,执行编译命令如下:

这样打出的包,就含有thrift server的jar包了。

最终打包文件,根目录下。

之后就是解压到其他目录下后即可。

将hive-site.xml的文件连接过来,这样spark就可以读取hive的表了。

为了确保spark提交到yarn上运行,需要配置

cp spark-defaults.conf.template spar-defaults.conf

另外,可以在spark-env.sh中设置环境变量。

HADOOP_CONF_DIR

环境变量,也可以在/etc/profile中设置

启动日志可以查看,注意下端口占用问题,如下。

启动时候,使用beeline工具连接上,主要这里不用使用cdh默认安装hive提供的beeline工具,应为版本太高。

使用编译后spark生成beeline工具

参考beeline使用教程。

https://github.com/apache/incubator-kyuubi

kyuubi是基于thrift sever二次开发,在系能和安全上优于thrift server。

鉴于目前hive的版本是2.1,而最新的kyuubi的hive是2.3,所以采用前天版本的kyuubi,采用0.7版本,保证hive的版本小于当前集群中的hive版本。

使用build目录下的dist脚本进行编译和打包。

编译成功后,会在更目录下出现tar.gz的压缩文件,如上图。

之后解压到目录下。

配置bin/kyuubi-env.sh脚本,设置spark路径

执行bin/start-kyuubi.sh命令即可。

访问的方式同样采用beelin,注意使用上面章节的beeline工具。

访问后,可以通过beeline访问到hive的表(在spark中已经配置了hive-site.xml)

!connect jdbc: hive2://xxxx:10009 即可。

⑵ spark1.3编译出错,求解决方法

把 pom.xml文件中的scalastyle的相关改成false
<groupId>org.scalastyle</groupId>
<artifactId>scalastyle-maven-plugin</artifactId>
<version>0.4.0</version>
<configuration>
<verbose>false</verbose>
<failOnViolation>false</failOnViolation>
<includeTestSourceDirectory>false</includeTestSourceDirectory>
<failOnWarning>false</failOnWarning>

⑶ spark 2.0.0运行javaWordCount出现 java.lang.ExceptionInInitializerError,如何解决

com.hiaward.house.service.impl.HouseReleaseServiceImpl问题好像出在这个类实例化时,发生了IndexOutOfBoundsException,数组越界的错误,你看看是不是数组为[0],但是取值超过的[0]

⑷ spark编程 mysql得不到数据

“这里说明一点:本文提到的解决 Spark insertIntoJDBC找不到Mysql驱动的方法是针对单机模式(也就是local模式)。在集群环境下,下面的方法是不行的。


编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。

为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。

在计算机系统中,一条机器指令规定了计算机系统的一个特定动作。

一个系列的计算机在硬件设计制造时就用了若干指令规定了该系列计算机能够进行的基本操作,这些指令一起构成了该系列计算机的指令系统。在计算机应用的初期,程序员使用机器的指令系统来编写计算机应用程序,这种程序称为机器语言程序。

以上内容参考:网络-编程

⑸ 怎样获得在yarn框架上运行jar包的执行结果

配置方法
(1) 首先需要确保spark在1.1.0以上的版本。
(2) 在HDFS上建立一个公共lib库,比如/system/spark-lib/,设置权限为755。把spark-assembly-*.jar上传到公共lib库中。
(3) 在spark-env.sh中配置:

view plain to clipboardprint?
<span style="font-size:14px;">spark.yarn.jar hdfs://yarncluster/system/spark_lib/spark-assembly-1.1.0-hadoop2.3.0-cdh5.1.0.jarspark.yarn.preserve.staging.files false</span>

**spark.yarn.jar配置成HDFS上的公共lib库中的jar包。这个配置项会使提交job时,不是从本地上传spark-assembly*.jar包,而是从HDFS的一个目录复制到另一个目录(不确定HDFS上的复制是怎么操作的),总的来说节省了一点时间。(网上有的文章里说,这里的配置,会节省掉上传jar包的步骤,其实是不对的,只是把从本地上传的步骤改成了在HDFS上的复制操作。)
**spark.yarn.preserve.staging.files: 这个配置项配置成false,表示在执行结束后,不保留staging files,也就是两个jar包。然后HDFS上的.sparkStaging下的两个jar包在作业执行完成后就会被删除。如果配置成true,执行完后HDFS上的.sparkStaging下两个jar包都会保存下来。
然后再运行,发现HDFS上.sparkStaging目录下不会再保留jar包。
问题定位
按道理来说,因为spark.yarn.preserve.staging.files默认是false,所以HDFS上的jar包是不会被保留的。但是在spark1.0.2中,却没有删除。我看了下1.0.2的代码,删除的机制是存在的:
//yarn/alpha/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala

view plain to clipboardprint?
<span style="font-size:14px;"><span style="font-family:Microsoft YaHei;font-size:12px;"> /** * Clean up the staging directory. */ private def cleanupStagingDir() { var stagingDirPath: Path = null try { val preserveFiles = sparkConf.get("spark.yarn.preserve.staging.files", "false").toBoolean if (!preserveFiles) { stagingDirPath = new Path(System.getenv("SPARK_YARN_STAGING_DIR")) if (stagingDirPath == null) { logError("Staging directory is null") return } logInfo("Deleting staging directory " + stagingDirPath) fs.delete(stagingDirPath, true) } } catch { case ioe: IOException => logError("Failed to cleanup staging dir " + stagingDirPath, ioe) } }</span></span>
按照这个逻辑,默认在AM关闭的时候,是会删除HDFS上的jar包的。不过没有正常删除。推测这应该是一个1.0.2里面的bug,而在1.1.0里面已经修复。

nodemanager节点上的jar包缓存
升级到1.1.0版本后,HDFS上的jar包问题就解决了。但是nodemanager节点上的jar包还是会保留。这个问题的定位很纠结,不过结果却出乎意料的简单。不说了,上结果吧。
配置方法
(1) 配置yarn-site.xml:
<span style="font-family:Microsoft YaHei;font-size:12px;"> <property>
<name>yarn.nodemanager.local-dirs</name>
<value>local-dir1, local-dir2,local-dir3</value>
</property>
<property>
<name>yarn.nodemanager.localizer.cache.target-size-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.nodemanager.localizer.cache.cleanup.interval-ms</name>
<value>1800000</value>
</property></span>
**yarn.nodemanager.local-dirs: 这个目录是nodemanager上的作业中间数据存放路径。推荐配置多个盘上的多个路径,从而分散作业执行中的磁盘IO压力。
**yarn.nodemanager.localizer.cache.target-size-mb:配置nodemanager上的缓存目录的最大限度。nodemanager上有一个deletion server服务,会定期检测,如果yarn.nodemanager.local-dirs中配置的目录大小(如果配置了多个,则计算多个目录的总大小)是否超过了这里设置的最大限度值。如果超过了,就删除一些已经执行完的container的缓存数据。
因为spark提交作业后遗留在nodemanager上的jar包就在yarn.nodemanager.local-dirs下面,所以只要这里配置合适的大小值。那么nodemanager上的deletion server是会自动检测并保证目录总大小的。所以只要配置了这个量,我们就不需要再担心nodemanager上的jar包缓存问题了,交给yarn就好了!很简单啊有木有,可就这么个问题,居然花了我一个星期的时间去定位。
**yarn.nodemanager.localizer.cache.cleanup.interval-ms: deletion server多长时间做一次检测,并且清除缓存目录直到目录大小低于target-size-mb的配置。
通过上面这三个量的配置,nodemanager会确保本地的缓存数据总量在target-size-mb之下,也就是超过了的话,之前的spark的jar包就会被删除。所以我们就不需要再担心nodemanager节点上的spark jar包缓存问题了。不过target-size-mb的默认值是10G,这个值当然可以根据你的实际情况进行调整。

⑹ 怎样在spark单机上编写运行scala程序

使用Scala写一个测试代码:

object Test {
def main(args: Array[String]): Unit = {
println("hello world")
}
}

就把这个Test视为类,项目组织结构如:

⑺ 虚拟机spark中怎样导入数据,的代码

具体操作步骤:
1、准备Spark程序目录结构。
2、编辑build.sbt配置文件添加依赖。
3、创建WriteToCk.scala数据写入程序文件。
4、编译打包。
5、运行。
参数说明:your-user-name:目标ClickHouse集群中创建的数据库账号名。
your-pasword:数据库账号名对应的密码。
your-url:目标ClickHouse集群地址。
/your/path/to/test/data/a.txt:要导入的数据文件的路径,包含文件地址和文件名。说明文件中的数据及schema,需要与ClickHouse中目标表的结构保持一致。
your-table-name:ClickHouse集群中的目标表名称。

⑻ spark在windows开发怎么测试

1、windows下环境
在安装开发软件之前,首先需要安装JAVA 和SCALA,并且配置好环境变量。
2、java开发spark程序
1) 下载eclise软件,下载地址:http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/mars2 尽量下载最新的,而且自带maven的eclipse
2) 打开eclipse软件,创建maven项目:
点 击 file ->new ->others ->maven project 点 击 next ,
选 择maven-archetype-quickstart ,点击 next,
group id 为 com.dt.spark,artifact id 为sparkApps,
然后点击 finish。
3) 修改JDK和pom文件
创建 maven 项目后,默认的 jdk 是 1.5 要改成我们前面安装好的 jdk1.8 。在项目上右击 build path ->configure build path 。 在弹出页面点击 Libraries,选中 jre system library 。点击 edit,在弹出框选择 workspace default jre ,然后点击 finish。然
后在点击 ok。将 pom 文件修改为如下内容,然后等待 eclipse 下载好 maven 依赖的 jar 包, 并编译工程。 编译好工程后有个错误提示, 在此错误列上, 右击选择 quick fix ,在弹出页面点击 finish 即可。

热点内容
san存储和nas存储 发布:2025-05-14 04:34:44 浏览:151
幽灵战士3什么配置 发布:2025-05-14 04:33:53 浏览:113
安卓的虚拟机哪个好用 发布:2025-05-14 04:32:34 浏览:870
宿迁存储式化工设备 发布:2025-05-14 04:32:33 浏览:53
s7200编程s7200 发布:2025-05-14 04:28:32 浏览:413
安卓定制版苹果手机是什么意思 发布:2025-05-14 04:26:27 浏览:379
如何搭建php环境虚拟服务器免费 发布:2025-05-14 04:25:37 浏览:103
相册加密怎么看 发布:2025-05-14 04:24:53 浏览:573
怎么压缩邮件 发布:2025-05-14 04:16:51 浏览:497
云服务器搭建邮箱绑定郁闷 发布:2025-05-14 04:16:48 浏览:149