【Spark学习】Apache Spark安全机制
Spark版本:1.1.1
本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接:
http://www.cnblogs.com/zhangningbo/p/4135808.html
目录
- Web UI
- 事件日志
- 网络安全(配置端口)
- 仅适用于Standalone模式的端口
- 适用于所有集群管理器的通用端口
现在,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。
【Spark学习】Apache Spark安全机制的更多相关文章
- Spark学习之Spark Streaming(9)
Spark学习之Spark Streaming(9) 1. Spark Streaming允许用户使用一套和批处理非常接近的API来编写流式计算应用,这就可以大量重用批处理应用的技术甚至代码. 2. ...
- Spark学习之Spark SQL(8)
Spark学习之Spark SQL(8) 1. Spark用来操作结构化和半结构化数据的接口--Spark SQL. 2. Spark SQL的三大功能 2.1 Spark SQL可以从各种结构化数据 ...
- Spark学习之Spark调优与调试(7)
Spark学习之Spark调优与调试(7) 1. 对Spark进行调优与调试通常需要修改Spark应用运行时配置的选项. 当创建一个SparkContext时就会创建一个SparkConf实例. 2. ...
- Spark学习之Spark SQL
一.简介 Spark SQL 提供了以下三大功能. (1) Spark SQL 可以从各种结构化数据源(例如 JSON.Hive.Parquet 等)中读取数据. (2) Spark SQL 不仅支持 ...
- Spark学习一:Spark概述
1.1 什么是Spark Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎. 一站式管理大数据的所有场景(批处理,流处理,sql) 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.c ...
- Spark学习之Spark Streaming
一.简介 许多应用需要即时处理收到的数据,例如用来实时追踪页面访问统计的应用.训练机器学习模型的应用,还有自动检测异常的应用.Spark Streaming 是 Spark 为这些应用而设计的模型.它 ...
- Spark学习之Spark调优与调试(一)
一.使用SparkConf配置Spark 对 Spark 进行性能调优,通常就是修改 Spark 应用的运行时配置选项.Spark 中最主要的配置机制是通过 SparkConf 类对 Spark 进行 ...
- Spark学习(4) Spark Streaming
什么是Spark Streaming Spark Streaming类似于Apache Storm,用于流式数据的处理 Spark Streaming有高吞吐量和容错能力强等特点.Spark Stre ...
- Spark学习之Spark调优与调试(二)
下面来看看更复杂的情况,比如,当调度器进行流水线执行(pipelining),或把多个 RDD 合并到一个步骤中时.当RDD 不需要混洗数据就可以从父节点计算出来时,调度器就会自动进行流水线执行.上一 ...
随机推荐
- Maven的Dependency怎么找?
用了Maven,所需的JAR包就不能再像往常一样,自己找到并下载下来,用IDE导进去就完事了,Maven用了一个项目依赖(Dependency)的概念,用俗话说,就是我的项目需要用你这个jar包,就称 ...
- codeforces #309 div1 B
题目啰里啰嗦说了一大堆(耐心读完题目就可以秒题了) 首先我们考虑当前置换的开头的循环节的开头 1.如果是1 1->1形成循环节 问题变成i-1的子问题 2.如果是2 1->2->1形 ...
- 使用JavaMail发送邮件和接受邮件
转载:http://blog.csdn.net/zdp072/article/details/30977213 一. 为什么要学习JavaMail 为什么要学习JavaMail开发? 现在很多WEB应 ...
- Linux下Nginx+Tomcat整合的安装与配置
因为nginx处理静态页面的速度很快,并且是免费的,它还可以配置负载均衡的服务器集群来搭建多个tomcat,所以nginx+tomcat是企业搭 建javaee项目很好的选择.nginx主要是通过反向 ...
- 钣金的折弯成型工艺(Press Braking)
钣金的折弯成型:金属板材的弯曲和成型是在弯板机上进行的,将要成型的板材放置在弯板机上,用升降杠杆将制动片提起,工件滑动到适当的位置,然后将制动片降低到要成型的板材上,通过对弯板机上的弯曲杠杆施力而实现 ...
- Django Navi 重用
代码来自这里: base.html <html> <head>...</head> <body> ... {% block nav %} <ul ...
- R语言笔记:快速入门
1.简单会话 > x<-c(1,2,4) > x [1] 1 2 4 R语言的标准赋值运算符是<-.也可以用=,不过不建议用它,有些情况会失灵.其中c表示连接(concaten ...
- c#自带压缩类实现数据库表导出到CSV压缩文件的方法
在导出大量CSV数据的时候,常常体积较大,采用C#自带的压缩类,可以方便的实现该功能,并且压缩比例很高,该方法在我的开源工具DataPie中已经经过实践检验.我的上一篇博客<功能齐全.效率一流的 ...
- redolog 大小的实验
前言:近日因工作需要,测试postgresql和MySQL在oltp对比测试,因结果差异太多(MySQL测试结果比较差,相同环境),寻求大神帮助,有幸得叶大师和姜大师指点,指出my.cnf配置文件in ...
- 1414. Astronomical Database(STL)
1414 破题 又逼着用stl 卡内存 trie树太耗了 水不过去 用set存字符串 set可以自己按一定顺序存 且没有重复的 再用lower_bound二分查找字符串的第一次出现 接着往后找就行了 ...