登錄 DNS 伺服器提供標準 DNS 介面,以存取已部署應用程式張貼至 Hadoop 登錄的資訊。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 解析群集使用的網域中的主機名稱。