- 浏览: 108874 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
土豆蛋儿:
我想读取一个外部文件,以什么方式好了? 文件内容经常编辑
flume 自定义source -
土豆蛋儿:
大神,您好。
flume 自定义source
HiveServer2连接ZooKeeper出现Too many connections问题的解决
作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息
网址: http://www.cnblogs.com/panfeng412/archive/2013/03/23/hiveserver2-too-many-zookeeper-connections-issues.html
HiveServer2支持多客户端的并发访问,使用ZooKeeper来管理Hive表的读写锁。实际环境中,遇到了HiveServer2连接ZooKeeper出现Too many connections的问题,这里是对这一问题的排查和解决过程。
问题描述
HiveServer2服务无法执行hive命令,日志中提示如下错误:
2013-03-22 12:54:43,946 WARN zookeeper.ClientCnxn (ClientCnxn.java:run(1089)) - Session 0x0 for server hostname/***.***.***.***:2181, unexpected error, closing socket connection and attempting reconnect
java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
at sun.nio.ch.IOUtil.read(IOUtil.java:200)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:236)
at org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:68)
at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:355)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068)
问题排查
1. 首先,根据HiveServer2的错误日志,提示是由于Connection reset by peer,即连接被ZooKeeper拒绝。
2. 进一步查看HiveServer2上所配置的ZooKeeper集群日志(用户Hive表的读写锁管理),发现如下错误信息:
2013-03-22 12:52:48,938 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@193] - Too many connections from /***.***.***.*** - max is 50
3. 结合HiveServer2的日志,可见是由于HiveServer2所在机器对ZooKeeper的连接数超过了ZooKeeper设置允许的单个client最大连接数(这里是50)。
4. 我们进一步确认了是不是完全都是HiveServer2占用了这50个连接,显示确实是HiveServer2进程内部占用了这50个连接(进程号26871即为HiveServer2进程):
[user@hostname ~]$ sudo netstat -nap | grep 2181
tcp 0 0 ***.***.***.***:58089 ***.***.***.***:2181 ESTABLISHED 26871/java
tcp 0 0 ***.***.***.***:57837 ***.***.***.***:2181 ESTABLISHED 26871/java
tcp 0 0 ***.***.***.***:57853 ***.***.***.***:2181 ESTABLISHED 26871/java
……
(共计50个)
5. 为什么HiveServer2会占用这么多连接?而实际并发请求量并没有这么多。只能从HiveServer2的实现原理找找线索,由于HiveServer2是通过Thrift实现的,怀疑是不是其内部维护连接池导致的?经过查看hive-default.xml中发现,其中默认配置了工作线程数(这里猜测每个工作线程会维护一个与ZooKeeper的连接,有待从代码级别进行验证):
<property>
<name>hive.server2.thrift.min.worker.threads</name>
<value>5</value>
<description>Minimum number of Thrift worker threads</description>
</property>
<property>
<name>hive.server2.thrift.max.worker.threads</name>
<value>100</value>
<description>Maximum number of Thrift worker threads</description>
</property>
问题解决
方法一:
通过在hive-site.xml中修改HiveServer2的Thrift工作线程数,减少与ZooKeeper的连接请求数。这样可能降低HiveServer2的并发处理能力。
方法二:
通过修改ZooKeeper的zoo.cfg文件中的maxClientCnxns选项,调大对于单个Client的连接数限制。
以上两个方法,需要根据自己的实际生产情况进行合理设置。
相关的配置选项:
1)hive-site.xml中:
<property>
<name>hive.server2.thrift.min.worker.threads</name>
<value>10</value>
<description>Minimum number of Thrift worker threads</description>
</property>
<property>
<name>hive.server2.thrift.max.worker.threads</name>
<value>200</value>
<description>Maximum number of Thrift worker threads</description>
</property>
<property>
<name>hive.zookeeper.session.timeout</name>
<value>60000</value>
<description>Zookeeper client's session timeout. The client is disconnected, and as a result, all locks released, if a heartbeat is not sent in the timeout.</description>
</property>
2)zoo.cfg中:
# Limits the number of concurrent connections (at the socket level) that a single client, identified by IP address
maxClientCnxns=200
# The minimum session timeout in milliseconds that the server will allow the client to negotiate
minSessionTimeout=1000
# The maximum session timeout in milliseconds that the server will allow the client to negotiate
maxSessionTimeout=60000
作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息
网址: http://www.cnblogs.com/panfeng412/archive/2013/03/23/hiveserver2-too-many-zookeeper-connections-issues.html
HiveServer2支持多客户端的并发访问,使用ZooKeeper来管理Hive表的读写锁。实际环境中,遇到了HiveServer2连接ZooKeeper出现Too many connections的问题,这里是对这一问题的排查和解决过程。
问题描述
HiveServer2服务无法执行hive命令,日志中提示如下错误:
2013-03-22 12:54:43,946 WARN zookeeper.ClientCnxn (ClientCnxn.java:run(1089)) - Session 0x0 for server hostname/***.***.***.***:2181, unexpected error, closing socket connection and attempting reconnect
java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
at sun.nio.ch.IOUtil.read(IOUtil.java:200)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:236)
at org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:68)
at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:355)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068)
问题排查
1. 首先,根据HiveServer2的错误日志,提示是由于Connection reset by peer,即连接被ZooKeeper拒绝。
2. 进一步查看HiveServer2上所配置的ZooKeeper集群日志(用户Hive表的读写锁管理),发现如下错误信息:
2013-03-22 12:52:48,938 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@193] - Too many connections from /***.***.***.*** - max is 50
3. 结合HiveServer2的日志,可见是由于HiveServer2所在机器对ZooKeeper的连接数超过了ZooKeeper设置允许的单个client最大连接数(这里是50)。
4. 我们进一步确认了是不是完全都是HiveServer2占用了这50个连接,显示确实是HiveServer2进程内部占用了这50个连接(进程号26871即为HiveServer2进程):
[user@hostname ~]$ sudo netstat -nap | grep 2181
tcp 0 0 ***.***.***.***:58089 ***.***.***.***:2181 ESTABLISHED 26871/java
tcp 0 0 ***.***.***.***:57837 ***.***.***.***:2181 ESTABLISHED 26871/java
tcp 0 0 ***.***.***.***:57853 ***.***.***.***:2181 ESTABLISHED 26871/java
……
(共计50个)
5. 为什么HiveServer2会占用这么多连接?而实际并发请求量并没有这么多。只能从HiveServer2的实现原理找找线索,由于HiveServer2是通过Thrift实现的,怀疑是不是其内部维护连接池导致的?经过查看hive-default.xml中发现,其中默认配置了工作线程数(这里猜测每个工作线程会维护一个与ZooKeeper的连接,有待从代码级别进行验证):
<property>
<name>hive.server2.thrift.min.worker.threads</name>
<value>5</value>
<description>Minimum number of Thrift worker threads</description>
</property>
<property>
<name>hive.server2.thrift.max.worker.threads</name>
<value>100</value>
<description>Maximum number of Thrift worker threads</description>
</property>
问题解决
方法一:
通过在hive-site.xml中修改HiveServer2的Thrift工作线程数,减少与ZooKeeper的连接请求数。这样可能降低HiveServer2的并发处理能力。
方法二:
通过修改ZooKeeper的zoo.cfg文件中的maxClientCnxns选项,调大对于单个Client的连接数限制。
以上两个方法,需要根据自己的实际生产情况进行合理设置。
相关的配置选项:
1)hive-site.xml中:
<property>
<name>hive.server2.thrift.min.worker.threads</name>
<value>10</value>
<description>Minimum number of Thrift worker threads</description>
</property>
<property>
<name>hive.server2.thrift.max.worker.threads</name>
<value>200</value>
<description>Maximum number of Thrift worker threads</description>
</property>
<property>
<name>hive.zookeeper.session.timeout</name>
<value>60000</value>
<description>Zookeeper client's session timeout. The client is disconnected, and as a result, all locks released, if a heartbeat is not sent in the timeout.</description>
</property>
2)zoo.cfg中:
# Limits the number of concurrent connections (at the socket level) that a single client, identified by IP address
maxClientCnxns=200
# The minimum session timeout in milliseconds that the server will allow the client to negotiate
minSessionTimeout=1000
# The maximum session timeout in milliseconds that the server will allow the client to negotiate
maxSessionTimeout=60000
发表评论
-
hive + hbase
2015-01-04 10:42 735环境配置: hadoop-2.0.0-cdh4.3.0 (4 ... -
hive 数据倾斜
2014-08-27 09:03 647链接:http://www.alidata.org/archi ... -
hive 分通总结
2014-08-27 08:42 549总结分析: 1. 定义了桶,但要生成桶的数据,只能是由其他表 ... -
深入了解Hive Index具体实现
2014-08-25 08:51 707索引是标准的数据库技术,hive 0.7版本之后支持索引。hi ... -
explain hive index
2014-08-24 16:44 1121设置索引: 使用聚合索引优化groupby操作 hive> ... -
Hive 中内部表与外部表的区别与创建方法
2014-08-15 17:11 727分类: Hive 2013-12-07 11:56 ... -
hive map和reduce的控制
2014-08-15 16:14 598一、 控制hive任务中的map数: 1. 通 ... -
hive 压缩策略
2014-08-15 15:16 1728Hive使用的是Hadoop的文件 ... -
hive 在mysql中创建备用数据库
2014-08-15 09:21 842修改hive-site.xml <property> ... -
HIVE 窗口及分析函数
2014-08-11 16:21 1155HIVE 窗口及分析函数 使 ... -
hive 内置函数
2014-08-11 09:06 30291.sort_array(): sort_array(arra ... -
hive lateral view
2014-08-09 14:59 1991通过Lateral view可以方便的将UDTF得到的行转列的 ... -
hive数据的导出
2014-07-28 21:53 420在本博客的《Hive几种数据导入方式》文章中,谈到了Hive中 ... -
hive udaf
2014-07-25 16:11 718package com.lwz.udaf; import o ... -
hive自定义InputFormat
2014-07-25 09:13 821自定义分隔符 package com.lwz.inputf; ... -
hive 常用命令
2014-07-17 22:22 6431.hive通过外部设置参数传入脚本中: hiv ... -
CouderaHadoop中hive的Hook扩展
2014-07-16 21:18 3262最近在做关于CDH4.3.0的hive封装,其中遇到了很多问题 ... -
利用SemanticAnalyzerHook回过滤不加分区条件的Hive查询
2014-07-16 16:43 1423我们Hadoop集群中将近百分之80的作业是通过Hive来提交 ... -
hive 的常用命令
2014-07-16 10:07 0设置、查看hive当前的角色: set sys ... -
hive 授权
2014-07-15 10:51 901Hive授权(Security配置) 博客分类: Hive分 ...
相关推荐
今天小编就为大家分享一篇关于Dubbo无法访问远程Zookeeper已注册服务的问题解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
zookeeper客户端连接工具,亲测有效
zookeeper连接工具,可视化数据查看
zookeeper连接工具zktools.rar
有java连接zookeeper所需的基本jar包,共拥有9个jar包,例如常用的log4j.jar,junit.jar,还有必要的zookeeper.jar
java连接zookeeper,并增加acl权限,增加节点,删除节点,对业务进行操作
快速查看zookeeper内容 ,git 地址 https://github.com/vran-dev/PrettyZoo/releases 能够记录zookeeper密码 支持内容修改
zookeeper安装包(内附客户端连接工具)
zookeeper运维工具,淘宝开源
资源文件主要是用来学习zookeeper的可视化连接工具, 我们在用java或其他测试zookeeper的增加节点和删除节点的情况下,可以看到实时效果,学习很方便, 在部署zookeeper环境的时候,我们也可以通过工具来确定环境是否...
Zookeeper四字节指令安全分析解决
今天小编就为大家分享一篇关于Zookeeper连接超时问题与拒绝连接的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
Zookeeper服务能够正常启动和连接 Zookeeper控制台能够正常进入 Zookeeper控制台命令能够正常使用 二、实验目的 Zookeeper的完全分布模式的安装和验证 三、软件版本 选用Zookeeper的3.4.9版本,软件包名zookeeper-...
java -classpath .:slf4j-api-1.7.2.jar:zookeeper-3.4.6.jar org.apache.zookeeper.server.LogFormatter /var/lib/zookeeper/version-2/log.1 ##window的bat批量方式 @echo off echo 查看zookeeper日志: set /...
zookeeper客户端,可以在windows, linux下运行,使用java开发,启动后,填写zookeeper配置信息,可以连接zookeeper服务器,查看服务器上的数据信息
apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper...
initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个...
zookeeper 3.6.3 源码
这个是在MAC上查看Zookeeper节点的小工具,挺实用的,使用方式,执行zooInspector.sh