HBase中由Reverse DNS引起的问题

参考: HowTo Test or Check Reverse DNS on a Linux / Unix

使用HBase时的Reverse DNS相关问题

当我们把HBase的Table作为MapReduce或者Spark的输入数据源时,容易碰到如下的问题:

15/07/06 17:03:31 WARN TableInputFormatBase: Cannot resolve the host name for ecs1.njzd.com/10.163.104.81 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name ‘81.104.163.10.in-addr.arpa’

15/07/06 17:03:31 INFO RegionSizeCalculator: Calculating region sizes for table “sentiments:salted”.

15/07/06 17:03:33 WARN TableInputFormatBase: Cannot resolve the host name for ecs2.njzd.com/10.163.105.115 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name ‘115.105.163.10.in-addr.arpa’


以上问题的实质,就是集群中的Reverse DNS不能正常工作。所以,我们要保证集群中的每一个rDNS都能正常工作



验证Reverse DNS是否正常

首先来验证,Reverse DNS是否确实不能正常工作。这里正常工作的定义是:集群中的每一个节点的Reverse DNS都要能正常工作,即能根据任意一个节点的IP查询它对应的hostname。


验证命令

host IP



例如,要验证某个节点的rDNS是否正常工作,我们只需要准备好一个该节点应该知道hostname的IP(假定是10.163.105.115),并在该节点上运行以下命令:

host 10.163.105.115



如果返回的是类似于如下的结果(即给出了该IP对应的hostname):

115.105.163.10.in-addr.arpa domain name pointer ecs2.njzd.com.

则说明该节点的rDNS是正常工作的。




配置rDNS

最简单的方法就是利用/etc/hosts中IP与hostname的关系。


#1、禁用DNS Server
编辑etc/resolv.conf,把所有的DNS项(即形如 nameserver <ip>的行)都注释掉


#2、完善/etc/hosts文件
将该文件中的所有ip与hostname的项都写正确


#3、调用命令dnsmasq
如果没有该命令,则先用yum install dnsmasq安装,然后运行命令dnsmasq


在集群中的每一个节点都用上述方法来保证每个节点的rDNS都是正常的。


现在,以HBase table为数据源运行MR job或Spark job,应该不会再报上述的Cannot resolve the host name for xxx/yyy because of javax.naming.NameNotFoundException: DNS name not found这样的异常了

你可能感兴趣的:(hbase,RDNS)