Database HBase错误-分配根-失败

Database HBase错误-分配根-失败,database,nosql,hadoop,hbase,cloudera,Database,Nosql,Hadoop,Hbase,Cloudera,我刚刚从cloudera(3)安装了hadoop和hbase,但当我尝试使用它时,它只是坐在那里不停地加载 我可以很好地进入区域服务器。。。查看主hbase服务器日志,我可以看到以下内容 看起来根区域有问题 所有这些都安装在运行Ubuntu(Natty)11的ext4 1TB分区上。无群集/其他框) 任何帮助都会很好 11/05/15 19:58:27 WARN master.AssignmentManager: Failed assignment of -ROOT-,,0.70236052 t

我刚刚从cloudera(3)安装了hadoop和hbase,但当我尝试使用它时,它只是坐在那里不停地加载

我可以很好地进入区域服务器。。。查看主hbase服务器日志,我可以看到以下内容

看起来根区域有问题

所有这些都安装在运行Ubuntu(Natty)11的ext4 1TB分区上。无群集/其他框)

任何帮助都会很好

11/05/15 19:58:27 WARN master.AssignmentManager: Failed assignment of -ROOT-,,0.70236052 to serverName=localhost,60020,1305452402149, load=(requests=0, regions=0, usedHeap=24, maxHeap=995), trying to assign elsewhere instead; retry=0
org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed setting up proxy interface org.apache.hadoop.hbase.ipc.HRegionInterface to /127.0.0.1:60020 after attempts=1
    at org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:355)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:957)
    at org.apache.hadoop.hbase.master.ServerManager.getServerConnection(ServerManager.java:606)
    at org.apache.hadoop.hbase.master.ServerManager.sendRegionOpen(ServerManager.java:541)
    at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:901)
    at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:730)
    at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:710)
    at org.apache.hadoop.hbase.master.AssignmentManager$TimeoutMonitor.chore(AssignmentManager.java:1605)
    at org.apache.hadoop.hbase.Chore.run(Chore.java:66)
Caused by: java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
    at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
    at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:408)
    at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.setupIOstreams(HBaseClient.java:328)
    at org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:883)
    at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:750)
    at org.apache.hadoop.hbase.ipc.HBaseRPC$Invoker.invoke(HBaseRPC.java:257)
    at $Proxy6.getProtocolVersion(Unknown Source)
    at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:419)
    at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:393)
    at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:444)
    at org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:349)
    ... 8 more
11/05/15 19:58:27 WARN master.AssignmentManager: Unable to find a viable location to assign region -ROOT-,,0.70236052

修复了其他发现此问题的人的此问题。主机文件(/etc/hosts)有问题。需要删除与127.0.1.1 COMPNAME相关的条目-只需在此行前面放置一个散列(#),然后重新启动所有hadoop和hbase服务


关于解决方案的更多信息:

如果您发现自己处于无法编辑/etc/hosts的情况,请执行以下操作 解决办法也将起作用:

在conf/hadoop-env.sh中添加以下行:

export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

(删除编辑,作为单独答案移动)

您的主机文件应如下所示

#127.0.0.1  localhost
#127.0.1.1  ubuntu.ubuntu-domain    ubuntu
192.168.2.100   ubuntu
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
此文件可以在/etc/hosts中找到

问候 Shuja

根据@Manav:


如果您发现自己处于无法编辑/etc/hosts的情况下,以下>解决方案也将起作用:

在conf/hadoop-env.sh中添加以下行:

export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
我正在使用Ubuntu11.10(Oneiric)和HBase 0.92.1。以下步骤修复了我的单服务器安装问题:

  • 编辑
    /etc/hosts
    :更改与主机名关联的IP地址,使其使用您的LAN IP,而不是
    127.0.0.1
  • 打开
    /conf/hbase env.sh
  • 编辑HBASE\u选项,追加
    -Djava.net.preferIPv4Stack=true
    。这条线应该是这样的:

    export HBASE_OPTS=“-XX:+useConMarkSweepGC-Djava.net.preferIPv4Stack=true”

  • 重新启动HBase


  • 如果你不愿意改变
    /etc/hosts
    (因为Ubuntu已经这么做了),这里还有另一个适合我的工作

    如前所述,核心问题是环回接口绑定了多个IP,而hbase假定只有一个IP。由此产生的不匹配会导致主机在实际侦听另一个IP(127.0.1.1,绑定到主机声明的FQDN的IP)时,认为某个区域服务器有一个IP(127.0.0.1)

    删除
    /etc/hosts
    条目是恢复“一个接口一个IP”假设的一种方法。将
    /etc/hosts
    中的
    127.0.1.1
    替换为“真正的”永久IP是另一种选择。最后,另一个方法是创建一个新接口:将其放在
    /etc/network/interfaces
    的底部:

    # Bind an interface solely for the default host FQDN IP, to fix reverse dns
    auto eth0.1
    iface eth0.1 inet static
    pre-up ip link add eth0.1 name eth0.1 type bridge
    address 127.0.1.1
    netmask 255.255.255.0
    
    然后,您应该能够
    sudoifupeth0.1
    并在
    ifconfig
    中查看它。重新启动hbase&您应该准备好了

    如果您碰巧已经在使用
    eth0.1
    选择另一个插槽(即
    eth0.2
    ),这不重要


    EDIT:“使用
    lo:0
    对我来说也很有效,而且更优越,因为环回总是可用的。”。在这种情况下,
    pre-up
    行也显得不必要。

    子接口的技巧对我很有效,但我使用了环回接口而不是eth0,因为eth0在我的机器(外部适配器)上并不总是可用,我希望它由NetworkManager管理(如果在ubuntu 13.04的/etc/network/interfaces中定义了eth0.1,则拒绝管理eth0)

    相关片段:

    auto lo:0
    iface lo:0 inet static
    address 127.0.1.1
    netmask 255.255.255.0
    
    除了常规的

    auto lo
    iface lo inet loopback  
    

    当然

    在您的主机文件中将主机地址从127.0.1.1更改为127.0.0.1

    只是强调一下,127.0.*.1*.1应该从/etc/hosts中注释掉,127.0.0.1本地主机可以保留在那里。很可能您确实想保留本地主机名的记录,而且127.0.0.1似乎与hbase.Ubuntu配合得很好将该条目作为GNOME(和)的一项要求放在/etc/hosts中。不要仅仅删除它,而是尝试用另一个永久IP替换它。+1其他答案没有真正起作用,这似乎是Doug最明智的回答。这为我在macox上修复了它。8使用自制hbase。可能是