伪分布式模式安装HBase和ZooKeeper

第一步:安装单机ZooKeeper

1.在namenode机器下,配置zookeeper,先解压安装包,使用命令:

tar -zxvf zookeeper-3.4.4.tar.gz  

 2.进入zookeeper的配置目录,首先把zoo_sample.cfg重命名一下,可以重新复制一遍,使用命令:

cp zoo_sample.cfg  zoo.cfg 

3.配置zoo.cfg

dataDir=/usr/local/zookeeper/dataDir
dataLogDir=/usr/local/zookeeper/dataLogDir

server.1 = ubuntu-131:7000:7001  (ubuntu-131:这是linux的hostname)

4、验证是否安装成功

./zkServer.sh status

返回图上所示,表示安装成功。 

第二步:安装Hbase

1.解压缩hbase的软件包,使用命令:

tar -zxvf hbase-0.94.2.tar.gz  

2、进入hbase的配置目录,在hbase-env.sh文件里面加入java环境变量.即

export JAVA_HOME=/usr/lib/jvm/jdk1.8

加入变量,不使用Hbase自带的Zookeeper:

export  HBASE_MANAGES_ZK=false

3、你确认HDFS安装成功之后,编辑hbase-site.xml ,添加配置文件:

<!该属性是指HBase在HDFS中使用的目录的位置,让namenode 监听locahost的9000端口,只有一份数据拷贝-->
    <property>
                <name>hbase.rootdir</name>
                <value>hdfs://192.168.124.131:9000/hbase</value>
    </property>
    <property>
                <name>dfs.replication</name>
                <value>1</value>
    </property>
    <!-- 此处必须为true,不然hbase仍用自带的zk,若启动了外部的zookeeper,会导致冲突,hbase启动不起来 -->
    <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
    </property>
    <!-- zk的位置 -->
    <property>  
            <name>hbase.zookeeper.quorum</name>  
            <value>ubuntu-131</value>  
    </property> 
    <!-- hbase主节点的位置 -->
    <property>
        <name>hbase.master</name>
        <value>192.168.124.131:60000</value>
    </property>
    <property>
         <name>zookeeper.znode.parent</name>
         <value>/hbase/master</value>
    </property>

4、拷贝zookeeper conf/zoo.cfg到hbase的conf/下。

5、在regionservers加入ubuntu-131 。(hostname)

第三步:启动报错error: KeeperErrorCode = NoNode for /hbase/master

搭建完集群之后,在hbase shell中查看表,出现error: KeeperErrorCode = NoNode for /hbase/master

1. 查看日志,是因为zookeeper启动后又自动关闭了。为什么会出现这个问题呢?是因为原来是因为zoo.cfg里的data目录是配置在/tmp下的,这目录是会定时清空的,因此,需要更改该目录,我的设置为/usr/local/work/zkdata。重新启动zookeeper。

2. 若问题还未解决,则可能是hbase中的zookeeper设置不成功。编辑hbase-2.1.0/conf/hbase-site.xml,加入配置:

<property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
    </property>

因为远程hbase配置默认为/hbase路径。

3. 若问题还未解决,说明zookeeper未重启成功,删除zk数据目录下之前生成的version-2文件夹,即可。

4.总结:反正出现该问题,不是hbase本身问题,而是zookeeper的影响,因为zookeeper是监控整个hbase节点状态,控制hbase集群通信的重要工具。

第四步启动:

1、bin目录下:

./start-hbase.sh

2、./hbase shell (进入hbase的shell界面)

3、status命令测试是否成功:

返回如上说明服务启动成功。如果启动失败,注意查看相关日志,找出失败原因。

4、简单命令操作:

创建一个名为 test 的表,这个表只有一个 列族 为 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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值