Hadoop Hive/HBase集成-Zookeeper会话立即关闭

Hadoop Hive/HBase集成-Zookeeper会话立即关闭,hadoop,hbase,hive,apache-zookeeper,Hadoop,Hbase,Hive,Apache Zookeeper,我们使用Cloudera Manager配置了一个使用CDH3u2的8节点集群。我们有一个专用的主节点运行我们唯一的zookeeper实例。当我将配置单元配置为运行从主节点执行的本地hadoop时,从HBase检索数据没有问题。当我通过配置单元运行分布式map/reduce时,当从属节点连接到zookeeper时,我得到以下错误 HBase可以连接到ZooKeeper,但连接会立即关闭。这可能是服务器连接太多的迹象(默认为30个) 我们已尝试将最大连接数设置得更高(我们甚至尝试取消该限制)。这是

我们使用Cloudera Manager配置了一个使用CDH3u2的8节点集群。我们有一个专用的主节点运行我们唯一的zookeeper实例。当我将配置单元配置为运行从主节点执行的本地hadoop时,从HBase检索数据没有问题。当我通过配置单元运行分布式map/reduce时,当从属节点连接到zookeeper时,我得到以下错误

HBase可以连接到ZooKeeper,但连接会立即关闭。这可能是服务器连接太多的迹象(默认为30个)

我们已尝试将最大连接数设置得更高(我们甚至尝试取消该限制)。这是一个用户很少的开发集群,我知道问题不在于连接太多(我可以使用./zkCli从从属节点连接到zookeeper)

服务器端日志表明会话已被客户端终止

客户端hadoop日志显示: '原因:org.apache.zookeeper.KeeperException$ConnectionLossException:KeeperErrorCode=ConnectionLoss for/hbase

你知道为什么我不能通过蜂巢地图/减少来维护与zookeeper的连接吗

hbase和zookeeper的配置为:

# Autogenerated by Cloudera SCM on Wed Dec 28 08:42:23 CST 2011
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper
clientPort=2181
maxClientCnxns=1000
minSessionTimeout=4000
maxSessionTimeout=40000
HBase站点XML为:

<property>
  <name>hbase.rootdir</name>
  <value>hdfs://alnnimb01:8020/hbase</value>
  <description>The directory shared by region servers. Should be fully-qualified to include the filesystem to use. E.g: hdfs://NAMENODE_SERVER:PORT/HBASE_ROOTDIR</description>
</property>

<property>
  <name>hbase.master.port</name>
  <value>60000</value>
  <description>The port master should bind to.</description>
</property>

<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
  <description>The mode the cluster will be in. Possible values are false: standalone and pseudo-distributed setups with managed Zookeeper true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)</description>
</property>


<property>
  <name>hbase.master.info.port</name>
  <value>60010</value>
  <description>The port for the hbase master web UI Set to -1 if you do not want the info server to run.</description>
</property>
















<property>
  <name>zookeeper.znode.parent</name>
  <value>/hbase</value>
  <description>Root ZNode for HBase in ZooKeeper. All of HBase's ZooKeeper files that are configured with a relative path will go under this node. By default, all of HBase's ZooKeeper file path are configured with a relative path, so they will all go under this directory unless changed.</description>
</property>

<property>
  <name>zookeeper.znode.rootserver</name>
  <value>root-region-server</value>
  <description>Path to ZNode holding root region location. This is written by the master and read by clients and region servers. If a relative path is given, the parent folder will be ${zookeeper.znode.parent}. By default, this means the root location is stored at /hbase/root-region-server.</description>
</property>


  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
    <description>The ZooKeeper client port to which HBase clients will     connect</description>
  </property>

  <property>
<name>hbase.zookeeper.quorum</name>
<value>alnnimb01.aln.experian.com</value>
<description>Comma separated list of servers in the ZooKeeper Quorum. For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".</description>

hbase.rootdir
hdfs://alnnimb01:8020/hbase
区域服务器共享的目录。应该完全有资格包含要使用的文件系统。例如:hdfs://NAMENODE_SERVER:PORT/HBASE_ROOTDIR
hbase.master.port
60000
端口主机应绑定到。
hbase.cluster.distributed
真的
群集将处于的模式。可能的值为false:带托管Zookeeper的独立和伪分布式设置true:带非托管Zookeeper仲裁的完全分布式(请参阅hbase env.sh)
hbase.master.info.port
60010
如果不希望运行信息服务器,则将hbase主web UI的端口设置为-1。
zookeeper.znode.parent
/糖化血红蛋白
ZooKeeper中HBase的根ZNode。所有配置了相对路径的HBase ZooKeeper文件都将位于该节点下。默认情况下,HBase的所有ZooKeeper文件路径都配置了相对路径,因此除非更改,否则它们都将位于该目录下。
zookeeper.znode.rootserver
根区域服务器
ZNode保持根区域位置的路径。这是由主机编写的,由客户端和区域服务器读取。如果给定了相对路径,则父文件夹将为${zookeeper.znode.parent}。默认情况下,这意味着根位置存储在/hbase/root region服务器上。
hbase.zookeeper.property.clientPort
2181
HBase客户端将连接到的ZooKeeper客户端端口
hbase.zookeeper.quorum
alnnimb01.aln.experian.com
ZooKeeper仲裁中以逗号分隔的服务器列表。例如,“host1.mydomain.com、host2.mydomain.com、host3.mydomain.com”。

结果表明,Hive提交的Map/Reduce正在尝试连接到“localhost”上的zookeeper,而不管zookeeper.qoorom在配置文件中是如何设置的。我将/etc/hosts更改为别名“localhost”,指向我的主节点的IP,并保持与zookeeper的连接。仍在寻找更好的解决方案,但这将暂时奏效。

很抱歉发布了新的答案。我想对上一个答案发表评论,但评论界面似乎消失了><

无论如何,我想说我遇到了同样的问题,通过/etc/hosts hack解决了这个问题,但这似乎是一个非常肮脏的解决方案

有没有人想出一个干净的解决办法


谢谢:)

我明白了。这是一个配置问题(正如我一直怀疑的那样)。解决办法是:

-在“hive site.xml”中设置“hbase.zookeeper.quorum”,并将其放置在“hadoop conf”目录中


让我恼火的是,hive-default.xml中没有“hbase.zookeeper.quorum”。我一直在玩“hive.zookeeper.quorum”,它不是要更改的正确配置。

我遇到了完全相同的问题。我所做的是使用下面的配置来启动hive cli,它工作正常

hive --hiveconf hbase.zookeeper.quorum={zk-host}
您应该将HBase配置为使用外部zookeeper,并将{zk host}替换为zookeeper的主机。 我仍然在寻找如何在使用jdbc访问配置单元时解决这个问题