Запуск простого Spark приложения на YARN

Для примера возмём это простое Spark приложение реализованное на Scala и Java: https://github.com/sryza/simplesparkapp

Делает оно следующее:
  1. Читает данные с текстового файла
  2. Считает кол. вхождений каждого слова
  3. Фильтрует слова, которые попадалсь мение 1 милиона раз
  4. Для оставшегося сета считает кол. вхождений каждой буквы

Вот код на Scala:

package com.cloudera.sparkwordcount

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object SparkWordCount {
  def main(args: Array[String]) {
    val sc = new SparkContext(new SparkConf().setAppName("Spark Count"))
    val threshold = args(1).toInt
    
    // split each document into words
    val tokenized = sc.textFile(args(0)).flatMap(_.split(" "))
    
    // count the occurrence of each word
    val wordCounts = tokenized.map((_, 1)).reduceByKey(_ + _)
    
    // filter out words with less than threshold occurrences
    val filtered = wordCounts.filter(_._2 >= threshold)
    
    // count characters
    val charCounts = filtered.flatMap(_._1.toCharArray).map((_, 1)).reduceByKey(_ + _)
    
    System.out.println(charCounts.collect().mkString(", "))
  }
}

Перед запуском Spark на Yarn-e приложения нужно создать с исходников jar файл. Код Scala помещаем в директории src/main/scala а код Java помещаем в директории src/main/java. Далее директории создаются по аналогу названия пакета. К примеру название пакета "com.cloudera.sparkwordcount" означает, что файл "SparkWordCount.scala" лежит в директории src/main/scala/com/cloudera/sparkwordcount а файл "JavaWordCount.java" лежит в директории src/main/java/com/cloudera/sparkwordcount.

Jar файл создаём следующей командой:
mvn package

У ползьователя должны быть права на создания папок. Jar файл будет создан в директории target

Запуск самого приложения нужно осуществлять от пользователя, который имеет право на запись в hdfs директорию "/user/spark/data/":
spark-submit --class com.cloudera.sparkwordcount.SparkWordCount --master yarn target/sparkwordcount-0.0.1-SNAPSHOT.jar /user/spark/data/inputfile.txt 2

Коментарі

Популярні дописи з цього блогу

Минимальные требование для кластера Hadoop(with Spark)

Apache Spark Resource Management и модель приложений от YARN

Apache Spark - основные команды