众筹网站怎么做推广方案,重庆广告公司网站建设,系统平台,谷歌seo关键词排名优化文章目录 前言技术积累Spark简介Spark核心功能及优势Spark运行架构 Spark独立集群搭建安装docker和docker-composedocker-compose编排docker-compose编排并运行容器 Spark集群官方案例测试写在最后 前言
很多同学都使用过经典的大数据分布式计算框架hadoop#xff0c;其分布式… 文章目录 前言技术积累Spark简介Spark核心功能及优势Spark运行架构 Spark独立集群搭建安装docker和docker-composedocker-compose编排docker-compose编排并运行容器 Spark集群官方案例测试写在最后 前言
很多同学都使用过经典的大数据分布式计算框架hadoop其分布式文件系统HDFS对数据管理很友好但是计算能力较Spark还是不足。俗话说工欲善其事必先利其器今天就介绍docker容器化部署Spark集群。
技术积累
Spark简介
Spark 是一种与 Hadoop 相似的开源集群计算环境但是两者之间还存在一些不同之处Spark 启用了内存分布数据集除了能够提供交互式查询外它还可以优化迭代工作负载。对于分布式计算方面Spark基于内存进行分布式计算大大提升性能。
Spark核心功能及优势
更快的速度 内存计算下Spark 比 Hadoop 快100倍。 易用性 Spark 提供了80多个高级运算符。 通用性 Spark 提供了大量的库包括Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX。 开发者可以在同一个应用程序中无缝组合使用这些库。 支持多种资源管理器 Spark 支持 Hadoop YARNApache Mesos及其自带的独立集群管理器
Spark运行架构
Spark框架的核心是一个计算引擎整体来说它采用了标准的master-slave的结构 图所示展示了一个Spark执行时的基本架构图中的Driver表示master负责管理整个集群中的作业任务调度。图中的Executor则是slave负责实际执行任务。
用户程序创建 SparkContext 后它会连接到集群资源管理器集群资源管理器会为用户程序分配计算资源并启动 Executor Driver 将计算程序划分为不同的执行阶段和多个 Task之后将 Task 发送给 Executor Executor 负责执行 Task并将执行状态汇报给 Driver同时也会将当前节点资源的使用情况汇报给集群资源管理器。
Spark独立集群搭建
安装docker和docker-compose
docker与docker-compose安装
#安装docker社区版
yum install docker-ce
#版本查看
docker version
#docker-compose插件安装
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
#可执行权限
chmod x /usr/local/bin/docker-compose
#版本查看
docker-compose versiondocker-compose编排
docker-compose-spark.yaml
version: 3.3
services:master:image: registry.cn-hangzhou.aliyuncs.com/senfel/spark:3.2.1container_name: masteruser: rootcommand: /opt/bitnami/java/bin/java -cp /opt/bitnami/spark/conf/:/opt/bitnami/spark/jars/* -Xmx1g org.apache.spark.deploy.master.Master --host master --port 7077 --webui-port 8080 environment:- SPARK_MODEmaster- SPARK_RPC_AUTHENTICATION_ENABLEDno- SPARK_RPC_ENCRYPTION_ENABLEDno- SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLEDno- SPARK_SSL_ENABLEDnovolumes:- ./python:/pythonnetwork_mode: hostextra_hosts:- master:10.10.22.91- localhost.localdomain:127.0.0.1worker1:image: registry.cn-hangzhou.aliyuncs.com/senfel/spark:3.2.1container_name: worker1user: rootenvironment:- SPARK_MODEworker- SPARK_MASTER_URLspark://master:7077- SPARK_WORKER_MEMORY1G- SPARK_WORKER_CORES1- SPARK_RPC_AUTHENTICATION_ENABLEDno- SPARK_RPC_ENCRYPTION_ENABLEDno- SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLEDno- SPARK_SSL_ENABLEDnonetwork_mode: hostextra_hosts:- master:10.10.22.91- localhost.localdomain:127.0.0.1worker2:image: registry.cn-hangzhou.aliyuncs.com/senfel/spark:3.2.1container_name: worker2user: rootenvironment:- SPARK_MODEworker- SPARK_MASTER_URLspark://master:7077- SPARK_WORKER_MEMORY1G- SPARK_WORKER_CORES1- SPARK_RPC_AUTHENTICATION_ENABLEDno- SPARK_RPC_ENCRYPTION_ENABLEDno- SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLEDno- SPARK_SSL_ENABLEDnonetwork_mode: hostextra_hosts:- master:10.10.22.91- localhost.localdomain:127.0.0.1docker-compose编排并运行容器
docker-compose -f docker-compose-spark.yaml up -d
浏览器访问 http://10.10.22.91:8080/
至此Spark独立集群搭建完成。 当然如果需要整合HDFS可以直接搭建一个Hadoop集群。这里不再累述请参照之前的博文。
Spark集群官方案例测试
1、任意选择一个节点执行圆周率计算这里选择master #查看spark master容器信息 docker ps | grep master #进入容器 默认就会进入/opt/bitnami/spark docker exec -it master bash #执行官方计算圆周率的案例 ./bin/spark-submit --master spark://master:7077 --class org.apache.spark.examples.SparkPi ./examples/jars/spark-examples_2.12-3.2.1.jar 1000
参数 –master 提交集群 –class 运行主类路径 1000 运行1000次
2、查看执行结果 Pi is roughly 3.141485671414857 计算次数越多这个圆周率精度越准确
写在最后
Spark是采用分布式数据集RDD对数据进行管理用内存进行分布式计算它的性能叫hadoop有显著的提升。对于Spark独立集群的搭建我们用docker容器也是比较的简单当然我们也可以集成在springboot开发出适应业务的功能安装需求进行远程提交任务。