HBase 在Ubuntu12.04下的安装 以及遇到问题解决

22 篇文章 0 订阅

HBase安装  

hadoop集群:

hadoop1.1.2

master   192.168.1.161

slave01  192.168.1.163

slave02  192.168.1.164

slave03  192.168.1.165

slave04  192.168.1.166

 

hbase版本: hbase0.94

 

1、修改hadoop hdfs-site.xml

dfs.datanode.max.xcievers  hbase操作时并发量很大,需要修改并发量,默认是1024

dfs.support.append 可以追加数据,添加保存时需要用到。

 

       <property>

               <name>dfs.support.append</name>

               <value>true</value>

       </property>

 

       <property>

               <name>dfs.datanode.max.xcievers</name>

              <value>4096</value>

       </property>

 

2、启动hadoop,查看进程hadoop进程

3、解压hbase0.94,我解压在与hadoop同一级目录

4、配置hbase/conf/hbase-env.sh

       exportJAVA_HOME=/usr/jdk1.7.25

       exportHBASE_MANAGES_ZK=true    hbase要用zookeeper来进行管理

5、配置hbase/conf hbase-site.xml

hbase.rootdir   设置hbasehdfs上的目录,和hadoop连接。主机名为hdfs的节点所在的主机

hbase.cluster.distributed  分布式,表明是完全分布式hbase集群

hbase.master  设置hbase的主机和端口

hbase.tmp.dir  hbase的临时文件目录

hbase.zookeeper.quorum  zookeeper的主机,建议使用单数

hbase.zookeeper.property.clientPort 设置zookeeper的端口,默认是2181

hbase.zookeeper.property.dataDir  设置zookeeper的存储目录

 

<configuration>

       <property>

               <name>hbase.rootdir</name>

               <value>hdfs://nistest.master:9000/hbase</value>

                <description>Thedirectory shared by region servers.</description>

       </property>

       <property>

                <name>hbase.master</name>

               <value>nistest.master</value>

       </property>

       <property>

               <name>hbase.master.port</name>

               <value>60000</value>

       </property>

       <property>

                <name>hbase.cluster.distributed</name>

                <value>true</value>

       </property>

       <property>

               <name>hbase.tmp.dir</name>

               <value>/usr/local/hadoop/hbase/tmp</value>

       </property>

       <property>

                <name>hbase.zookeeper.property.dataDir</name>

               <value>/usr/local/hadoop/zookeeper/data</value>

       </property>

       <property>

               <name>hbase.zookeeper.property.clientPort</name>

                <value>2181</value>

       </property>

       <property>

               <name>hbase.zookeeper.quorum</name>

               <value>nistest.node1,nistest.node2,nistest.node3,nistest.node4</value>

       </property></configuration>

 

6、配置regionservers,将region server添加到这个文件

Nistest.node1,nistest.node2,nistest.node3,nistest.node4

7、拷贝hadoop-core-1.2.1.jarhbase/lib目录下,覆盖旧的版本。

替换Hbase中的jar
需要用{HADOOP_HOME}下的hadoop-1.2.1-core.jar 替换掉{HBASE_HOME}/lib目录下的hadoop-core-0.20-append-r1056497.jar 。如果不替换jar文件Hbase启动时会因为hadoopHbase的客户端协议不一致而导致HMaster启动异常。报错如下:
localhost: Exception in thread "main"org.apache.hadoop.ipc.RPC$VersionMismatch: Protocolorg.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client = 42,server = 41)
所以如果遇到以上错误,就通过替换jar包解决。

并把~/hadoop/conf/hdfs-site.xml拷贝至~/hbase/conf/目录下。

8、将hbase复制到各个节点

      scp -r hbase hadoop@nistest.node1:/usr/local/hadoop

     

9、启动hbase

       bin/start-hbase.sh

10、查看进程

查看各节点上进程:

 jps

 

11hbase web界面 http://master:60010


如果此时不能访问那有可能是hadoop没有离开安全模式的原因,此时

 当在hbase shell下创建表时,出现MasterNotRunningException异常,list、get等不能正常执行,通过Java API同样不能创建表,究其原因在于分布式文件系统处于安全模式状态下,执行 hadoop dfsadmin-safemode leave,重新启动hbase,问题即可解决。

  Hadoop分布式文件系统为什么不自动退出安全模式呢?就让我们来看一下Hadoop安全模式吧。

  namenode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例(datanode通过心跳包上报的block块数达到元数据记录的block块数的0.9990,系统会自动退出安全模式),则系统会一直处于安全模式状态即只读状态。默认情况下dfs.safemode.threshold.pct的值为0.999f。关于安全模式的命令:

  hadoop dfsadmin -safemode get(获取安全模式是否开启)

  hadoop dfsadmin -safemode leave(强制退出)

  hadoop dfsadmin -safemode enter(进入)

  hadoop dfsadmin -safemode wait(一直等待直到退出安全模式)

 

11hbase操作:

       bin/habseshell

        list

        create'user','f1','2','f3'

 

Hbase Shell 练习

shell连接你的Hbase

$ ./bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version: 0.90.0, r1001068, Fri Sep 24 13:55:42 PDT 2010
 
hbase(main):001:0> 

输入 help 然后 <RETURN> 可以看到一列shell命令。这里的帮助很详细,要注意的是表名,行和列需要加引号。

创建一个名为 test 的表,这个表只有一个columnfamily  cf。可以列出所有的表来检查创建情况,然后插入些值。

hbase(main):003:0> create 'test', 'cf'
0 row(s) in 1.2200 seconds
hbase(main):003:0> list 'table'
test
1 row(s) in 0.0550 seconds
hbase(main):004:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0560 seconds
hbase(main):005:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0370 seconds
hbase(main):006:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0450 seconds

以上我们分别插入了3行。第一个行keyrow1, 列为 cf:a值是 value1Hbase中的列是由 columnfamily前缀和列的名字组成的,以冒号间隔。例如这一行的列名就是a.

检查插入情况.

Scan这个表,操作如下

hbase(main):007:0> scan 'test'
ROW        COLUMN+CELL
row1       column=cf:a, timestamp=1288380727188, value=value1
row2       column=cf:b, timestamp=1288380738440, value=value2
row3       column=cf:c, timestamp=1288380747365, value=value3
3 row(s) in 0.0590 seconds

Get一行,操作如下

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

disable drop 这张表,可以清除你刚刚的操作

hbase(main):012:0> disable 'test'
0 row(s) in 1.0930 seconds
hbase(main):013:0> drop 'test'
0 row(s) in 0.0770 seconds 

关闭shell

hbase(main):014:0> exit

在安装中出现的问题:

1

./start-hbase.sh启动HBase后,执行hbaseshell
# bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Version: 0.20.6, rUnknown, Thu Oct 28 19:02:04 CST 2010
接着创建表时候出现如下情况:hbase(main):001:0>create 'test',''c
NativeException: org.apache.hadoop.hbase.MasterNotRunningException:null

jps下,发现主节点上HMaster没有启动,查理HBaseloglogs/hbase-hadoop-master-ubuntu.log)里有下面异常:
FATAL org.apache.hadoop.hbase.master.HMaster: Unhandled exception.Starting shutdown.
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.jarhbase_home/lib下。

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

再用./start-hbase.sh启动HBase后,jps下,发现主节点上HMaster还是没有启动,在HBaselog里有下面异常:
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
果断给他加一个commons-configuration包,
hadoop_home/lib下面cp一个hadoop/lib/commons-configuration-1.6.jarhbase_home/lib下。

(集群上所有机子的hbase配置都需要一样)

注意事项:

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

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

 

PS:遇到问题时,先查看logs,很有帮助。

HBase 官方文档,全面介绍hbase安装配置:

http://www.yankay.com/wp-content/hbase/book.html#hbase_default_configurations

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值