hbase集群配置

来源:互联网 发布:java基础笔记 编辑:程序博客网 时间:2024/05/23 01:36

环境

hbase-0.90.4

hadoop-0.20.2

zookeeper3.3.3

三台机器

master 192.168.1.90 (master,namenode secondnamenode)

slaver1 192.168.1.92 

slaver2  192.168.1.93

环境变量

在/etc/profile增加

export HADOOP_HOME=/webapp/nosql/hadoop-0.20.2
export JAVA_HOME=/webapp/jdk1.6.0_22
export HBASE_HOME=/webapp/nosql/hbase-0.90.4

配置文件

hbase-env.sh

hbase-site.xml

regionservers

hbase-env.sh设置hbase环境变量

hbase-site.xml设置hbase相关参数就在该文件

regionservers指定region server列表,用机器名

修改hbase-env.sh

 export JAVA_HOME=java home目录

export HBASE_CLASSPATH=hadoop的conf目录

 export HBASE_MANAGES_ZK=false //设置zookeeper不由hbase管理

修改hbase-site.xml

<property>
     <name>hbase.master</name>  //master机器名
     <value>master</value>
   </property>
   <property>
     <name>hbase.rootdir</name>
     <value>hdfs://master:54310/hbase</value>  //与fs.default.name设置的机器名与端口一致
   </property>
   <property>
     <name>hbase.zookeeper.quorum</name>
     <value>master,slaver1,slaver2</value>  //必须为奇数与zookeeper机制有关
   </property>
   <property>
     <name>hbase.cluster.distributed</name>
     <value>true</value>
   </property>
  <property>
<name>zookeeper.session.timeout</name>
<value>60000000</value>
</property>
<property>
<name>hbase.zookeeper.property.clientport</name>
<value>2181</value>//必须与zoo.cfg中的配置一致
</property>

regionservers文件加入

slaver1

slaver2 //注意是机器名

将整个hbase的目录scp到每个regionserver机器

zookeeper配置

创建zookeeper data目录

mkdir zookeeper

进入$ZOOKEEPER_HOME/conf

修改zoo_sample.cfg为zoo.cfg

mv zoo_sample.cfg zoo.cfg

修改zoo.cfg

增加如下内容

server.1=master:2888:3888

server.2=slaver1:2888:3888
server.3=slaver2:2888:3888

修改dataDir=刚才创建的zookeeper目录

在zookeeper目录中创建一个myid文件

touch myid

设置myid的内容为

server.X=slaver1:2888:3888
中的server后的X

比如master中就应是1

zookeeper配置完成

将zookeeper scp到每个节点

不要忘记修改myid的值

启动hbase集群

./start-all.sh //启动hadoop

./zkServer.sh start //在每个机器上启动zookeeper

./start-hbase.sh //启动hbase

停止hbase集群

./stop-hbase.sh

./zkServer.sh stop

./stop-all.sh

常见问题

org.apache.hadoop.ipc.RPC$VersionMismatch: Protocol org.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client = 42, server = 41)

处理方法

删除把hbase-0.90.3/lib中的hadoop-core-0.20-append-r1056497.jar

将hadoop core.jar ant.jar tools.jar拷贝到hbase/lib下就ok

master-desktop:/opt/hbase-0.90.4/bin$ ./hbase shell //进入hbase 命令行

创建表

hbase(main):006:0> create 'test', 'cf'
0 row(s) in 2.5190 seconds

查看表

list

插入数据

hbase(main):007:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.1160 seconds

hbase(main):008:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0130 seconds

查看数据

hbase(main):009:0> scan 'test'
ROW                                           COLUMN+CELL                                                                                                                        
 row1                                         column=cf:a, timestamp=1320653219927, value=value1                                                                                 
 row2                                         column=cf:b, timestamp=1320653236889, value=value2                                                                                 
2 row(s) in 0.0480 seconds

查询指定行

hbase(main):010:0> get 'test', 'row1'
COLUMN                                        CELL                                                                                                                               
 cf:a                                         timestamp=1320653219927, value=value1                                                                                              
1 row(s) in 0.0150 seconds

删除test

hbase(main):011:0> disable 'test'
0 row(s) in 2.0520 seconds


hbase(main):012:0> drop 'test'
0 row(s) in 1.2670 seconds

退出shell

hbase(main):013:0> exit

关闭hbase 

./stop-hbase.sh

相关错误

java.io.IOException: Call to node1/10.64.56.76:49002 failed on local exception: java.io.EOFException

从hadoop_home/下面cp一个hadoop/hadoop-core-0.20.203.0.jar到hbase_home/lib下。

因为Hbase建立在Hadoop之上,所以他用到了hadoop.jar,这个Jar在 lib 里面。这个jar是hbase自己打了branch-0.20-append 补丁的hadoop.jar. Hadoop使用的hadoop.jar和Hbase使用的 必须 一致。所以你需要将 Hbaselib 目录下的hadoop.jar替换成Hadoop里面的那个,防止版本冲突。比方说CDH的版本没有HDFS-724而branch-0.20-append里面有,这个HDFS-724补丁修改了RPC协议。如果不替换,就会有版本冲突,继而造成严重的出错,Hadoop会看起来挂了。

java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration
解决:
在NoClassDefFoundError,缺少 org/apache/commons/configuration/Configuration 
果断给他加一个commons-configuration包,
从hadoop_home/lib下面cp一个hadoop/lib/commons-configuration-1.6.jar到hbase_home/lib下。


 1)、先启动hadoop后,再开启hbase
 2)、去掉hadoop的安全模式:hadoop dfsadmin -safemode leave
 3)、把/etc/hosts里的ubuntu的IP改为服务器当前的IP
 4)  、确认hbase的hbase-site.xml中
                  <name>hbase.rootdir</name>
                 <value>hdfs://node:49002/hbase</value>
         与hadoop的core-site.xml中
                   <name>fs.default.name</name>
                  <value>hdfs://node:49002/hbase</value>
       红字部分保持一致
      <value>hdfs://localhost:8020/hbase</value>

 6)、重新执行./start-hbase.sh之前,先kill掉当前的hbase和zookeeper进程



原创粉丝点击