91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spark集群搭建步驟

發布時間:2021-07-05 18:19:22 來源:億速云 閱讀:1298 作者:chen 欄目:大數據

這篇文章主要介紹“Spark集群搭建步驟”,在日常操作中,相信很多人在Spark集群搭建步驟問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Spark集群搭建步驟”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、Spark概述

1、Spark簡介

Spark是專為大規模數據處理而設計的,基于內存快速通用,可擴展的集群計算引擎,實現了高效的DAG執行引擎,可以通過基于內存來高效處理數據流,運算速度相比于MapReduce得到了顯著的提高。

2、運行結構

Spark集群搭建步驟

Driver

運行Spark的Applicaion中main()函數,會創建SparkContext,SparkContext負責和Cluster-Manager進行通信,并負責申請資源、任務分配和監控等。

ClusterManager

負責申請和管理在WorkerNode上運行應用所需的資源,可以高效地在一個計算節點到數千個計算節點之間伸縮計算,目前包括Spark原生的ClusterManager、ApacheMesos和HadoopYARN。

Executor

Application運行在WorkerNode上的一個進程,作為工作節點負責運行Task任務,并且負責將數據存在內存或者磁盤上,每個 Application都有各自獨立的一批Executor,任務間相互獨立。

二、環境部署

1、Scala環境

安裝包管理

[root@hop01 opt]# tar -zxvf scala-2.12.2.tgz
[root@hop01 opt]# mv scala-2.12.2 scala2.12

配置變量

[root@hop01 opt]# vim /etc/profile

export SCALA_HOME=/opt/scala2.12
export PATH=$PATH:$SCALA_HOME/bin

[root@hop01 opt]# source /etc/profile

版本查看

[root@hop01 opt]# scala -version

Scala環境需要部署在Spark運行的相關服務節點上。

2、Spark基礎環境

安裝包管理

[root@hop01 opt]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz
[root@hop01 opt]# mv spark-2.1.1-bin-hadoop2.7 spark2.1

配置變量

[root@hop01 opt]# vim /etc/profile

export SPARK_HOME=/opt/spark2.1
export PATH=$PATH:$SPARK_HOME/bin

[root@hop01 opt]# source /etc/profile

版本查看

[root@hop01 opt]# spark-shell

Spark集群搭建步驟

3、Spark集群配置

服務節點

[root@hop01 opt]# cd /opt/spark2.1/conf/
[root@hop01 conf]# cp slaves.template slaves
[root@hop01 conf]# vim slaves

hop01
hop02
hop03

環境配置

[root@hop01 conf]# cp spark-env.sh.template spark-env.sh
[root@hop01 conf]# vim spark-env.sh

export JAVA_HOME=/opt/jdk1.8
export SCALA_HOME=/opt/scala2.12
export SPARK_MASTER_IP=hop01
export SPARK_LOCAL_IP=安裝節點IP
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/opt/hadoop2.7/etc/hadoop

注意SPARK_LOCAL_IP的配置。

4、Spark啟動

依賴Hadoop相關環境,所以要先啟動。

啟動:/opt/spark2.1/sbin/start-all.sh
停止:/opt/spark2.1/sbin/stop-all.sh

這里在主節點會啟動兩個進程:Master和Worker,其他節點只啟動一個Worker進程。

5、訪問Spark集群

默認端口是:8080。

http://hop01:8080/

Spark集群搭建步驟

運行基礎案例:

[root@hop01 spark2.1]# cd /opt/spark2.1/
[root@hop01 spark2.1]# bin/spark-submit --class org.apache.spark.examples.SparkPi --master local examples/jars/spark-examples_2.11-2.1.1.jar

運行結果:Pi is roughly 3.1455357276786384

三、開發案例

1、核心依賴

依賴Spark2.1.1版本:

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.1.1</version>
</dependency>

引入Scala編譯插件:

<plugin>
    <groupId>net.alchim31.maven</groupId>
    <artifactId>scala-maven-plugin</artifactId>
    <version>3.2.2</version>
    <executions>
        <execution>
            <goals>
                <goal>compile</goal>
                <goal>testCompile</goal>
            </goals>
        </execution>
    </executions>
</plugin>

2、案例代碼開發

讀取指定位置的文件,并輸出文件內容單詞統計結果。

@RestController
public class WordWeb implements Serializable {

    @GetMapping("/word/web")
    public String getWeb (){
        // 1、創建Spark的配置對象
        SparkConf sparkConf = new SparkConf().setAppName("LocalCount")
                                             .setMaster("local[*]");

        // 2、創建SparkContext對象
        JavaSparkContext sc = new JavaSparkContext(sparkConf);
        sc.setLogLevel("WARN");

        // 3、讀取測試文件
        JavaRDD lineRdd = sc.textFile("/var/spark/test/word.txt");

        // 4、行內容進行切分
        JavaRDD wordsRdd = lineRdd.flatMap(new FlatMapFunction() {
            @Override
            public Iterator call(Object obj) throws Exception {
                String value = String.valueOf(obj);
                String[] words = value.split(",");
                return Arrays.asList(words).iterator();
            }
        });

        // 5、切分的單詞進行標注
        JavaPairRDD wordAndOneRdd = wordsRdd.mapToPair(new PairFunction() {
            @Override
            public Tuple2 call(Object obj) throws Exception {
                //將單詞進行標記:
                return new Tuple2(String.valueOf(obj), 1);
            }
        });

        // 6、統計單詞出現次數
        JavaPairRDD wordAndCountRdd = wordAndOneRdd.reduceByKey(new Function2() {
            @Override
            public Object call(Object obj1, Object obj2) throws Exception {
                return Integer.parseInt(obj1.toString()) + Integer.parseInt(obj2.toString());
            }
        });

        // 7、排序
        JavaPairRDD sortedRdd = wordAndCountRdd.sortByKey();
        List<Tuple2> finalResult = sortedRdd.collect();

        // 8、結果打印
        for (Tuple2 tuple2 : finalResult) {
            System.out.println(tuple2._1 + " ===> " + tuple2._2);
        }

        // 9、保存統計結果
        sortedRdd.saveAsTextFile("/var/spark/output");
        sc.stop();
        return "success" ;
    }
}

打包執行結果:

Spark集群搭建步驟

查看文件輸出:

[root@hop01 output]# vim /var/spark/output/part-00000

四、源代碼地址

GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent

到此,關于“Spark集群搭建步驟”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

子长县| 电白县| 邻水| 东城区| 长丰县| 新干县| 亚东县| 垫江县| 钦州市| 望江县| 洛扎县| 丽江市| 泰来县| 涿州市| 潮州市| 沙湾县| 福安市| 峨山| 景德镇市| 盐津县| 灯塔市| 新乡县| 札达县| 峨边| 衢州市| 公安县| 布尔津县| 阳泉市| 青浦区| 姜堰市| 广德县| 江山市| 淮北市| 北辰区| 南郑县| 汝城县| 九江县| 玉田县| 南木林县| 公安县| 乌兰县|