在启动hive服务器和配置单元web界面时遇到问题

时间:2013-01-01 16:41:51

标签: hadoop hive

((1))

启动thrift服务器时出现以下错误:

hive --service hiveserver

Starting Hive Thrift Server
org.apache.thrift.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000.

当我运行netstat端口10000时已经在使用..

$ netstat -nl | grep 10000
tcp6       0      0 :::10000                :::*                    LISTEN 

如何解决此问题?

((2))

启动hive web界面时出现以下错误

hive --service hwi

$ hive --service  hwi
13/01/01 22:05:36 INFO hwi.HWIServer: HWI is starting up
13/01/01 22:05:37 INFO mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
13/01/01 22:05:37 INFO mortbay.log: jetty-6.1.26
13/01/01 22:05:37 INFO mortbay.log: Extract /opt/hive/lib/hive-hwi-0.9.0.jar to /tmp/Jetty_127_0_0_1_3606_hive.hwi.0.9.0.jar__hwi__.6ogsv5/webapp
13/01/01 22:05:37 WARN mortbay.log: failed SocketConnector@127.0.0.1:3606: java.net.BindException: Address already in use
13/01/01 22:05:37 WARN mortbay.log: failed Jetty20SShims$Server@21e554: java.net.BindException: Address already in use
Exception in thread "main" java.net.BindException: Address already in use
    at java.net.PlainSocketImpl.socketBind(Native Method)

请帮忙。

提前致谢!!

5 个答案:

答案 0 :(得分:3)

您的端口地址似乎被其他程序使用,您可以按照以下步骤操作: -

((1))使用另一个端口地址启动配置单元服务器

    hive --service hiveserver -p 10001 &

((2))

a]如果$ HIVE_HOME / conf文件夹中没有,则创建hive-site.xml文件    b]在其中加入以下行

   <?xml version="1.0"?>
   <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
   <configuration>
   <property>
    <name>hive.hwi.listen.host</name>
    <value>localhost</value>
   </property>
   <property>
    <name>hive.hwi.listen.port</name>
    <value>9998</value>
   </property>
   <property>
    <name>hive.hwi.war.file</name>
    <value>lib/hive-hwi-0.10.0.war</value>
    <description>This sets the path to the HWI war file, relative to ${HIVE_HOME}. </description>
   </property>
   </configuration>

c]启动hive web界面

    hive --service hwi

d]浏览localhost:9998 / hwi /

答案 1 :(得分:1)

我遇到同样的问题是我得到的解决方案

1)设置端口数

           export HIVE_PORT=10000

2)检查哪些服务正在收听

     sudo lsof -i -P | grep -i "listen"

3)如果有与端口10000相关的进程将其杀死

     kill -9 pid

4)启动配置单元服务器

         $HIVE_HOME/bin --service hiveserver

如果不起作用,请转到步骤2并再次启动服务器

答案 2 :(得分:0)

停止蜂巢;

在hive-site.xml中添加以下属性

1)hive.hwi.listen.host = host

2)hive.hwi.listen.port = 9999

3)hive.hwi.war.file = /lib/hive-common-0.12.0.2.0.6.1-102.jar {这设置HWI war文件的路径,相对于$ HIVE_HOME}

再次启动Hive

使用命令

在Hive服务器上启动HWI

nohup hive --service hwi&amp;

现在,您可以作为主机访问HWI:9999 / hwi

答案 3 :(得分:0)

如果出现此类问题

$ bin/metatool -listFSRoot 

如果它运行时没有出现错误,那么尝试运行metastore,然后检查配置单元是否可以从表中获取记录。

答案 4 :(得分:0)

通常会出现此问题。 您要么更改主机名,以便您在元数据库中创建的用户仍然引用旧的Metastore主机名。

情况-1,如果没有Metastore会抛出上面的错误,那么运行bin / metatool -listFSRoot,如果它运行没有错误,那么你就可以安全地连接hive。

但仍然没有解决案例-2

案例2在hive中创建的表仍然指向旧的hiveuser,它指向旧的主机名,因此你不能从hive表中获取记录。

解决方案: - 使用旧主机名恢复所有文件中的主机名,然后依次运行hadoop和hive堆栈。

除此之外,如果有人有其他解决方案,请分享。我在生产箱中解决了。