TOP

Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用(一)
2017-10-10 12:11:24 】 浏览:9086
Tags:Spark 集群 Akka Kafka Scala 开发 一个 应用

前言

Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境,我们已经部署好了一个Spark的开发环境。
本文的目标是写一个Spark应用,并可以在集群中测试。

创建一个Scala的工程- SimpleAPP

  • 建一个目录SimpleAPP
mkdir SimpleAPP
mkdir -p SimpleAPP/src/main/scala
  • 建一个SimpleAPP/src/main/scala/SimpleApp.scala文件
    这个程序会进行MapReduce计算,计算从1到输入参数n的平方和。
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object SimpleApp {
  def main(args: Array[String]) {
    squareSum(10000)
  }

  private def squareSum(n: Long): Long = {
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)

    val squareSum = sc.parallelize(1L until n).map { i => 
      i * i
    }.reduce(_ + _)

    println(s"============== The square sum of $n is $squareSum. ==============")

    squareSum
  }
}
  • 建一个SimpleAPP/build.sbt文件
name := "Simple Application Project"

version := "1.0"

scalaVersion := "2.11.8"

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0"

构建你的工程

  • 构建工程
# move to the project folder
cd SimpleAPP

# build the project
sbt package

Output:

[info] Packaging .../target/scala-2.11/simple-application-project_2.11-1.0.jar ...
[info] Done packaging.

粗体的部分是构建出来的jar文件相对路径。需要记住,运行的时候有用。

  • 运行工程
    使用spark提供的命令运行我们的spark应用。
    --master local[4]表示在local模式下运行,使用4个线程。
# run the project in local with 4 threads
$SPARK_HOME/bin/spark-submit --master local[4] --class SimpleApp target/scala-2.11/simple-application-project_2.11-1.0.jar

输出 (会有很多的log输出):

...
============== The square sum of 10000 is 333283335000. ==============
...

现在,我们完成了一个简单的spark工程的开发。下一步,看看如何在集群中运行。

启动一个standalone集群环境。

部署一个standalone集群环境不是本文要讲的内容。
所以,现在我们只使用单机上的集群功能。
如果想部署一个有多个机器的standalone集群环境,可以查看在官网上的说明。部署起来也比较简单。

基本概念

  • Master server
    集群环境中,主从架构里的主服务器。
    可以有多个master server,只能有一个是leader,其它的都是standby。(我猜的)
    Spark使用ZooKeeper的实现主服务器的灾难恢复。

  • Slave worker
    集群环境中,主从架构里的从服务器。

  • Master URL
    在standalone集群环境中,master服务器启动后,master服务器提供了一个master URL用于和slave workers交互。
    默认的Master URL是:spark://$(hostname):7077
    实际的Master URL可以在master服务器的日志中找到。
    这个Master URL用于:
  • 启动slave workers。
  • Spark应用的--master配置。

  • Master Web UI
    在master服务器启动后,master服务器提供了一个web应用,可以通过浏览器来查看运行的状态。
    默认的Master Web UI URL是:http://localhost:8080
    实际的Master Web UI URL可以在master服务器的日志中找到。

  • Slave Web UI
    在Slave worker启动后,slave worker提供了一个web应用,可以通过浏览器来查看运行的状态。
    默认的Slave Web UI URL是:http://localhost:8081
    实际的Slave Web UI URL可以在master服务器的日志中找到。

启动master和slave服务

  • 启动master服务器
# start master
$SPARK_HOME/sbin/start-master.sh

输出:

starting org.apache.spark.deploy.master.Master, logging to /opt/spark/logs/spark-steven-org.apache.spark.deploy.master.Master-1-sycentos.localdomain.out

  • 如果需要,查看一个Master URL
# We need get the spark master url
cat $SPARK_HOME/logs/spark-steven-org.apache.spark.deploy.master.Master-1-sycentos.localdomain.out | grep Master:
# or
cat $SPARK_HOME/logs/spark-$(whoami)-org.apache.spark.deploy.master.Master-1-$(hostname).out | grep Master:

输出:

16/09/23 19:45:37 INFO Master: Started daemon with process name: 4604@sycentos.localdomain
16/09/23 19:45:42 INFO Master: Starting Spark master at spark://sycentos.localdomain:7077
16/09/23 19:45:42 INFO Master: Running Spark version 2.0.0
16/09/23 19:45:44 INFO M
Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用(一) https://www.cppentry.com/bencandy.php?fid=90&id=130332

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spark集群 + Akka + Kafka + Scal.. 下一篇细谈Slick(5)- 学习体会和将来..