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