【问题标题】:facing issue while starting hive server and hive web interface启动 Hive 服务器和 Hive Web 界面时遇到问题
【发布时间】:2013-01-01 16:41:50
【问题描述】:

((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)

请帮忙。

提前致谢!!

【问题讨论】:

  • 尝试netstat -nl | grep 9999检查哪个进程使用9999是默认hwi端口的端口。
  • 更改默认地址并再次尝试运行。

标签: hadoop hive


【解决方案1】:

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

((1)) 使用另一个端口地址启动 hive server

    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 网页界面

    hive --service hwi

d] 浏览 localhost:9998/hwi/

【讨论】:

    【解决方案2】:

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

    1)设置端口号

               export HIVE_PORT=10000
    

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

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

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

         kill -9 pid
    

    4) 启动 hive 服务器

             $HIVE_HOME/bin --service hiveserver
    

    如果还是不行,转第二步,重新启动服务器

    【讨论】:

      【解决方案3】:

      停止 Hive;

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

      1) hive.hwi.listen.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 战争文件的路径,相对于 $HIVE_HOME}

      再次启动 Hive

      使用命令在 Hive 服务器上启动 HWI

      nohup hive --service hwi &

      现在,您可以以 host:9999/hwi 身份访问 HWI

      【讨论】:

        【解决方案4】:

        通常会出现这个问题。 要么您正在更改主机名,因此您在元存储中创建的用户仍然引用旧的元存储主机名。

        案例 -1 或者 Metastore 未启动,这会引发上述错误,因此运行 bin/metatool -listFSRoot 如果它运行时没有错误,那么您可以安全地连接 hive。

        但问题仍未解决案例-2

        Case-2 在 hive 中创建的表仍然指向指向旧主机名的旧 hiveuser,因此您无法从 hive 表中获取记录。

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

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

        【讨论】:

          【解决方案5】:

          如果出现此类问题,请运行

          $ bin/metatool -listFSRoot 
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-04-19
            • 2018-10-28
            • 1970-01-01
            • 2013-05-31
            • 2016-08-01
            • 2017-06-24
            • 2017-05-16
            • 1970-01-01
            相关资源
            最近更新 更多