Kylin 安装启动时报:java.net.UnknownHostException

本文详细解析了Kylin在启动过程中遇到的Zookeeper连接异常问题,具体表现为域名解析失败。通过分析发现,问题根源在于配置文件中主机名与端口号的重复设置。文章提供了修改hbase-site.xml文件中hbase.zookeeper.quorum参数的解决方案,指出应仅配置主机名而不包含端口号,最后重启Hbase服务即可解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.异常

    Kylin在启动之后报一下错误:java.net.UnknownHostException: hadoop102:2181: 域名解析暂时失败。    具体错误信息如下:


2019-01-19 22:00:43,140 INFO  [main] zookeeper.ZooKeeper:438 : Initiating client connection, connectString=hadoop102:2181:2181,hadoop103:2181:2181,hadoop104:2181:2181 sessionTimeout=120000 watcher=org.apache.curator.ConnectionState@493dfb8e
2019-01-19 22:00:53,154 ERROR [main] imps.CuratorFrameworkImpl:546 : Background exception was not retry-able or retry gave up
java.net.UnknownHostException: hadoop102:2181: 域名解析暂时失败
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
    at java.net.InetAddress.getAllByName(InetAddress.java:1192)
    at java.net.InetAddress.getAllByName(InetAddress.java:1126)
    at org.apache.zookeeper.client.StaticHostProvider.<init>(StaticHostProvider.java:61)
    at org.apache.zookeeper.ZooKeeper.<init>(ZooKeeper.java:445)
    at org.apache.curator.utils.DefaultZookeeperFactory.newZooKeeper(DefaultZookeeperFactory.java:29)
    at org.apache.curator.framework.imps.CuratorFrameworkImpl$2.newZooKeeper(CuratorFrameworkImpl.java:146)
    at org.apache.curator.HandleHolder$1.getZooKeeper(HandleHolder.java:94)
    at org.apache.curator.HandleHolder.getZooKeeper(HandleHolder.java:55)
    at org.apache.curator.ConnectionState.reset(ConnectionState.java:218)
    at org.apache.curator.ConnectionState.start(ConnectionState.java:102)
    at org.apache.curator.CuratorZookeeperClient.start(CuratorZookeeperClient.java:189)
    at org.apache.curator.framework.imps.CuratorFrameworkImpl.start(CuratorFrameworkImpl.java:248)
    at org.apache.kylin.storage.hbase.util.ZookeeperDistributedLock$Factory.getZKClient(ZookeeperDistributedLock.java:81)
    at org.apache.kylin.storage.hbase.util.ZookeeperDistributedLock$Factory.<init>(ZookeeperDistributedLock.java:105)
    at org.apache.kylin.storage.hbase.util.ZookeeperDistributedLock$Factory.<init>(ZookeeperDistributedLock.java:101)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.Class.newInstance(Class.java:442)
    at org.apache.kylin.common.util.ClassUtil.newInstance(ClassUtil.java:84)
    at org.apache.kylin.common.KylinConfigBase.getDistributedLockFactory(KylinConfigBase.java:375)
    at org.apache.kylin.storage.hbase.HBaseConnection.createHTableIfNeeded(HBaseConnection.java:327)
    at org.apache.kylin.storage.hbase.HBaseResourceStore.createHTableIfNeeded(HBaseResourceStore.java:112)
    at org.apache.kylin.storage.hbase.HBaseResourceStore.<init>(HBaseResourceStore.java:93)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.apache.kylin.common.persistence.ResourceStore.createResourceStore(ResourceStore.java:92)
    at org.apache.kylin.common.persistence.ResourceStore.getStore(ResourceStore.java:110)
    at org.apache.kylin.rest.service.AclTableMigrationTool.checkIfNeedMigrate(AclTableMigrationTool.java:98)
    at org.apache.kylin.tool.AclTableMigrationCLI.main(AclTableMigrationCLI.java:41)

    这是由于端口号2181在zk connectString里写了两遍,从而造成了master:2181:2181的情况。

    cd /opt/module/hbase/conf  vi hbase-site.xml,可以看到我们之前的配置时同时配置了主机名:端口号,在kylin连接zookeeper时会调用connectString,从再添加一边端口号,从而造成上述问题。

<configuration>

    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hadoop103:9000/hbase</value>
    </property>

    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>

   <!-- 0.98后的新变动,之前版本没有.port,默认端口为60000 -->
    <property>
        <name>hbase.master.port</name>
        <value>16000</value>
    </property>

    <property>
        <name>hbase.zookeeper.quorum</name>
         <value>hadoop102:2181,hadoop103:2181,hadoop104:2181</value>
    </property>

    <property>
         <name>hbase.zookeeper.property.dataDir</name>
         <value>/opt/module/zookeeper-3.4.10/zkData</value>
    </property>

    <property>
            <name>hbase.coprocessor.region.classes</name>
            <value>com.atguigu.coprocessor.CalleeWriteObserver</value>
    </property>

</configuration>

2.解决方法:    

    在$HBASE_HOME/conf/的文件夹下,修改hbase-site.xml的hbase.zookeeper.quorum,该项只需配置Host不需要配置端口号Port。添加如下内容


<configuration>

    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hadoop103:9000/hbase</value>
    </property>

    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>

   <!-- 0.98后的新变动,之前版本没有.port,默认端口为60000 -->
    <property>
        <name>hbase.master.port</name>
        <value>16000</value>
    </property>

    <property>
         <name>hbase.zookeeper.quorum</name>
         <value>hadoop102,hadoop103hadoop104</value>
    </property>

    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/module/zookeeper-3.4.10/zkData</value>
    </property>

    <property>
            <name>hbase.coprocessor.region.classes</name>
            <value>com.atguigu.coprocessor.CalleeWriteObserver</value>
    </property>

</configuration>

    添加完毕,重启Hbase服务即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员学习圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值