Hadoop0.20.203.0的配置请参看:
网上使用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