关于在hadoop上以分布式模式运行的hbase

Posted

技术标签:

【中文标题】关于在hadoop上以分布式模式运行的hbase【英文标题】:regarding hbase running on hadoop in distributed mode 【发布时间】:2014-11-03 10:36:17 【问题描述】:

Hadoop 版本=2.4.1 hbase 版本=0.98.6

我已经在下面的 conf 中启动了 hadoop 并运行得非常好: 107.108.86.119-hadoop namenode,SecondaryNameNode 107.109.155.100-datanode1 107.109.155.102-datanode2

现在我安装 hbase 如下 conf:- 107.108.86.114:-hmaster,HQuorumPeer 107.109.155.100-regionserver1 107.109.155.102-regionserver2

当我执行 jps 时,以下进程正在运行: 107.109.155.102:-hregionserver,datanode 107.109.155.100:-hregionserver,datanode 107.108.86.119:-NameNode,secondaryNameNode 107.108.86.114:-hmaster

但是在 hbase shell 上执行状态显示“0 个服务器,0 个死机,NaN 平均负载” 在 hbase shell 上输入 cmd 时显示 ERROR: java.io.IOException: Table Namespace Manager not ready, 请稍后再试

在 regionserver 上的日志显示: regionserver.HRegionServer:reportForDuty to master=localhost,60000,1415007213689,​​端口=60020,startcode=1415007215055 regionserver.HRegionServer:错误告诉主人我们已经启动了

我的 hbase-site.xml-

<property>
    <name>hbase.master</name>
    <value>107.108.86.114:60000</value>
</property>
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://push-mcd2:54310/hbase</value>
</property>
<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property> 
<property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
 </property>
<property>
      <name>hbase.zookeeper.quorum</name>
      <value>107.108.86.114</value>
</property> 

而 hmaster 的 /etc/hosts 是:

127.0.0.1   localhost arpita-ubuntu 
127.0.1.1       arpita-ubuntu
107.109.155.100 push-ws1
107.109.155.102 push-ws2 
107.108.86.114  push-mcd1 
107.108.86.119  push-mcd2 

WHILE slaves 文件也和上面一个差不多。

conf/hbase-env.sh

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.22 export HBASE_CLASSPATH=/home/hadoop/hadoop-0.20.2/conf export HBASE_MANAGES_ZK=true

所以我做了什么改变,所以 hbase 将在上面的集群上运行

【问题讨论】:

【参考方案1】:

为什么您的 regionserver 日志提到它正在 localhost 上寻找 HBase Master? 上面的表格信息你已经在一个不同的节点上为两个区域服务器设置了 Master,请检查你在每个节点上的配置是否正确。

在 regionserver 上的日志显示:regionserver.HRegionServer: reportForDuty to ma​​ster=localhost,60000,1415007213689 with port=60020, startcode=1415007215055 regionserver.HRegionServer:报错 主人,我们起来了

在每个节点的 /etc/hosts 中,请更新前两行

127.0.0.1   localhost arpita-ubuntu 
127.0.1.1       arpita-ubuntu

127.0.0.1   localhost
<Actual_IP_Address_for_Host>   arpita-ubuntu

如果您没有自动 dns 名称解析,这是必要的。

另外,请在所有配置设置中使用 IP 而不是 localhost。

如果您仍然遇到问题,请检查相应的端口是否打开。

希望对你有所帮助。

【讨论】:

我尝试了上面的修改,但是没有用。我注意到的事情是在主机本身上,它在“telnet localhost 60000”上监听 60000 端口,但在给机器 ip(“telnet 107.108.86.114 60000”)时却无法连接。你能帮忙吗? 您的 IP 地址是由 dhcp 服务分配的,还是您通过 /etc/hosts 手动配置的,如果您手动完成,您可以分享 HBase Master 和 Regionservers 的 /etc/hosts 条目吗? /c 你的集群是在ubuntu上搭建的吗? 抱歉延迟回复。是的,我的集群在 ubuntu 上。我通过 /etc/hosts 分配了 IP。你可以在上面的编辑中看到主机和从机的主机文件 你能把hosts文件中的“127.0.0.1 localhost arpita-ubuntu”改成“127.0.0.1 localhost”并删除下一行“127.0.1.1 arpita-ubuntu”,你也能做到吗?从您的区域服务器通过 IP 对您的 hmaster 进行 ssh?

以上是关于关于在hadoop上以分布式模式运行的hbase的主要内容,如果未能解决你的问题,请参考以下文章

HBase表数据分页处理

HBase入门基础教程 HBase之单机模式与伪分布式模式安装

大数据分析技术:hadoop伪分布模式安装

HBase基础教程1HBase之单机模式与伪分布式模式安装(转)

Hadoop环境搭建

用于日志分析的 Map Reduce 作业未在 Hadoop 2.7.3 伪分布式模式下运行