运行示例sparkPi计算圆周率(1.1)

本文详细介绍了如何在IDEA中运行SparkPi示例,包括启动Spark和Hadoop,添加Scala文件,设置执行环境以连接到Spark集群,并针对运行时的错误进行排查。在分布式环境中执行时,遇到`NoSuchMethodError`,原因是jar包未提交到worker。解决方法是打包程序为jar,并使用JavaSparkContext的addJar方法提交。最后,文章还展示了成功运行的程序日志和输出结果。
摘要由CSDN通过智能技术生成


1  启动spark

(1) 启动hadoop


启动成功master节点进程:

Slave节点进程:

(2) 启动spark(注意路径)

启动成功:

 

Slave1和slave2的进程如下:

 

2  将sparkPi.scala添加进工程

3  Idea会自动读取src/org/apache/spark/examples下的scala文件

注意下面的路径需要一致:

 

4  设置执行环境

为什么要设置执行环境?

首先我们直接运行SparkPi程序,右击

可以看到出错:


这个原因是找不到程序运行的master,我们需要配置spark的执行环境,

Spark的执行环境根据当前的集群模式可以分为以下几类:

local 本地单线程
local[K] 
本地多线程(指定K个内核)
local[*] 
本地多线程(指定所有可用内核)
spark://HOST:PORT 
连接到指定的 Sparkstandalone cluster master,需要指定端口。
mesos://HOST:PORT 
连接到指定的 Mesos 集群,需要指定端口。
yarn-client
客户端模式 连接到 YARN 集群。需要配置HADOOP_CONF_DIR

yarn-cluster集群模式 连接到 YARN 集群。需要配置HADOOP_CONF_DIR

下面我们配置spark执行环境

在SparkPI的下拉菜单中选择“EditConfigurations”

4.1 分布式环境中执行(master)

-Dspark.master=spark://192.168.189.130:7077


我们再次运行程序发现报如下错误:


问题原因:程序在运行的时候没有把jar包提交到spark的worker上面导致运行的worker找不到被调用的类

 

解决:将要运行的程序达成jar包,然后调用JavaSparkContext的addJar方法将该jar包提交到spark集群中,然后spark的master会将该jar包分发到各个worker上面

将程序打包:




因为我们在每台机器上安装了scala和spark所以我们这里可以去掉scala和spark



在程序中设置加载jar

执行完成后会生成工程的jar包


在程序中加载jar

将: val conf = new SparkConf().setAppName("Spark Pi")

修改为:   val conf = new SparkConf().setAppName("SparkPi").setJars(List("/root/IdeaProjects/SparkExampleWorkspace/out/artifacts/SparkExampleWorkspace_jar/SparkExampleWorkspace.jar"))

运行程序得到结果:

5  常见错误

5.1 Exception in thread "main"java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty()Lscala/collection/immutable/HashSet;

  错误原因:使用的scala版本太高,将scala版本将为2.10.x

5.2 park java api通过runas java application运行的方法

分类: Hadoop spark2014-07-08 16:40 2355人阅读 评论(2) 收藏 举报

先上代码:

[python] view plaincopy

1. /*  

2. * Licensed to the Apache Software Foundation (ASF) under one or more  

3. * contributor license agreements.  See the NOTICE file distributed with  

4. * this work for additional information regarding copyright ownership.  

5. * The ASF licenses this file to You under the Apache License, Version 2.0  

6. * (the "License"); you may not use this file except in compliance with  

7. * the License.  You may obtain a copy of the License at  

8. *  

9. *    http://www.apache.org/licenses/LICENSE-2.0  

10. *  

11. * Unless required by applicable law 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值