【Spark学习】Apache Spark安全机制

Spark版本:1.1.1

本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接:

http://www.cnblogs.com/zhangningbo/p/4135808.html

目录


  • Web UI
  • 事件日志
  • 网络安全(配置端口)
  1. 仅适用于Standalone模式的端口
  2. 适用于所有集群管理器的通用端口


  现在,Spark支持通过共享秘钥进行认证。启用认证功能可以通过参数spark.authenticate来配置。此参数控制spark通信协议是否使用共享秘钥进行认证。这种认证方式基于握手机制,以确保通信双方都有相同的共享秘钥时才能通信。如果共享秘钥不一致,则双方将无法通信。可以通过以下过程来创建共享秘钥:

  • 在spark on YARN部署模式下,配置spark.authenticate为true,就可以自动产生并分发共享秘钥。每个应用程序都使用唯一的共享秘钥。
  • 其他部署方式下,应当在每个节点上都配置参数spark.authenticate.secret。此秘钥将由所有Master、worker及应用程序来使用。
  • 注意:实验性的Netty shuffle路径(spark.shuffle.use.netty)是不安全的,因此,如果启用认证功能就不要使用Netty for shuffle了。

Web UI



通过设置参数spark.ui.filters来使用javax servlet filters就可以实现安全的spark UI。如果用户有某些不该让其他人看到的数据,那么该用户就会要求UI也能有安全性。用户指定了Java servlet filter就可以进行认证了。接下来,一旦用户登录,spark就可以在ACL列表中查询该用户是否有权查看UI。配置参数spark.acls.enable和spark.ui.view.acls控制着ACL的行为。注意:启动应用程序的用户总是有权访问UI。在YARN上,spark UI使用标准的YARN web代理机制并通过已安装的Hadoop filters进行认证。

spark还支持通过修改ACL表来控制哪个用户有权修改正在运行着的spark应用程序。比如,kill一个应用程序或任务。这类操作是通过配置spark.acls.enable和spark.modify.acls来控制的。注意:如果你正在认证Web UI,那么,为了使用Web UI上的kill按钮,你就必须把用户添加到view acls表中。在YARN上,修改后的acls被传入并控制着哪个用户可以通过YARN接口来访问web UI。

如果有多个管理员存在,那么spark允许在acls中指定多个管理员,让他们总可以查看所有应用程序,以及修改应用的权限。这一功能是由配置参数spark.admin.acls来控制的。这在共享集群上是很有用的,因为这类集群中往往有多个管理员或者帮助用户调试程序的技术支持人员。

事件日志



如果应用程序正在使用事件日志记录功能,那么,应当手动创建用来存放事件日志的路径(spark.eventLog.dir),并赋予其合适的权限。如果你想让这些日志文件也是安全的,那么,该路径的权限应当设为drwxrwxrwxt。该路径的所有者应该是正在运行history server进程的那个超级用户,而且用户组权限应限制为超级用户组。这样做可以让所有用户都能对该路径执行写操作,但会阻止那些未经授权的用户删除或重命名文件,除非他们是该文件或者路径的所有者。事件日志文件由spark创建并赋予权限,比如只有所有者及其所在用户组有读写权限。

网络安全(配置端口)



spark大量使用网络,而且有些环境严格要求使用严密的防火墙设置。下面是spark用于通信的主要端口,以及如何配置这些端口。

仅适用于Standalone模式的端口

From To 默认端口 用途 配置 备注
Browser Standalone Master 8080 Web UI spark.master.ui.port / SPARK_MASTER_WEBUI_PORT Jetty-based,仅用于Standalone模式
Browser Standalone Worker 8081 Web UI spark.worker.ui.port / SPARK_WORKER_WEBUI_PORT Jetty-based,仅用于Standalone模式
Driver / Standalone Worker Standalone Master 7077 向集群提交作业(Submit) SPARK_MASTER_PORT Akka-based。设为0意思是随机选择端口,仅用于Standalone模式
Standalone Master Standalone Worker random 调度executors SPARK_WORKER_PORT Akka-based。设为0意思是随机选择端口,仅用于Standalone模式

适用于所有集群管理器的通用端口

From To 默认端口 用途 配置 备注
Browser Application 4040 Web UI spark.ui.port Jetty-based
Browser History Server 18080 Web UI spark.history.ui.port Jetty-based
Executor / Standalone Master Driver random 连接到Application,或通知executor状态变化 spark.driver.port Akka-based。设为0意思是随机选择端口
Driver Executor random 调度任务task spark.executor.port Akka-based。设为0意思是随机选择端口
Executor Driver random files和jars文件服务器 spark.fileserver.port Jetty-based
Executor Driver random HTTP广播 spark.broadcast.port Jetty-based,TorrentBroadcast不使用该端口,它通过block manager发送数据
Executor Driver random 类(class)文件服务器 spark.replClassServer.port Jetty-based,仅用于spark shell
Executor / Driver Executor / Driver random Block Manager端口 spark.blockManager.port Raw socket via ServerSocketChannel

有关安全的配置参数详见配置页面,安全机制的实现参考 org.apache.spark.SecurityManager

时间: 2024-10-07 06:08:45

【Spark学习】Apache Spark安全机制的相关文章

【Spark学习】Spark 1.1.0 with CDH5.2 安装部署

[时间]2014年11月18日 [平台]Centos 6.5 [工具]scp [软件]jdk-7u67-linux-x64.rpm spark-worker-1.1.0+cdh5.2.0+56-1.cdh5.2.0.p0.35.el6.noarch.rpm spark-core-1.1.0+cdh5.2.0+56-1.cdh5.2.0.p0.35.el6.noarch.rpm spark-history-server-1.1.0+cdh5.2.0+56-1.cdh5.2.0.p0.35.el6.

Spark学习之Spark安装

Spark安装 spark运行环境 spark是Scala写的,运行在jvm上,运行环境为java7+ 如果使用Python的API ,需要使用Python2.6+或者Python3.4+ Spark1.6.2  -  Scala 2.10    Spark 2.0.0  -  Scala  2.11 Spark下载 下载地址:http://spark.apache.org/downloads.html 搭建spark,不需要Hadoop,如有Hadoop集群,可下载对应版本解压 Spark目录

Spark学习(一) Spark初识

一.官网介绍 1.什么是Spark 官网地址:http://spark.apache.org/ Apache Spark™是用于大规模数据处理的统一分析引擎. 从右侧最后一条新闻看,Spark也用于AI人工智能 spark是一个实现快速通用的集群计算平台.它是由加州大学伯克利分校AMP实验室 开发的通用内存并行计算框架,用来构建大型的.低延迟的数据分析应用程序.它扩展了广泛使用的MapReduce计算 模型.高效的支撑更多计算模式,包括交互式查询和流处理.spark的一个主要特点是能够在内存中进

Spark学习9 Spark Streaming流式数据处理组件学习

目录 SparkStreaming相关概念 概述 SparkStreaming的基本数据抽象DStream 处理模式 操作流程中细节 StreamingContext StreamingContext对象的创建 StreamingContext主要用法 输入源 DStream两种转化 无状态转化操作 有状态转化操作 输出操作 实践(最简单的wordCount) 创建StreamingContext对象 创建DStream对象 对DStream对象操纵 SparkStreaming相关概念 概述

Spark学习笔记——Spark Streaming

许多应用需要即时处理收到的数据,例如用来实时追踪页面访问统计的应用.训练机器学习模型的应用, 还有自动检测异常的应用.Spark Streaming 是 Spark 为这些应用而设计的模型.它允许用户使用一套和批处理非常接近的 API 来编写流式计算应用,这样就可以大量重用批处理应用的技术甚至代码. Spark Streaming 使用离散化流( discretized stream)作为抽象表示, 叫作 DStream. DStream 是随时间推移而收到的数据的序列.在内部,每个时间区间收到

Spark学习笔记-Spark Streaming

http://spark.apache.org/docs/1.2.1/streaming-programming-guide.html 在SparkStreaming中如何对数据进行分片 Level of Parallelism in Data Processing Cluster resources can be under-utilized if the number of parallel tasks used in any stage of the computation is not

spark学习笔记-spark集群搭建(7)

安装spark包 1 1.将spark-1.3.0-bin-hadoop2.4.tgz使用WinSCP上传到/usr/local目录下. 2 2.解压缩spark包:tar zxvf spark-1.3.0-bin-hadoop2.4.tgz. 3 3.更改spark目录名:mv spark-1.3.0-bin-hadoop2.4 spark 4 4.设置spark环境变量 5 vi .bashrc 6 export SPARK_HOME=/usr/local/spark 7 export PA

Spark学习笔记——Spark上数据的获取、处理和准备

数据获得的方式多种多样,常用的公开数据集包括: 1.UCL机器学习知识库:包括近300个不同大小和类型的数据集,可用于分类.回归.聚类和推荐系统任务.数据集列表位于:http://archive.ics.uci.edu/ml/ 2.Amazon AWS公开数据集:包含的通常是大型数据集,可通过Amazon S3访问.这些数据集包括人类基因组项目.Common Crawl网页语料库.维基百科数据和Google Books Ngrams.相关信息可参见:http://aws.amazon.com/p

Spark学习摘记 —— Spark转化操作API归纳

本文参考 在阅读了<Spark快速大数据分析>动物书后,大概了解到了spark常用的api,不过书中并没有给予所有api详细的案例,而且现在spark的最新版本已经上升到了2.4.5,动物书中的spark版本还停留在1.2.0版本,所以就有了这篇文章,在最新的2.4.5版本下测试常用的api 由于spark的惰性计算特性,RDD只有在第一次行动操作中被用到时才会真正进行计算,因此我打算将文章内容分为"转化操作API"和"行动操作API"两部分,同时因为p

使用Apache Spark 对 mysql 调优 查询速度提升10倍以上

在这篇文章中我们将讨论如何利用 Apache Spark 来提升 MySQL 的查询性能. 介绍 在我的前一篇文章Apache Spark with MySQL 中介绍了如何利用 Apache Spark 实现数据分析以及如何对大量存放于文本文件的数据进行转换和分析.瓦迪姆还做了一个基准测试用来比较 MySQL 和 Spark with Parquet 柱状格式 (使用空中交通性能数据) 二者的性能. 这个测试非常棒,但如果我们不希望将数据从 MySQL 移到其他的存储系统中,而是继续在已有的