Hbase和Zookeeper的安装和配置


Zookeeper的安装和配置

在Hbase安装前需要提前安装并配置好Zookeeper

如需下载最新版请到官方网址 ,也可以点击这里下载版本 zookeeper-3.5.1-alpha

 

Zookeeper的安装和配置十分简单, 既可以配置成单机模式, 也可以配置成集群模式:

 

单机模式

将 zookeeper 的安装包解压到合适目录(这里解压到“/usr/hadoop/zookeeper-3.5.1-alpha”),进入zookeeper目录下的conf子目录, 创建zoo.cfg:

tickTime=2000

dataDir=/usr/zookeeper/data  

dataLogDir=/usr /zookeeper/logs

clientPort=4180

参数说明:

  • tickTime: zookeeper中使用的基本时间单位, 毫秒值.
  • dataDir: 数据目录. 可以是任意目录.
  • dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置.
  • clientPort: 监听client连接的端口号.

至此, zookeeper的单机模式已经配置好了。

 

启动server只需执行指令 (前提是先定位到“/usr/hadoop/zookeeper-3.5.1-alpha”下):

bin/zkServer.sh start

 

Server启动之后,就可以启动 client 连接 server 了,执行指令:

bin/zkCli.sh -server localhost:4180

 

伪集群模式

所谓伪集群, 是指在单台机器中启动多个zookeeper进程, 并组成一个集群. 以启动3个zookeeper进程为例.

将zookeeper的目录拷贝2份:

|--zookeeper0

|--zookeeper1

|--zookeeper2

 

更改zookeeper0/conf/zoo.cfg文件为:

tickTime=2000

initLimit=5

syncLimit=2

dataDir=/usr /zookeeper/data  

dataLogDir=/usr /zookeeper/logs

clientPort=4180

server.0=127.0.0.1:8880:7770

server.1=127.0.0.1:8881:7771

server.2=127.0.0.1:8882:7772

 

新增了几个参数, 其含义如下:

  • initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
  • syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
  • server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同.

参照zookeeper0/conf/zoo.cfg, 配置zookeeper1/conf/zoo.cfg, 和zookeeper2/conf/zoo.cfg文件. 只需更改dataDir, dataLogDir, clientPort参数即可.

在之前设置的dataDir中新建myid文件, 写入一个数字, 该数字表示这是第几号server. 该数字必须和zoo.cfg文件中的server.X中的X一一对应.
/Users/apple/zookeeper0/data/myid文件中写入0, /Users/apple/zookeeper1/data/myid文件中写入1, /Users/apple/zookeeper2/data/myid文件中写入2.

分别进入/Users/apple/zookeeper0/bin, /Users/apple/zookeeper1/bin, /Users/apple/zookeeper2/bin三个目录, 启动server.

任意选择一个server目录, 启动客户端:

bin/zkCli.sh -server localhost:4180

 

集群模式


集群模式的配置和伪集群基本一致.
由于集群模式下, 各server部署在不同的机器上, 因此各server的conf/zoo.cfg文件可以完全一样.

下面是一个示例:

tickTime=2000

initLimit=5

syncLimit=2

dataDir=/usr /zookeeper/data  

dataLogDir=/usr /zookeeper/logs

clientPort=4180

server.43=10.1.39.43:2888:3888

server.47=10.1.39.47:2888:3888

server.48=10.1.39.48:2888:3888

示例中部署了3台zookeeper server, 分别部署在10.1.39.43, 10.1.39.47, 10.1.39.48上. 需要注意的是, 各server的dataDir目录下的myid文件中的数字必须不同.

10.1.39.43 server的myid为43, 10.1.39.47 server的myid为47, 10.1.39.48 server的myid为48.

 


Hbase-1.1.2的配置

1. 安装包下载,可以到官网下载最新版本,也可以点击下载 Hbase-1.1.2-bin.tar.gz 和 Hbase-1.1.2-src.tar.gz 版本;另附:Apache HBase 官方文档中文版

     因为这里需要把 hbase 整合到 hadoop,所以需要注意 hbase 的版本要与 hadoop 的版本对应。

如果先安装好了 hadoop 则要根据 hadoop 的版本选择 hbase 的版本,反之,则要根据 hbase 的版本选择 hadoop 的版本。

根据“Linux+Hadoop+Hbase+Zookeeper+Thrift版本选择&配置(一)”可知这里选择的是“Hbase-1.1.2”(点击下载

 

     由于 HBase 依赖 Hadoop,它配套发布了一个Hadoop jar 文件在它的 lib 下。该套装jar仅用于独立模式。在分布式模式下,Hadoop版本必须和HBase下的版本一致。用你运行的分布式Hadoop版本jar文件替换HBase lib目录下的Hadoop jar文件,以避免版本不匹配问题。确认替换了集群中所有HBase下的jar文件。Hadoop版本不匹配问题有不同表现,但看起来都像挂掉了。

 

     下载完后会有两个文件:Hbase-1.1.2-bin.tar.gz 和 Hbase-1.1.2-src.tar.gz

Hbase-1.1.2-bin.tar.gz:解压到安装位置,这里是“/usr/hadoop/hbase-1.1.2”;

Hbase-1.1.2-src.tar.gz:解压后的文件夹为hbase-1.1.2,到

./hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift/ 下找到 hbase.thrift 文件拷贝备用。

 

2. 修改配置文件

1)环境变量配置

vim /etc/profile

export HBASE-HOME=/usr/local/programe/hbase

export PATH=.:$HBASE-HOME/bin

保存退出,执行如下命令让修改生效

source /etc/profile

 

2)修改hbase/conf/目录下的hbase_env.sh和hbase-site.xml文件

     hbase_env.sh文件内容修改,包括两个地方。

一、修改JAVA-HOME的内容

export   JAVA-HOME=/usr/java/jdk1.7.0_80

二、修改最后一行,启用HBase托管的ZooKeeper,去掉#即可

export  HBASE_MANAGES_ZK=true

 

     hbase-site.xml 文件内容修改

因为在这里 hadoop 采用的是伪分布模式,所以 hbase/conf 下的配置文件 hbase-site.xml 只需要配置成如下即可:

 

zookeeper hbase zookeeper hbase thrift_Hbase

 

“vi conf/hbase-site.xml”或“vim conf/hbase-site.xml”(注意:此时所处的位置是在Hbase的安装目录下,即“/usr/hadoop/hbase-1.1.2”)

 

<configuration>  
     <property>  
          <name>hbase.rootdir</name>  
          <value>hdfs://efficient:9000/hbase</value>  
     </property>
     <property>
          <name>hbase.cluster.distributed</name>
          <value>false</value>
     </property>
     <property>
          <name>zookeeper.znode.parent</name>
          <value>/hbase</value>
     </property>
</configuration>

 

     参数说明:

hbase.rootdir:表示数据存储目录,它必须与你的 Hadoop 集群的 core-site.xml 文件配置保持完全一致才行(其中:efficient是主机名,9000是端口号)

     默认为 hbase.rootdir 是指向 /tmp/hbase-${user.name} ,但是这样的话,在机器重启后会丢失数据(重启的时候操作系统会清理/tmp目录)。

hbase.cluster.distributed:表示完全分布模式的 启用-true/停用-false(这里是伪分布模式,将其置为false) 

zookeeper.znode.parent:表示ZooKeeper中的Hbase的根ZNode的路径(即根路径)。

 

2.启动Hbase

cd /usr/hadoop/hbase-1.1.2”

然后执行命令:“./bin/start-hbase.sh”,如果出现类似“starting Master, logging to logs/hbase-user-master-example.org.out”字样表示配置成功。

 

3. 用shell连接你的Hbase

./bin/hbase shell”,会出现以“hbase(main):001:0>”结尾的篇幅

输入“version”,然后回车就可查看 hbase 的版本号信息。

输入“list”,然后回车就可查看表名列表,如果显示正常则表明前面的配置成功。

可以试下其他的 hbase shell 命令。

 

 

2015.9.10 11:29 willem 将 hbase-1.1.2 整合到 hadoop-2.6.0

 

不积跬步,无以至千里;不积小流,无以成江海.