阿里云
发表主题 回复主题
  • 732阅读
  • 0回复

Hadoop-2.2.0中文文档—— MapReduce 下一代 - Encrypted Shuffle

级别: 新人
发帖
0
云币
-40




问题导读
1、在HTTP 和 HTTPS 之间绑定 shuffle 的Hadoop 配置流程是什么?
2、ClientCertificates 客户端证书的作用是什么?
3、如何重载Truststores?

Hadoop-2.2.0中文文档—— MapReduce 下一代 - Encrypted Shuffle-mapreduce shuffle




111.JPG (63.64 KB, 下载次数: 0)




下载附件

 保存到相册




2014-9-4 16:52 上传
















重要: 当前需要把客户端证书设置为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 中对集群中的所有节点设置下面的属性:

Hadoop-2.2.0中文文档—— MapReduce 下一代 - Encrypted Shuffle-mapreduce的shuffle




111.JPG (17.99 KB, 下载次数: 0)




下载附件

 保存到相册




2014-9-4 16:53 上传















重要: 在集群配置文件中的这个属性应该标记为 final。

示例 :


    ...
    <property>
      <name>mapreduce.shuffle.ssl.enabled</name>
      <value>true</value>
      <final>true</final>
    </property>
    ...


复制代码




Linux 容器执行器应该设置为阻止作业任务读取服务器的keystore信息,以及获得shuffle服务器证书。

参考 Hadoop Kerberos 配置,以获得此处如何做的细节。

Keystore 和 Truststore 的设置

当前 FileBasedKeyStoresFactory 是 KeyStoresFactory 的唯一实现.  FileBasedKeyStoresFactory 实现用了下面的属性, 在 ssl-server.xml 和 ssl-client.xml 文件中,用来配置 keystores 和 truststores.
ssl-server.xml (Shuffle server) 的配置:

mapred 用户应该拥有ssl-server.xml文件并有唯一地访问权。

Hadoop-2.2.0中文文档—— MapReduce 下一代 - Encrypted Shuffle-mapreduce中的shuffle




111.JPG (48.89 KB, 下载次数: 0)




下载附件

 保存到相册




2014-9-4 16:54 上传















示例:


<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文件并它应该有默认的权限。

Hadoop-2.2.0中文文档—— MapReduce 下一代 - Encrypted Shuffle-mapreduceshuffle




111.JPG (48.21 KB, 下载次数: 0)




下载附件

 保存到相册




2014-9-4 16:56 上传
















示例 :


<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 客户端证书

使用客户端证书并不能完全保证客户端是作业的一个reducer任务。当前,客户端证书(他们的私钥)keystore 文件 必须对所有提交作业到集群的用户 是可读的。这意味着一个欺诈性的作业可以读这些 keystore 文件,并在其上使用客户端证书与一个Shuffle服务器建立安全连接。然而,除非欺诈性作业有一个合理的 JobToken, 否则它将不能从 Shuffle server 上检索数据。一个作业,用其自己的 JobToken, 仅可以检索属于它自身的数据。

重载Truststores

默认地, truststores 会每10秒重载一次他们的配置文件。如果在一个旧的 truststore 文件 上复制了一个新的,它会被重新读取,它的证书也会替换掉旧的。这种机制对于从集群上添加或删除节点,或者是添加/删除信任的客户端非常有用。这种情况下,客户端或者 NodeManager 证书就被添加到(或从中删除)系统中的所有的 truststore 文件上,并且不必重启 NodeManager 守护进程,新的配置就会被发现。

Debugging

注意: 启用 debugging 仅仅是为了发现和解决问题,作业也只是运行在小量数据上。会几个数量级地减慢作业,也是冗长的。(你可能需要增加 mapred.task.timeout 防止作业失败,因为任务执行如此之慢。)

要在 reducers 中允许 SSL debugging, 设置-Djavax.net.debug=all in the mapreduce.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"

复制代码




发表主题 回复主题
« 返回列表
«12345678910»
共10页
上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)

      版权声明

      开发者论坛为你提供“Hadoop-2.2.0中文文档—— MapReduce 下一代 - Encrypted Shuffle”的内容,论坛中还有更多关于 server.xmlkeystoreSSLxml加密jks 的内容供你使用,该内容是网友上传,与开发者论坛无关,如果需要删除请联系zixun-group@service.aliyun.com,工作人员会在5个工作日内回复您。