【Hadoop】hiveserver2 不能启动端口 10000 开启服务的相关经验总结

转载来自http://blog.csdn.net/lsttoy/article/details/53490144

这个问题困扰了我三天,各种查资料踩坑填坑的尝试,终于搞定了这个问题。

首先来品尝下喜悦!

[[email protected] bin]# beeline
ls: cannot access /home/hive/lib/hive-jdbc-*-standalone.jar: No such file or directory
Beeline version 2.1.0 by Apache Hive
beeline> !connect jdbc:hive2://114.215.xxx.xxx:10000/default
Connecting to jdbc:hive2://114.215.xxx.xxx:10000/default
Enter username for jdbc:hive2://114.215.xxx.xxx:10000/default: root
Enter password for jdbc:hive2://114.215.xxx.xxx:10000/default: ************
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hive/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Connected to: Apache Hive (version 2.1.0)
Driver: Hive JDBC (version 2.1.0)
16/12/06 17:08:41 [main]: WARN jdbc.HiveConnection: Request to set autoCommit to false; Hive does not support autoCommit=false.
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://114.215.xxx.xxx:10000/default> 

OK,言归正传。从头梳理面临了多少问题。 
如果还没有安装hive的同学可以参见我之前的博文教程。

《【Hadoop】hadoop2.7.3安装hive 2.1.0》



第一个问题 
报错内容如下:

org.apache.hadoop.ipc.RemoteException: User: root is not allowed to impersonate root

这点就比较恶心了,一般来说,可能只是在hadoop中配置的代理用户不一样,如hadoop is not allowed to impersonate root 或者 root is not allowed to impersonate hive 啥的,但是根据网络上调整后尝试的方法,即对应value上面调整为hadoop 和localhost,没有作用。 
我本人的设置为: 
这里第三个字段我是root,因为试验环境,我全部用的root,避免权限问题。你可以根据自己的来设置。

     <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
     </property>
     <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
     </property>  

第二个问题 
报错内容如下:

beeline> !connect jdbc:hive2://114.215.xxx.xxx:10000/default
Connecting to jdbc:hive2://114.215.xxx.xxx:10000/default
Enter username for jdbc:hive2://114.215.xxx.xxx:10000/default: root
Enter password for jdbc:hive2://114.215.xxx.xxx:10000/default: ************
16/12/05 14:25:23 [main]: WARN jdbc.HiveConnection: Failed to connect to 114.215.xxx.xxx:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://114.215.xxx.xxx:10000/default: java.net.ConnectException: Connection refused (state=08S01,code=0)

这里链接拒绝,说明以下几个问题 
第一个,至少你连接是成功的,不然不会出现让你验证username和password的问题。 
第二个,你的链接有问题。有可能是你现在连接的并不是hive2,而是启动的服务hiveserver。这个和hiveserver2有很大的版本区别,具体可以百度。 
第三个,当链接的是hive2,但是还是拒绝的时候,可能问题出在你配置上面,如下:

  <property>
    <name>hive.server2.transport.mode</name>
    <value>binary</value>
    <description>
      Expects one of [binary, http].
      Transport mode of HiveServer2.
    </description>
  </property>

切记,当你这里设置为http的时候,此时服务器只提供端口10001的服务,即HTTP方式访问。 
这时候10000端口是不开启的! 
本人就是在这个地方卡了好几天。因此你要用java通过jdbc访问,一定要选择binary。

第三个问题 
报错内容如下:

[[email protected] ~]# Starting Hive Metastore Server
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hive/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
org.apache.thrift.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.0.0.0:9083.

这里表示你可能存在两个问题: 
其一,9083端口的metastore服务已经在使用中,你要停止,可以通过查询PID然后kill来进行重新启动。(如果你选择的是后台启动的话hive –service metastore &) 
其二,你的设置文件中hive-site.xml中,注意metastore的设置。 
我这里给出我一部分的设置,其他的你可以百度自己查询。

 <property>
    <name>hive.metastore.local</name>
    <value>false</value>
    <description>controls whether to connect to remote metastore server or open a new metastore server in Hive Client JVM</description>
  </property>
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://114.215.xxx.xxx:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
  </property>

另外,几个默认配置为0.0.0.0的地方不要轻易改动。除非你明确的知道修改的目的,否则请默认设置。

  <property>
    <name>hive.hwi.listen.host</name>
    <value>0.0.0.0</value>
    <description>This is the host address the Hive Web Interface will listen on</description>
  </property>

 <property>
    <name>hive.server2.webui.host</name>
    <value>0.0.0.0</value>
    <description>The host address the HiveServer2 WebUI will listen on</description>
  </property>

尤其是hive.server2.webui.host 不要随意改动。



如果遇到上述三个问题之外,还是无法链接上10000端口的话,记得用以下步骤。

一,先开启 metastore

hive --service metastore &

二,先开启 hiveserver2

 hive --service hiveserver2 &

三,可以通过命令netstat -ntulp |grep 10000 
可以看到结果 
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 27799/java

时间: 2024-08-05 21:02:03

【Hadoop】hiveserver2 不能启动端口 10000 开启服务的相关经验总结的相关文章

Linux对外提供服务 网络连接 端口操作 1.开启服务监听端口 2.设置防火墙,放行访问端口的包 iptables&amp;netfilter 四表五链和通堵策略

应用举例: Linux上安装Tomcat后,客户端要能够访问服务器上的Tomcat 操作: 1.网络操作 本机必须能够ping通目标主机(本地虚拟机或者远程主机) 2.端口操作 1.开启服务监听端口 2.设置防火墙,放行访问该端口的数据包 关键iptables和netfilter: iptables中的四表五链和堵通策略 CentOS6.7端口操作最佳实践: 查看iptables命令的帮助: iptables --help 不详细 man iptables 一般详细 手册页 info iptab

hive的hiveserver2模式启动不起来,发现Hadoop一直处于安全模式

hive的hiveserver2模式启动不起来,发现Hadoop一直处于安全模式 命令介绍 命令hadoop fs –safemode get 查看安全模式状态 命令hadoop fs –safemode enter 进入安全模式状态 命令hadoop fs –safemode leave 离开安全模式状态 用Hadoop fsck查看破坏丢失的文件位置 hadoop fsck Usage: DFSck <path> [-move | -delete | -openforwrite] [-fi

Memcached监听多个端口_同一台Windows机器中启动多个Memcached服务

百家姓起名大全 下载Memcached服务器 假设你解压在"C:\Program Files\memcached\memcached.exe" 那么可以如下创建多个服务监听不同的端口啦 监听第一个端口:创建服务名为Memcached_11211,显示名也为Memcached_11211,监听的端口为11211 sc create "Memcached_11211" start= auto binPath= "C:\Program Files\memcach

单台centos机器启动多个vsftpd服务

单服务器上vsftpd服务指定不同的端口以及不同的系统用户,来启动多个vsftpd服务. 单服务器上实现不同的系统用户来指定多个不同的虚拟用户来管理多站点目录(各个站点目录的权限是不同的系统用户的权限,例如:www,apache权限) 例如:系统用户:[[email protected] vsftpd]# egrep "www|apache" /etc/passwdapache:x:48:48:Apache:/var/www/html:/bin/falsewww:x:668:669::

用命令方式启动、停止appium服务和app

启动appium服务并监听一个端口命令: 命令command==> appium -a {ip} -p {port} -U {deviceName} -g {log} 以shell命令方式执行命令,并输入日志到log文件:用subprocess需导入 subprocess.Popen(command, stdout=open(LOG_PATH, 'a+'), stderr=subprocess.PIPE, shell=True) #相当于再cmd窗口输入上面的命令command 根据端口号查询是

启动两个Redis服务

启动两个Resdis实例 首先如果我们开了,redis-cli我们先关闭,然后开启三个cmd命令窗口: 第一步: redis-server -port 7777   第二步: redis-cli -p 7777   第三步: redis-cli (使用默认端口号) 这样就可以启动连个redis服务了,试试看 原文地址:https://www.cnblogs.com/YouAreABug/p/10171394.html

常用端口及对应服务

端口简介: 21端口:21端口主要用于FTP(File Transfer Protocol,文件传输协议)服务. 22端口:ssh 传统的网络服务程序,如:ftp.pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据.而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击.所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你的传给服务器的数据,然

Appium+Python app自动化测试之脚本启动和停止Appium服务

研究了一段时间的Appium android app的自动化测试,工作中需要连接多台手机终端同时执行测试用例,我实现的方式是获取用例中需要执行用例的设备id个数以及实际连接到的设备数(通过adb devices获取),然后启动相应数量的Appium 服务,以便每个设备执行时并发进行并且互不影响.当然也可以通过selenium grid来实现,只是目前还在学习研究中,还是先把目前启动多个appium服务实现的方式记录下来. 一.Windows下启动单个appium服务 需要启动多个appium服务

【转】同一台Windows机器中启动多个Memcached服务

上一篇介绍了Memcached的安装,但是如果手头上只有一台机器,又想做多节点测试咋办? 这就需要在一台机器上启动多个Memcached服务了. 假设Memcached在如下目录:C:\memcached\memcached.exe 在CMD中执行如下命令即可再安装一个Memcached服务(记得换个端口号啊!): sc create "Memcached Server1" start= auto binPath= "C:\memcached\memcached.exe -d