spark集群框架的搭建与入门-mile米乐体育
行业资讯
2021年06月19日 06:22
4
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(); listfinalresult = 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集群框架的搭建的资料请关注趣讯吧其它相关文章!
展开全文