HBase的安装配置

zookeeper概述

ZooKeeper是一个分布式的,开源的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 ZooKeeper包含一个简单的原语集,提供Java和C的接口。 ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,其中分布锁和队列有Java和C两个版本,选举只有Java版本。 ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader (领导者),只有leader才能提交proposer,具体算法可见Fast Paxos。因此,要想弄懂ZooKeeper首先得对Fast Paxos有所了解。 ZooKeeper的基本运转流程: 1、选举Leader。 2、同步数据。 3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。 4、Leader要具有最高的执行ID,类似root权限。 5、集群中大多数(n/2+1)的机器得到响应并follow选出的Leader。 在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据。如果在创建znode时Flag设置为EPHEMERAL,那么当创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在在Zookeeper里,Zookeeper使用Watcher察觉事件信息。当客户端接收到事件信息,比如连接超时、节点数据改变、子节点改变,可以调用相应的行为来处理数据。Zookeeper的Wiki页面展示了如何使用Zookeeper来处理事件通知,队列,优先队列,锁,共享锁,可撤销的共享锁,两阶段提交。

以上是百度百科的解释。自己的理解就是在单机环境中各运行实体即进程可以使用各种同步机制(来自语言包或者是处理器提供的硬件机制)保证执行流程的协同合规。而在分布式环境下受网络的异构环境影响,同步实现比较困难。因此将同步仲裁功能使用zookeeper完成,把符合发布/订阅模型的同步数据放到zookeeper中,由leader存储的数据为准,而一旦数据发生改变,则所有的fellower进行同步。

各个zookeeper服务器地位相同,无主从之分,角色分为leader和fellower。

zookeeper安装过程

1.下载一个稳定的,与hbase版本兼容的zookeeper的归档包。并且在Hadoop文件夹下解压。 2.建立zookeeper的数据文件夹。 3.在该文件夹下建立文件myid,名称固定,内容为一个数字,设为X,最好从0开始。 4.进入zookeeper的conf文件夹,复制一份zoo_sample.cfg为zoo.cfg。 5.相关配置项说明
配置名 说明
initLimit 10 初始化同步的时间单位倍数
syncLimit 5 发送请求和接收回应的时间单位倍数
dataDir /home/mirancy/hadoop2.6/zookeeperdata 就是第二步建立的文件夹路径,存储快照
client 2181 客户端连接的端口
server.ID 10.8.3.10:20000:20001 ID为对应ip的myid文件中的值。20000是与leader通信的端口。20001是参加leader选举的端口。
server.ID 10.8.3.11:20000:20001
server.ID 10.8.3.12:20000:20001

6.将文件分发到所有一共奇数个zookeeper节点上。可以使用scp或者rsync都可以。

7.在每台机器上分别启动zookeeper。
bin/zkService start
之后使用jps查看相应的启动进程。也可以用
bin/zkService status
查看当前服务器的角色。
使用 bin/zkService stop 关闭服务器。

  1. zookeeper的log输出在安装目录的out文件中。

  2. 使用chkconfig iptables off 关闭防火墙。

  3. 使用date -s 命令把各个主机时间设置的足够接近,否则启动zookeeper会有可能因为时间相差太大拒绝连接。


hbase安装和配置过程

1.下载一个与当前hadoop版本兼容的hbase版本(参考[版本兼容说明](http://wiki.apache.org/hadoop/Distributions%20and%20Commercial%20Support)),或者使用当前的hadoop/share下的jar包替换hbase的lib文件夹中的jar包(并修改权限),否则会出现各种不知名的问题。然后在Hadoop文件夹下解压。 2.一个分布式运行的Hbase依赖一个zookeeper集群。所有的节点和客户端都必须能够访问zookeeper。默认的情况下Hbase会管理一个zookeep集群。这个集群会随着Hbase的启动而启动。当然,你也可以自己管理一个zookeeper集群,但需要配置Hbase。你需要修改conf/hbase-env.sh里面的HBASE_MANAGES_ZK 来切换。这个值默认是true的,作用是让Hbase启动的时候同时也启动zookeeper.

让Hbase使用一个现有的不被Hbase托管的Zookeep集群,需要设置 conf/hbase-env.sh文件中的HBASE_MANAGES_ZK 属性为 false。修改conf/hbase-env.sh文件。

配置名 说明
java_home
HBASE_MANAGES_ZK true 让hbase托管zookeeper
HBASE_CLASSPATH
HBASE_LOG_DIR hbase的log目录

3.修改conf/hbase-site.xml文件。

配置名 说明
hbase.rootdir hdfs://Master:9000/hbase hbase在hdfs上的存储目录,而不是本地目录,hbase依赖hdfs存储,之前把这个写错了。目录要事先建立好。这个值等于hdfs的namenode地址,即core-site.xml中fs.defaultFS的值
hbase.cluster.distributed true 开启集群模式
hbase.zookeeper.property.clientPort 2181 zookeeper的客户端连接端口,hbase依赖于zookeeper。这个值等于zoo.cfg的clientPort值
hbase.master Master:60000 hbase主节点的地址
hbase.zookeeper.quorum Master,slave1,slave2 zookeeper服务器成员的地址。若HBASE_MANAGES_ZK=true。则该列表在启动hbase时会自动启动。
hbase.zookeeper.propery.dataDir /home/mirancy/hadoop2.6/zookeeperdata 这个值等于zoo.cfg的dataDir值

hbase-site.xml
zoo.cfg
core-site.xml

4.修改regionserver文件,类似slaves文件。

regionservers
其中的条目表示在Hmaster使用start-hbase.sh 启动集群时同时启动各Hregionserver。

5:将hbase同步到其他节点

6.启动测试。在主节点用hbase-start.sh开启hbase集群。如果是非托管的ZK需要手动开启ZK。使用jps查看应该多了两个进程。使用master:60010访问web界面。

7.使用 hbase shell 开启客户端命令行。



HBASE SHELL的命令可以分为: 通用, 数据定义语言, 命名空间, 数据操纵语言, 工具, 副本,快照, 配置, 配额, 安全, 过程触发? 以及显示标签这几种类型。下面还说了shell参数用逗号分隔。字典的声明使用的是Ruby的语法。


get 还可以加 TIMERANGE, VERSIONS, CONSISTENCY,FILTER等 字典键值对细化查询条件。

清空表用 truncate 't1',内部会先drop表,再重新建立表结构。

删除表用 drop 't1'。

删除一个单元格(或者说是一列的值),用 delete 't1','row_key','f1:c1'

删除一行, 用deleteall 'row_key'

列族在建立表的时候确定。列在put时确定。

regionserver是表的整行分片。一个storage是几个行的列族分片。只能使用行键访问行。表的时间戳会自动排序。

使用alter或者drop等DDL命令更改表结构时需要disable表。

posted on 2017-03-17 15:18  mirancy  阅读(270)  评论(0编辑  收藏  举报

导航