注册表 DNS 服务器为部署的应用程序发布到 Hadoop 注册表中的信息提供标准 DNS 接口。DNS 服务提供以下功能
curl http://solr-0.solr-service.devuser.yarncluster:8983/solr/admin/collections?action=LIST
)。现有的 Hadoop 服务注册表用作 DNS 服务信息来源。
DNS 服务器支持以下核心功能
生成记录的 DNS 名称由以下元素(标签)组成。请注意,这些元素必须与 DNS 惯例兼容(请参阅 RFC 1035 中的“首选名称语法”)
DNS 服务的主要功能在以下图表中说明
下图更详细地说明了 DNS 记录创建和注册序列(注意:服务记录更新将遵循类似的步骤序列,仅由不同的事件类型区分)
同样,记录删除遵循类似的序列
(注意:DNS 区域需要一条记录作为删除方法的参数,因此需要类似的解析逻辑来识别应该删除的特定记录)。
默认情况下,DNS 服务器在非特权端口 5335
上运行。使用以下命令启动服务器
hadoop --daemon start registrydns
如果 DNS 服务器配置为使用标准特权端口 53
,则必须在 hadoop-env.sh 文件中取消注释环境变量 HADOOP_REGISTRYDNS_SECURE_USER 和 HADOOP_REGISTRYDNS_SECURE_EXTRA_OPTS。然后应以 root 身份启动 DNS 服务器,并且在绑定端口后,jsvc 将用于降低守护进程的特权。
注册表 DNS 服务器从 core-site.xml 文件读取其配置属性。以下是与 DNS 关联的配置属性
名称 | 说明 |
---|---|
hadoop.registry.zk.quorum | 用于定义 Hadoop 注册表 的 Zookeeper 仲裁组的逗号分隔主机名:端口对列表。 |
hadoop.registry.dns.enabled | 为集群启用 DNS 功能。默认值为 false。 |
hadoop.registry.dns.domain-name | 与 Hadoop 集群关联记录的域名。 |
hadoop.registry.dns.bind-address | 与 DNS 侦听器应绑定的网络接口关联的地址。 |
hadoop.registry.dns.bind-port | DNS 侦听器的端口号。默认端口为 5335。 |
hadoop.registry.dns.dnssec.enabled | 指示是否启用 DNSSEC 支持。默认值为 false。 |
hadoop.registry.dns.public-key | 服务器公钥的 base64 表示形式。用于创建为 DNSSEC 客户端请求提供的 DNSKEY 记录。 |
hadoop.registry.dns.private-key-file | 标准 DNSSEC 私钥文件的路径。只有启动 DNS 的标识才能读取该文件。请参阅 dnssec-keygen 文档。 |
hadoop.registry.dns-ttl | 与 DNS 记录关联的默认 TTL 值。默认值设置为 1(值为 0 的行为未定义)。典型值应近似于 YARN 重新启动失败容器所需的时间。 |
hadoop.registry.dns.zone-subnet | 与集群容器关联的 IP 范围的指示符。该设置用于生成反向区域名称。 |
hadoop.registry.dns.zone-mask | 与区域 IP 范围关联的网络掩码。如果指定,它将用于确定可能的 IP 范围并提出适当的反向区域名称。 |
hadoop.registry.dns.zones-dir | 包含在区域初始化期间读取的区域配置文件的目录。此目录可以包含名为 zone-name.zone 的区域主文件。请参阅 此处 以获取区域主文件文档。 |
<property> <description>The domain name for Hadoop cluster associated records.</description> <name>hadoop.registry.dns.domain-name</name> <value>ycluster</value> </property> <property> <description>The port number for the DNS listener. The default port is 5335. If the standard privileged port 53 is used, make sure start the DNS with jsvc support.</description> <name>hadoop.registry.dns.bind-port</name> <value>5335</value> </property> <property> <description>The DNS functionality is enabled for the cluster. Default is false.</description> <name>hadoop.registry.dns.enabled</name> <value>true</value> </property> <property> <description>Address associated with the network interface to which the DNS listener should bind.</description> <name>hadoop.registry.dns.bind-address</name> <value>localhost</value> </property> <property> <description>A comma separated list of hostname:port pairs defining the zookeeper quorum for the Hadoop registry</description> <name>hadoop.registry.zk.quorum</name> <value>localhost:2181</value> </property>
要配置注册表 DNS 以提供 172.17.0.0/24
的反向查找
<property> <description>The network mask associated with the zone IP range. If specified, it is utilized to ascertain the IP range possible and come up with an appropriate reverse zone name.</description> <name>hadoop.registry.dns.zone-mask</name> <value>255.255.255.0</value> </property> <property> <description>An indicator of the IP range associated with the cluster containers. The setting is utilized for the generation of the reverse zone name.</description> <name>hadoop.registry.dns.zone-subnet</name> <value>172.17.0.0</value> </property>
你可以编辑 /etc/resolv.conf
以使你的系统使用注册表 DNS,如下所示,其中 192.168.154.3
是你的 DNS 主机的 IP 地址。它应该出现在任何名称服务器之前,这些名称服务器将为群集使用的域中的查找返回 NXDOMAIN。
nameserver 192.168.154.3
或者,如果你在你的组织中有一个企业 DNS,你可以配置区域转发,以便注册表 DNS 解析群集使用的域的主机名。