spark集群框架的搭建与入门-mile米乐体育

spark集群框架的搭建与入门

目录

    一、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

    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/

    运行基础案例:

     [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版本:

          org.apache.spark     spark-core_2.11     2.1.1 

    引入scala编译插件:

          net.alchim31.maven     scala-maven-plugin     3.2.2                                            compile                 testcompile                            

    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 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" ;     } }

    打包执行结果:

    四、源代码地址

    github·地址

    https://github.com/cicadasmile/big-data-parent

    gitee·地址

    https://gitee.com/cicadasmile/big-data-parent

    以上就是spark集群框架的搭建与入门的详细内容,更多关于spark集群框架的搭建的资料请关注趣讯吧其它相关文章!

    展开全文
    内容来源于互联网和用户投稿,文章中一旦含有米乐app官网登录的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系米乐app官网登录删除

    最新文章

    网站地图