• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
My Blog@github像少年啦飞驰
{关注大规模数据处理(MapReduce)J2EE等技术}
博客园    首页    新随笔    联系   管理    订阅  订阅
Hadoop0.20.203.0+Hbase0.90.4完全分布式配置

Hadoop0.20.203.0的配置请参看:http://www.cnblogs.com/flyoung2008/archive/2011/11/29/2268302.html

网上使用Hadoop0.20.203.0+Hbase0.90.4的完全分布式配置很少,折腾了几天才搞定。现在作个记录。

一、安装准备

1、下载hbase0.90.4

2、默认前提已经安装好hadoop

namenode 192.168.1.101  主机名:centos1

datanode 192.168.1.103    主机名:centos2

datanode 192.168.1.104    主机名:centos3

二、操作步骤(默认在namenode上进行)

1、在/home/grid 下 解压hbase0.90.4

tar -zxvf  hbase-0.90.4.tar.gz

2、修改/home/grid/hbase-0.90.4/conf/hbase-env.sh文件

export HBASE_OPTS="-ea -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"
export JAVA_HOME=/usr/java/jdk1.6.0_29
export HBASE_MANAGES_ZK=true
export HBASE_HOME=/home/grid/hbase-0.90.4
export HADOOP_HOME=/home/grid/hadoop-0.20.203.0

3、修改/home/grid/hbase-0.90.4/conf/hbase-site.xml文件,内容如下

注意点:

 1.其中首先需要注意hdfs://centos1:9000/hbase这里,必须与你的Hadoop集群的core-site.xml文件配置保持完全一致才行,如果你Hadoop的hdfs使用了其它端口,请在这里也修改。再者就是Hbase该项并不识别机器IP,只能使用机器hostname才可行,即若使用centos1的IP(192.168.1.101)是会抛出java错误。

 2.hbase.zookeeper.quorum 的个数必须是奇数。

<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://centos1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>192.168.1.101:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.1.101,192.168.1.103,192.168.1.104</value>
</property>
</configuration>

4、修改home/grid/hbase-0.90.4/conf/regionservers(同hadoop的slaves文件)

 

192.168.1.103
192.168.1.104

5、将hbase-0.90.4分发到其他机器上

 

scp -r hbase-0.90.4 centos2:/home/grid
scp -r hbase-0.90.4 centos3:/home/grid

6、启动hbase(前提:hadoop已经启动)

注意点:

1、因为Hbase建立在Hadoop之上,所以他用到了hadoop.jar,这个Jar在 lib 里面。这个jar是hbase自己打了branch-0.20-append 补丁的hadoop.jar. Hadoop使用的hadoop.jar和Hbase使用的 必须 一致。

所以你需要将 Hbase lib 目录下的hadoop.jar替换成Hadoop里面的那个,防止版本冲突。如果不替换,就会有版本冲突,继而造成严重的出错,Hadoop会看起来挂了。

把hbase_home/lib(启动的时候会加载里面所有jar) 下的hadoop-core-0.20-append-r1056497.jar rm 掉,再cp hadoop_home下的hadoop-core-0.20.203.0.jar到lib中

2011-12-01 16:57:06,174 FATAL org.apache.hadoop.hbase.master.HMaster: Unhandled exception. Starting shutdown.
java.io.IOException: Call to centos1/192.168.1.101:9000 failed on local exception: java.io.EOFException
        at org.apache.hadoop.ipc.Client.wrapException(Client.java:775)
        at org.apache.hadoop.ipc.Client.call(Client.java:743)
        at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220)
        at $Proxy5.getProtocolVersion(Unknown Source)
        at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:359)
        at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:113)
        at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:215)
        at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:177)
        at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:82)
        at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1378)
        at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:66)
        at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1390)
        at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:196)
        at org.apache.hadoop.fs.Path.getFileSystem(Path.java:175)
        at org.apache.hadoop.hbase.util.FSUtils.getRootDir(FSUtils.java:364)
        at org.apache.hadoop.hbase.master.MasterFileSystem.<init>(MasterFileSystem.java:81)
        at org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:346)
        at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:282)
Caused by: java.io.EOFException
        at java.io.DataInputStream.readInt(DataInputStream.java:375)
        at org.apache.hadoop.ipc.Client$Connection.receiveResponse(Client.java:501)
        at org.apache.hadoop.ipc.Client$Connection.run(Client.java:446)

2、2011-12-01 16:57:06,174 FATAL org.apache.hadoop.hbase.master.HMaster: Unhandled exception. Starting shutdown.
java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration

现在NoClassDefFoundError,缺少 org/apache/commons/configuration/Configuration
从hadoop_home/lib下面cp一个commons-configuration-1.6.jar到hbase_home/lib下

 

 

1、通过shell脚本启动hbase。进入/home/grid/hbase-0.90.4

 

bin/start-hbase.sh

 

使用jps命令查看,出现如下进程说明启动成功,否则看日志排错
17481 JobTracker
17388 SecondaryNameNode
21698 HMaster
17221 NameNode
21639 HQuorumPeer
21846 Jps

2、进入/home/grid/hbase-0.90.4/bin目录,执行hbsae shell命令,进入hbase控制台,显示如下。

 

[grid@centos1 conf]# hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Version: 0.20.5, r956266, Sat Jun 19 12:25:12 PDT 2010
hbase(main):001:0> 

 

   3、在hbase控制台输入list命令,如果正常执行,表示hbase启动成功。如下:

 

hbase(main):001:0> list
0 row(s) in 0.0610 seconds
hbase(main):002:0> 

 

4、WEB查看hbase

 

查看Master http://192.168.1.101:60010/master.jsp
查看Region Server http://192.168.1.103:60030/regionserver.jsp
查看ZK Tree http://192.168.1.101:60010/zk.jsp



三、一些问题

1、hbase中服务器时间不同步造成的regionserver启动失败

Caused by: org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.hbase.ClockOutOfSyncException: Server s3,60020,1304927875246 has been rejected; Reported time is too far out of sync with master.  Time difference of 41450ms > max allowed of 30000ms

1.方案1
在hbase-site.xml添加配置
<property>
        <name>hbase.master.maxclockskew</name>
        <value>180000</value>
        <description>Time difference of regionserver from master</description>
 </property>

2.方案2

错误里指出节点机的时间和master的时间差距大于30000ms,就是30秒时无法启动服务。
修改各结点时间,使其误差在30s内

要配置服务器时间同步需要用到ntp,最好能连接外网的时间服务器。内网里面配起来比较麻烦点,所以就手动改了时间,再启动就可以了。

这个比较实用:
yum install ntp
安装后执行
ntpdate cn.pool.ntp.org
即可同步国际时间..
开机后自动同步时间:
vi /etc/rc.d/rc.local中,最下面添加
ntpdate cn.pool.ntp.org

2、region不等于0的regionserver,web可以访问, 等于0的就不行吗?!(未解决)

Region Servers

 AddressStart CodeLoad
centos2:60030 1322830078520 requests=0, regions=2, usedHeap=29, maxHeap=993
centos3:60030 1322830078818 requests=0, regions=0, usedHeap=26, maxHeap=993


参考的资料:

Hbase官方文档:http://www.yankay.com/wp-content/hbase/book.html
http://www.blogjava.net/ivanwan/archive/2011/01/21/343345.html

http://www.cnblogs.com/ventlam/archive/2011/01/22/HBaseCluster.html

http://liuskysun.blog.163.com/blog/static/9981297820117235326161/

http://taoo.iteye.com/blog/1207460

http://javoft.net/2011/09/hbase-hmaster-%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8-call-to-failed-on-local-exception/

作者:像少年啦飞驰
出处:http://www.cnblogs.com/flyoung2008/
Blog:http://www.flyoung.me
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
分享到: 更多
posted on 2011-12-02 22:23  像少年啦飞驰  阅读(2816)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3