ビッグデータ-Sparkタスクの実行

Sparkタスクの実行

Spark-submit

(1)conf / slaves設定ファイルを変更します
hadoop1

(2)火花の疑似分散クラスターを開始する

./sbin/start-all.sh

(3)Spark送信サブミットタスク(例としてモンテカルロを使用してpiを計算する)

spark-submit --master spark://hadoop1:7077 --class org.apache.spark.examples.SparkPi /usr/local/spark/spark-2.1.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.0.jar 100

(4)Spark-Submitの操作結果

ここに画像の説明を挿入
ここに画像の説明を挿入

スパークシェル

ローカルモード

(1)conf / slaves設定ファイルを変更します
hadoop1

(2)火花の疑似分散クラスターを開始する

./sbin/start-all.sh

(3)スパークシェルを開始する

spark-shell

(4)タスクの送信

sc.textFile("spark_workCount.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

ここに画像の説明を挿入

クラスターモード

(1)conf / slaves設定ファイルを変更します
hadoop1

(2)火花の疑似分散クラスターを開始する

./sbin/start-all.sh

(3)スパークシェルを開始する

spark-shell --master spark://hadoop1:7077

(4)hdfsは/ spark / tmpフォルダーを作成します

hdfs dfs -mkdir -p /spark/tmp

(5)hdfsはspark_workCount.txtファイルをアップロードします

hdfs dfs -put spark_workCount.txt /spark/tmp

(6)タスクの送信

sc.textFile("hdfs://hadoop1:9000/spark/tmp/spark_workCount.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://hadoop1:9000/spark/output")

ここに画像の説明を挿入
ここに画像の説明を挿入

Spark的WordCount

Scalaローカルモード

(1)jarパッケージをIDEAプロジェクトのリソースの下のjarsフォルダーに配置します

注:Scalaのバージョンをjarパッケージのバージョンと一致させてください

ここに画像の説明を挿入
(2)スパークシェルを開始する

./sbin/start-all.sh
spark-shell

(3)ローカルモードで実行されているWorkCount

package spark

import org.apache.spark.{SparkConf, SparkContext}

object WordCount {
  def main(args: Array[String]): Unit = {
    //创建一个spark的配置文件
    val conf = new SparkConf().setAppName("Scala WorkCount").setMaster("local")
    //实例化SparkContext对象
    val sc = new SparkContext(conf)

    //本地模式
    val result = sc.textFile("hdfs://192.168.138.130:9000/spark/tmp/spark_workCount.txt")
      .flatMap(_.split(" "))
      .map((_,1))
      .reduceByKey(_+_)

    //输出结果
    result.foreach(println)
  }
}

ここに画像の説明を挿入

Scalaクラスターモード

(1)Scalaコードを書く
import org.apache.spark.{SparkConf, SparkContext}

object WorkCount {
  def main(args: Array[String]): Unit = {
    //创建一个spark的配置文件
    val conf = new SparkConf().setAppName("Scala WorkCount")
    //实例化SparkContext对象
    val sc = new SparkContext(conf)

    //集群模式
    val result = sc.textFile(args(0))
      .flatMap(_.split(" "))
      .map((_,1))
      .reduceByKey(_+_)
      .saveAsTextFile(args(1));

    //关闭
    sc.stop();
  }
}

(2)コードをjarパッケージに入れてLinuxに置きます

ここに画像の説明を挿入
(3)スパークを実行

./sbin/start-all.sh

(4)タスクの送信

./sbin/start-all.sh
spark-submit --master spark://hadoop1:7077 --class spark.WordCount /root/Spark-1.0-SNAPSHOT.jar hdfs://192.168.138.130:9000/spark/tmp/spark_workCount.txt hdfs://192.168.138.130:9000/spark/wordcount

ここに画像の説明を挿入
ここに画像の説明を挿入

Javaネイティブモード

(1)jarパッケージをIDEAプロジェクトのリソースの下のjarsフォルダーに配置します

注:Scalaのバージョンをjarパッケージのバージョンと一致させてください

ここに画像の説明を挿入
(2)スパークシェルを開始する

./sbin/start-all.sh
spark-shell

(3)ローカルモードで実行されているWorkCount

package com.spark.util;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import scala.Tuple2;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * Spark WordCount
 * 
 * @author Jabin
 * @version 1.00 2019/
 */
public class WordCount {
    public static void main(String[] args) {
        //创建Spark配置
        SparkConf conf = new SparkConf().setAppName("Spark.WordCount").setMaster("local");
        //加载Spark配置
        JavaSparkContext sc = new JavaSparkContext(conf);
        //本地模式
        JavaRDD<String> textFile = sc.textFile("hdfs://192.168.138.130:9000/spark/tmp/spark_workCount.txt");

        JavaRDD<String> flatMap = textFile.flatMap(new FlatMapFunction<String, String>() {
            public Iterator<String> call(String s) {
                return Arrays.asList(s.split(" ")).iterator();
            }
        });

        JavaPairRDD<String, Integer> map = flatMap.mapToPair(new PairFunction<String, String, Integer>() {
            public Tuple2<String, Integer> call(String s) {
                return new Tuple2<String, Integer>(s, 1);
            }
        });

        JavaPairRDD<String, Integer> reduce = map.reduceByKey(new Function2<Integer, Integer, Integer>() {
            public Integer call(Integer a, Integer b) {
                return a + b;
            }
        });

        List<Tuple2<String, Integer>> list = reduce.collect();

        for (Tuple2<String, Integer> tuple: list){
            System.out.println(tuple._1+" : "+tuple._2);
        }
    }
}

ここに画像の説明を挿入

Sparkのタスクスケジューリングアーキテクチャ図

ここに画像の説明を挿入

131件の元の記事を公開 12 件を獲得 60,000回の閲覧+

おすすめ

転載: blog.csdn.net/JavaDestiny/article/details/94493861