Hadoop-2.2.0中文文档—— MapReduce 下一代 - Encrypted Shuffle
简单介绍
Encrypted Shuffle capability (加密洗牌功能?
)同意用HTTPS 和 可选的client验证 (也称作双向的 HTTPS, 或有client证书的 HTTPS) 去加密 MapReduce shuffle.它包含:
- 在HTTP 和 HTTPS 之间绑定 shuffle 的一个 Hadoop 配置
- 用来指定 keystore 和 truststore 属性的Hadoop配置(位置,类型,password) 用于 shuffle 服务和reducer任务去取 shuffle 数据。
- 在集群中交叉重载 truststores (当一个节点增加或删除时).
配置
core-site.xml 属性
要同意加密shuffle, 在 core-site.xml 中对集群中的全部节点设置以下的属性:
| 属性 | 默认值 | 说明 |
hadoop.ssl.require.client.cert |
false |
client证书是否须要 |
hadoop.ssl.hostname.verifier |
DEFAULT |
提供给HttpsURLConnections的主机名验证器. 合法的值是: DEFAULT, STRICT, STRICT_I6, DEFAULT_AND_LOCALHOST 和ALLOW_ALL |
hadoop.ssl.keystores.factory.class |
org.apache.hadoop.security.ssl.FileBasedKeyStoresFactory |
要用的KeyStoresFactory实现 |
hadoop.ssl.server.conf |
ss-server.xml |
要抽取keystore信息的 sslserver中的文件。 这个文件要在classpath中查找, 一般应该在 Hadoop conf/ 文件夹中。 |
hadoop.ssl.client.conf |
ss-client.xml |
要抽取keystore信息的 sslserver中的文件。
这个文件要在classpath中查找, 一般应该在 Hadoop conf/ 文件夹中。 |
重要: 当前须要把client证书设置为false。參考 Client
Certificates 一节以获得细节内容。
重要:在集群配置文件里的全部属性应该标记为 final。
演示样例 :
...
<property>
<name>hadoop.ssl.require.client.cert</name>
<value>false</value>
<final>true</final>
</property> <property>
<name>hadoop.ssl.hostname.verifier</name>
<value>DEFAULT</value>
<final>true</final>
</property> <property>
<name>hadoop.ssl.keystores.factory.class</name>
<value>org.apache.hadoop.security.ssl.FileBasedKeyStoresFactory</value>
<final>true</final>
</property> <property>
<name>hadoop.ssl.server.conf</name>
<value>ssl-server.xml</value>
<final>true</final>
</property> <property>
<name>hadoop.ssl.client.conf</name>
<value>ssl-client.xml</value>
<final>true</final>
</property>
...
mapred-site.xml 属性
要同意加密shuffle, 在 mapred-site.xml 中对集群中的全部节点设置以下的属性:
| 属性 | 默认值 | 说明 |
mapreduce.shuffle.ssl.enabled |
false |
加密 shuffle同意与否 |
重要: 在集群配置文件里的这个属性应该标记为 final。
演示样例 :
...
<property>
<name>mapreduce.shuffle.ssl.enabled</name>
<value>true</value>
<final>true</final>
</property>
...
Linux 容器运行器应该设置为阻止作业任务读取server的keystore信息,以及获得shuffleserver证书。
參考 Hadoop Kerberos 配置,以获得此处怎样做的细节。
Keystore 和 Truststore 的设置
当前 FileBasedKeyStoresFactory 是 KeyStoresFactory 的唯一实现.
FileBasedKeyStoresFactory 实现用了以下的属性, 在 ssl-server.xml 和 ssl-client.xml 文件里,用来配置
keystores 和 truststores.
ssl-server.xml (Shuffle server) 的配置:
mapred 用户应该拥有ssl-server.xml文件并有唯一地訪问权。
| 属性 | 默认值 | 说明 |
ssl.server.keystore.type |
jks |
Keystore 文件类型 |
ssl.server.keystore.location |
NONE |
Keystore 文件的位置. mapred 用户应该拥有此文件并有唯一地訪问权。 |
ssl.server.keystore.password |
NONE | Keystore 文件password |
ssl.server.truststore.type |
jks |
Truststore 文件类型 |
ssl.server.truststore.location |
NONE |
Truststore 文件的位置. mapred 用户应该拥有此文件并有唯一地訪问权。 |
ssl.server.truststore.password |
NONE | Truststore 文件password |
ssl.server.truststore.reload.interval |
10000 | Truststore 重载间距, 毫秒值 |
演示样例:
<configuration> <!-- Server Certificate Store -->
<property>
<name>ssl.server.keystore.type</name>
<value>jks</value>
</property>
<property>
<name>ssl.server.keystore.location</name>
<value>${user.home}/keystores/server-keystore.jks</value>
</property>
<property>
<name>ssl.server.keystore.password</name>
<value>serverfoo</value>
</property> <!-- Server Trust Store -->
<property>
<name>ssl.server.truststore.type</name>
<value>jks</value>
</property>
<property>
<name>ssl.server.truststore.location</name>
<value>${user.home}/keystores/truststore.jks</value>
</property>
<property>
<name>ssl.server.truststore.password</name>
<value>clientserverbar</value>
</property>
<property>
<name>ssl.server.truststore.reload.interval</name>
<value>10000</value>
</property>
</configuration>
ssl-client.xml (Reducer/Fetcher) 的配置:
mapred 用户应该拥有ssl-server.xml文件并它应该有默认的权限。
| 属性 | 默认值 | 说明 |
ssl.client.keystore.type |
jks |
Keystore 文件类型 |
ssl.client.keystore.location |
NONE |
Keystore 文件的位置. mapred 用户应该拥有此文件并有唯一地訪问权。 |
ssl.client.keystore.password |
NONE | Keystore 文件password |
ssl.client.truststore.type |
jks |
Truststore 文件类型 |
ssl.client.truststore.location |
NONE |
Truststore 文件的位置. mapred 用户应该拥有此文件并有唯一地訪问权。 |
ssl.client.truststore.password |
NONE | Truststore 文件password |
ssl.client.truststore.reload.interval |
10000 |
Truststore 重载间距, 毫秒值 |
演示样例 :
<configuration> <!-- Client certificate Store -->
<property>
<name>ssl.client.keystore.type</name>
<value>jks</value>
</property>
<property>
<name>ssl.client.keystore.location</name>
<value>${user.home}/keystores/client-keystore.jks</value>
</property>
<property>
<name>ssl.client.keystore.password</name>
<value>clientfoo</value>
</property> <!-- Client Trust Store -->
<property>
<name>ssl.client.truststore.type</name>
<value>jks</value>
</property>
<property>
<name>ssl.client.truststore.location</name>
<value>${user.home}/keystores/truststore.jks</value>
</property>
<property>
<name>ssl.client.truststore.password</name>
<value>clientserverbar</value>
</property>
<property>
<name>ssl.client.truststore.reload.interval</name>
<value>10000</value>
</property>
</configuration>
激活Encrypted Shuffle
当你改变了上面的配置,要通过重新启动全部的 NodeManagers 来激活 Encrypted Shuffle. 重要: 使用 encrypted shuffle 会导致对性能有明显影响。用户应该避免这样的情况。并尽可能地 保留1或很多其它的加密 shuffle 核心。(?)ClientCertificates client证书
使用client证书并不能全然保证client是作业的一个reducer任务。当前。client证书(他们的私钥)keystore 文件 必须对全部提交作业到集群的用户 是可读的。这意味着一个欺诈性的作业能够读这些 keystore 文件,并在其上使用client证书与一个Shuffle服务器建立安全连接。然而。除非欺诈性作业有一个合理的 JobToken, 否则它将不能从 Shuffle server 上检索数据。 一个作业,用其自己的 JobToken, 仅能够检索属于它自身的数据。重载Truststores
默认地。 truststores 会每10秒重载一次他们的配置文件。假设在一个旧的 truststore 文件 上复制了一个新的,它会被又一次读取。它的证书也会替换掉旧的。这样的机制对于从集群上加入或删除节点。或者是加入/删除信任的client很实用。这样的情况下,client或者 NodeManager 证书就被加入到(或从中删除)系统中的全部的 truststore 文件上,而且不必重新启动 NodeManager 守护进程,新的配置就会被发现。Debugging
注意: 启用 debugging 不过为了发现和解决这个问题。作业也不过执行在小量数据上。 会几个数量级地减慢作业,也是冗长的。(你可能须要添加 mapred.task.timeout 防止作业失败。由于任务执行如此之慢。) 要在 reducers 中同意 SSL debugging, 设置-Djavax.net.debug=allin themapreduce.reduce.child.java.opts属性; 比如:<property>
<name>mapred.reduce.child.java.opts</name>
<value>-Xmx-200m -Djavax.net.debug=all</value>
</property>你能够在每一个作业上都这样做,或用
mapred-site.xml 的集群范围内的设置。要在 NodeManager 中设置这个属性, 请在
yarn-env.sh文件里设置:YARN_NODEMANAGER_OPTS="-Djavax.net.debug=all $YARN_NODEMANAGER_OPTS"
Hadoop-2.2.0中文文档—— MapReduce 下一代 - Encrypted Shuffle的更多相关文章
- Hadoop-2.2.0中文文档—— MapReduce下一代- 可插入的 Shuffle 和 Sort
简单介绍 可插入的 shuffle 和 sort 功能,同意在shuffle 和 sort 逻辑中用可选择的实现类替换.这个情况的样例是:用一个不是HTTP的应用协议,如RDMA来 shuffle 从 ...
- Hadoop-2.2.0中文文档——MapReduce 下一代 -——集群配置
目的 这份文档描写叙述了怎样安装.配置和管理从几个节点到有数千个节点的Hadoop集群. 玩的话,你可能想先在单机上安装.(看单节点配置). 准备 从Apache镜像上下载一个Hadoop的稳定版本号 ...
- Hadoop-2.2.0中文文档—— MapReduce 下一代--容量调度器
目的 这份文档描写叙述 CapacityScheduler,一个为Hadoop能同意多用户安全地共享一个大集群的插件式调度器,如他们的应用能适时被分配限制的容量. 概述 CapacitySchedul ...
- Hadoop-2.2.0中国文档—— MapReduce 下一代 -- 公平调度
目的 此文档描写叙述了 FairScheduler, Hadoop 的一个可插入式的调度器,同意 YARN 应用在一个大集群中公平地共享资源. 简单介绍 公平调度是一种分配资源给应用的方法.以致到最后 ...
- Apache Spark 2.2.0 中文文档
Apache Spark 2.2.0 中文文档 - 快速入门 | ApacheCN Geekhoo 关注 2017.09.20 13:55* 字数 2062 阅读 13评论 0喜欢 1 快速入门 使用 ...
- Apache Storm 1.1.0 中文文档 | ApacheCN
前言 Apache Storm 是一个免费的,开源的,分布式的实时计算系统. 官方文档: http://storm.apache.org 中文文档: http://storm.apachecn.org ...
- Django2.0中文文档
title: Django2.0中文文档 tags: Python,Django,入沐三分 grammar_cjkRuby: true --- Django2.0版本已经发布了,我们先来看一个图片 从 ...
- webpack4.0中文文档踩坑记录
一直没有正儿八经去看过webpack4.0的文档,前段时间工作比较轻松,于是就有了此文...面都这样一个问题:请问在您的开发生涯中,令你最痛苦最无奈的是什么?小生的回答只有一个:“阅读那些令人发指的文 ...
- Apache Spark 2.2.0 中文文档 - Spark 编程指南 | ApacheCN
Spark 编程指南 概述 Spark 依赖 初始化 Spark 使用 Shell 弹性分布式数据集 (RDDs) 并行集合 外部 Datasets(数据集) RDD 操作 基础 传递 Functio ...
随机推荐
- winrar X64 win10 破解
破解方法, win10 64位 复制下面内容到 RarReg.key 文件 RAR registration datawncnUnlimited Company LicenseUID=1b064ef8 ...
- 使用js的indexOf,lastIndexOf,slice三函数轻易得到url的服务器,路径和页名
js的indexOf,lastIndexOf,slice能帮我们在js字符串处理时少走一些弯路. 程序如下: var url="http://www.cnblogs.com/xiandeda ...
- Keepalived+Nginx实现高可用和双主节点负载均衡
简介 Nginx可以实现高并发反向代理,lvs集群可以实现负载均衡,但是他们都有一个共同的弊端,就是Nginx,lvs架构中Director是单点故障,有没有一个好的方案解决这个问题呢?答案是有.通过 ...
- ASP服务器I I S出现authentication mode=Windows错误解决办法
网上下载的asp.net源码出现 <authentication mode="Windows"/>错误信息 属性 说明 mode 必选的属性. 指定应用程序的默认身份验 ...
- ios 推送app badge 数字累加操作
ios 推送app badge 数字累加操作: 一:此数字需要后台配合: 二:大致原理: 后台发推送时,第一次 传badge 为1,往后,依次累加操作即可: 当用户打开app时,app向后台发送请求, ...
- 网站banner图片制作(简易版)
1.新建图层 根据baner需求,新建图层尺寸: 2.将图片拖进图层 按住shift对图片进行等比例缩放,将等比例缩放后的图片平铺到图层上. 3.添加文字 设置字体以及字体颜色 4.添加描边 选择文字 ...
- Docker配置本地镜像与容器的存储位置
默认情况下Docker的存放位置为:/var/lib/docker 可以通过下面命令查看具体位置: sudo docker info | grep "Docker Root Dir" ...
- 【LeetCode】100. Same Tree (2 solutions)
Same Tree Given two binary trees, write a function to check if they are equal or not. Two binary tre ...
- 为什么要设置Java环境变量(详解)[转]
从大二开始接触Java,之后是断断续续的学习.大三真正开始Java之旅,估计大部分初学者在学Java时被Java的环境变量搞的晕头转向,虽然找到了正确设置环境变量的方式,但其中的原因一知半解,设置压根 ...
- 使用maven创建一个例子
创建一个目录:D:\testmaven 在命令行中切换到D:\testmaven目录后输入: mvn archetype:generate 下载骨架,它会往本地工厂存信息 也可以直接使用带有参数的命令 ...