最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spark集群框架的搭建與入門

 更新時間:2021年06月18日 11:27:05   作者:知了一笑  
Spark是專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的,基于內(nèi)存快速通用,可擴(kuò)展的集群計(jì)算引擎,實(shí)現(xiàn)了高效的DAG執(zhí)行引擎,可以通過基于內(nèi)存來高效處理數(shù)據(jù)流,運(yùn)算速度相比于MapReduce得到了顯著的提高。

一、Spark概述

運(yùn)行結(jié)構(gòu)

Driver

運(yùn)行Spark的Applicaion中main()函數(shù),會創(chuàng)建SparkContext,SparkContext負(fù)責(zé)和Cluster-Manager進(jìn)行通信,并負(fù)責(zé)申請資源、任務(wù)分配和監(jiān)控等。

ClusterManager

負(fù)責(zé)申請和管理在WorkerNode上運(yùn)行應(yīng)用所需的資源,可以高效地在一個計(jì)算節(jié)點(diǎn)到數(shù)千個計(jì)算節(jié)點(diǎn)之間伸縮計(jì)算,目前包括Spark原生的ClusterManager、ApacheMesos和HadoopYARN。

Executor

Application運(yùn)行在WorkerNode上的一個進(jìn)程,作為工作節(jié)點(diǎn)負(fù)責(zé)運(yùn)行Task任務(wù),并且負(fù)責(zé)將數(shù)據(jù)存在內(nèi)存或者磁盤上,每個 Application都有各自獨(dú)立的一批Executor,任務(wù)間相互獨(dú)立。

二、環(huán)境部署

1、Scala環(huán)境

安裝包管理

[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環(huán)境需要部署在Spark運(yùn)行的相關(guān)服務(wù)節(jié)點(diǎn)上。

2、Spark基礎(chǔ)環(huán)境

安裝包管理

[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

3、Spark集群配置

服務(wù)節(jié)點(diǎn)

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

hop01
hop02
hop03

環(huán)境配置

[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=安裝節(jié)點(diǎn)IP
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/opt/hadoop2.7/etc/hadoop

注意SPARK_LOCAL_IP的配置。

4、Spark啟動

依賴Hadoop相關(guān)環(huán)境,所以要先啟動。

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

這里在主節(jié)點(diǎn)會啟動兩個進(jìn)程:Master和Worker,其他節(jié)點(diǎn)只啟動一個Worker進(jìn)程。

5、訪問Spark集群

默認(rèn)端口是:8080。

http://hop01:8080/

運(yùn)行基礎(chǔ)案例:

[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

運(yùn)行結(jié)果:Pi is roughly 3.1455357276786384

三、開發(fā)案例

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、案例代碼開發(fā)

讀取指定位置的文件,并輸出文件內(nèi)容單詞統(tǒng)計(jì)結(jié)果。

@RestController
public class WordWeb implements Serializable {

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

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

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

        // 4、行內(nèi)容進(jìn)行切分
        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、切分的單詞進(jìn)行標(biāo)注
        JavaPairRDD wordAndOneRdd = wordsRdd.mapToPair(new PairFunction() {
            @Override
            public Tuple2 call(Object obj) throws Exception {
                //將單詞進(jìn)行標(biāo)記:
                return new Tuple2(String.valueOf(obj), 1);
            }
        });

        // 6、統(tǒng)計(jì)單詞出現(xiàn)次數(shù)
        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、結(jié)果打印
        for (Tuple2 tuple2 : finalResult) {
            System.out.println(tuple2._1 + " ===> " + tuple2._2);
        }

        // 9、保存統(tǒng)計(jì)結(jié)果
        sortedRdd.saveAsTextFile("/var/spark/output");
        sc.stop();
        return "success" ;
    }
}

打包執(zhí)行結(jié)果:

四、源代碼地址

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

以上就是Spark集群框架的搭建與入門的詳細(xì)內(nèi)容,更多關(guān)于Spark集群框架的搭建的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java通過控制鼠標(biāo)實(shí)現(xiàn)屏幕廣播的方法

    java通過控制鼠標(biāo)實(shí)現(xiàn)屏幕廣播的方法

    這篇文章主要介紹了java通過控制鼠標(biāo)實(shí)現(xiàn)屏幕廣播的方法,針對前面一篇Java屏幕共享功能進(jìn)行了改進(jìn),實(shí)現(xiàn)了鼠標(biāo)控制功能,具有一定的實(shí)用價值,需要的朋友可以參考下
    2014-12-12
  • Mybatis?在?insert?插入操作后返回主鍵?id的操作方法

    Mybatis?在?insert?插入操作后返回主鍵?id的操作方法

    這篇文章主要介紹了Mybatis?在?insert?插入操作后返回主鍵?id的操作方法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • 公共POI導(dǎo)出Excel方法詳解

    公共POI導(dǎo)出Excel方法詳解

    這篇文章主要介紹了公共POI導(dǎo)出Excel方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 微信小程序與Java后端接口交互

    微信小程序與Java后端接口交互

    本文主要介紹了微信小程序與Java后端接口交互,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java實(shí)現(xiàn)的打地鼠小游戲完整示例【附源碼下載】

    Java實(shí)現(xiàn)的打地鼠小游戲完整示例【附源碼下載】

    這篇文章主要介紹了Java實(shí)現(xiàn)的打地鼠小游戲,結(jié)合完整實(shí)例形式分析了Java多線程操作及鍵盤按鍵響應(yīng)實(shí)現(xiàn)的打地鼠游戲功能相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • java學(xué)習(xí)教程之常量折疊詳解

    java學(xué)習(xí)教程之常量折疊詳解

    這篇文章主要給大家介紹了關(guān)于java學(xué)習(xí)教程之常量折疊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • 詳解Java中Comparable和Comparator接口的區(qū)別

    詳解Java中Comparable和Comparator接口的區(qū)別

    這篇文章主要介紹了詳解Java中Comparable和Comparator接口的區(qū)別的相關(guān)資料,希望通過本文大家能徹底掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • 通過代碼實(shí)例了解SpringBoot啟動原理

    通過代碼實(shí)例了解SpringBoot啟動原理

    這篇文章主要介紹了通過代碼實(shí)例了解SpringBoot啟動原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • MyBatis實(shí)現(xiàn)自定義MyBatis插件的流程詳解

    MyBatis實(shí)現(xiàn)自定義MyBatis插件的流程詳解

    MyBatis的一個重要的特點(diǎn)就是插件機(jī)制,使得MyBatis的具備較強(qiáng)的擴(kuò)展性,我們可以根據(jù)MyBatis的插件機(jī)制實(shí)現(xiàn)自己的個性化業(yè)務(wù)需求,本文給大家介紹了MyBatis實(shí)現(xiàn)自定義MyBatis插件的流程,需要的朋友可以參考下
    2024-12-12
  • 學(xué)習(xí)Spring-Session+Redis實(shí)現(xiàn)session共享的方法

    學(xué)習(xí)Spring-Session+Redis實(shí)現(xiàn)session共享的方法

    本篇文章主要介紹了學(xué)習(xí)Spring-Session+Redis實(shí)現(xiàn)session共享的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評論

宁津县| 蒙阴县| 佛冈县| 灌云县| 陇南市| 丰镇市| 北碚区| 榆树市| 高阳县| 金乡县| 方山县| 蓝山县| 徐汇区| 阳江市| 双鸭山市| 奈曼旗| 迁安市| 江西省| 金沙县| 疏附县| 平舆县| 卢氏县| 咸丰县| 东兰县| 盐山县| 博爱县| 绥德县| 酉阳| 鞍山市| 赫章县| 丰镇市| 集贤县| 随州市| 南京市| 商河县| 贡觉县| 彰化县| 扶沟县| 信阳市| 松江区| 新干县|