Hadoop集群之 ZooKeeper和Hbase环境搭建

1.ZooKeeper和Hbase的简答介绍:

  1. ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
  2. HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
  3. 两者联系:Hbase的运行依赖ZooKeeper。Hbase自身带有一个默认的ZooKeeper,本文讲解的是自己搭建ZooKeeper环境。

2.ZooKeeper环境搭建:

2.1软件下载:

我使用的是zookeeper-3.4.5.tar.gz。下载改文件后,将文件解压到/usr/local目录下:

sudo mv zookeeper-3.4.5.tar.gz /usr/local
tar -xvzf  zookeeper-3.4.5.tar.gz12复制代码

2.2配置

进入zookeeper-3.4.5/conf/目录:,拷贝zoo_sample.cfg生成一个新文件zoo.cfg(zk默认读取的文件)。然后修改zoo.cfg中dataDir目录地址,增加访问地址和端口

cd zookeeper-3.4.6/conf/
cp zoo_sample.cfg zoo.cfg  
vim zoo.cfg 
###修改如下
dataDir=/usr/local/zookeeper-3.4.6/data    ----修改此目录,可以任意
##添加如下内容
server.1=192.168.1.127:2887:3887  
server.2=192.168.1.1128:2888:3888 
server.3=192.168.1.129:2889:3889123456789复制代码

进入zookeeper-3.4.5目录,创建刚才配置中增加的data目录, 然后进入data目录,创建myid文件,输入服务器编号,比如在192.168.1.127上,myid文件就存储数字1,192.168.1.128上就存储数字2,192.168.1.129上就存储数字3.

mkdir data
cd data  
vim myid
11234复制代码

2.3拷贝数据到其他服务器

1.复制zookeeper-3.4.5目录到其他从服务器

scp -r zookeeper-3.4.5 hadoop@192.168.1.128:~ 
scp -r zookeeper-3.4.5 hadoop@192.168.1.129:~ 
##注意在从服务器将zookeeper-3.4.5移动到/usr/local  不要这部也是没事的,只是为了保证集群环境一致
mv zookeeper-3.4.5 /usr/local1234复制代码

2.复制完成,登录到其他服务器,修改zookeeper-3.4.5/data/myid 文件的内容,slave1服务器就改成2,slave2服务器就改成3

2.4启动验证:

在从master,slave1,slave2依次执行zkServer.sh start 来启动 zookeeper,所有服务器启动完成后,就可以通过zkServer.sh status来查看服务器状态。没有报错说明都正常了。输入jps可以看到服务器中多了一个QuorumPeerMain服务。

cd /zookeeper-3.4.6
sh bin/zkServer.sh start 
jps
输出:
 QuorumPeerMain 
###状态查询
sh bin/zkServer.sh status  
leader---表示master
Mode: follower 表示是跟从123456789复制代码

到这里zk环境搭建完毕

3.Hbase环境搭建

HBase集群需要依赖于一个Zookeeper ensemble。HBase集群中的所有节点以及要访问HBase的客户端都需要能够访问到该Zookeeper ensemble。HBase自带了Zookeeper,但为了方便其他应用程序使用Zookeeper,最好使用单独安装的Zookeeper ensemble。

此外,Zookeeper ensemble一般配置为奇数个节点,并且Hadoop集群、Zookeeper ensemble、

HBase集群是三个互相独立的集群,并不需要部署在相同的物理节点上,他们之间是通过网

络通信的。

3.1软件下载

我下载的是hbase-0.94.16.tar.gz,hbase的版本需要与hadoop对应,查看是否对应只需要看hbase-0.94.1/lib/hadoop-core后面的版本号是否与hadoop的版本对应,如果不对应,可以将hadoop下hadoop-core文件复制过来,但是不能保证不会有问题
解压到/usr/local下

3.2配置

1.配置hbase-env.sh

该文件在{HBASE_HOME}/conf目录下。

vim conf/hbase-env.sh
export JAVA_HOME=/usr/java/jdk

export HBASE_CLASSPATH=/usr/local/hadoop/conf

export HBASE_MANAGES_ZK=false
1234567复制代码

其中,HBASE_CLASSPATH指向存放有Hadoop配置文件的目录,这样HBase可以找到HDFS的配置信息,由于本文Hadoop和HBase部署在相同的物理节点,所以就指向了Hadoop安

装路径下的conf目录。HBASE_MANAGES_ZK=false指示HBase使用已有的Zookeeper而不是自带的。

2.配置hbase-site.xml

<configuration>

 <property>
   <name>hbase.rootdir</name>
   <value>hdfs://192.168.1.127:9000/hbase</value>
   <description>The directory shared by region servers.</description>
 </property>

 <property>
   <name>hbase.hregion.max.filesize</name>
   <value>1073741824</value>
   <description>
   Maximum HStoreFile size. If any one of a column families' HStoreFiles has
   grown to exceed this value, the hosting HRegion is split in two.
   Default: 256M.
   </description>
 </property>

 <property>
   <name>hbase.hregion.memstore.flush.size</name>
   <value>1073741824</value>
   <description>
   Memstore will be flushed to disk if size of the memstore
   exceeds this number of bytes.  Value is checked by a thread that runs
   every hbase.server.thread.wakefrequency.
   </description>
 </property>

 <property>
   <name>hbase.cluster.distributed</name>
   <value>true</value>
   <description>The mode the cluster will be in. Possible values are
     false: standalone and pseudo-distributed setups with managed Zookeeper
     true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
   </description>
 </property>

 <property>
     <name>hbase.zookeeper.property.clientPort</name>
     <value>2181</value>
     <description>Property from ZooKeeper's config zoo.cfg.
     The port at which the clients will connect.
     </description>
 </property>

 <property>
   <name>zookeeper.session.timeout</name>
   <value>120000</value>
 </property>

 <property>
   <name>hbase.zookeeper.property.tickTime</name>
   <value>6000</value>
 </property>
   <property>
     <name>hbase.zookeeper.quorum</name>
     <value>master,slave1,slave2</value>
     <description>Comma separated list of servers in the ZooKeeper Quorum.
     For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".
     By default this is set to localhost for local and pseudo-distributed modes of operation. For a fully-distributed setup, this should be set to a full list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh this is the list of servers which we will start/stop ZooKeeper on.
     </description>
</property>

<property>
       <name>hbase.tmp.dir</name>
       <value>/usr/local/hbase/tmp</value>
</property>

</configuration>123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869复制代码

参数介绍:

1,hbase.rootdir:hbase所使用的文件系统为HDFS,根目录为hdfs://192.168.1.127:9000/hbase,该目录应该由HBase自动创建,只需要指定到正确的HDFS NameNode上即可。

2,hbase.hregion.max.filesize:设置HStoreFile的大小,当 大于这个数时,就会split 成两个文件

3,hbase.hregion.memstore.flush.size:设置memstore的大小,当大于这个值时,写入磁盘

4,hbase.cluster.distributed:指定hbase为分布式模式

5,hbase.zookeeper.property.clientPort:指定zk的连接端口

6,zookeeper.session.timeout:RegionServer与Zookeeper间的连接超时时间。当超时时间到后,ReigonServer会被Zookeeper从RS集群清单中移除,HMaster收到移除通知后,会对这台server负责的regions重新balance,让其他存活的RegionServer接管.

7,hbase.zookeeper.property.tickTime:

8,hbase.zookeeper.quorum:默认值是 localhost,列出zookeepr的master,slave1,slave2

9,hbase.tmp.dir:指定HBase将元数据存放路径
123456789101112131415161718复制代码

3.配置regionservers 相当于hadoop的slave

vim conf/regionservers 
192.168.1.127
192.168.1.128123复制代码

3.3拷贝数据到其他服务器

1.复制hbase目录到其他从服务器

scp -r hbase hadoop@192.168.1.128:~ 
scp -r hbase hadoop@192.168.1.129:~ 
##注意在从服务器将hbase移动到/usr/local  不要这部也是没事的,只是为了保证集群环境一致
mv hbase /usr/local1234复制代码

3.4启动验证:

注意需要先启动Hadoop

##启动Hadoop
start-all.sh
##启动Hbase
cd hbase
bin/start-hbase.sh
jps
输出:HRegionServer 1234567复制代码

通过浏览器查看:在浏览器中输入 : http://192.168.1.127:60010/

##停止

bin/stop-hbase.sh
1234复制代码

3.5hbase简答测试:

bin/hbase shell

HBase Shell; enter 'help<RETURN>' for list of supported commands.

Type "exit<RETURN>" to leave the HBase Shell

Version 0.94.12, r1524863, Fri Sep 20 04:44:41 UTC 2013

hbase(main):001:0>

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

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

##检查插入情况.Scan这个表

hbase(main):005:0> scan 'small'

Get一行,操作如下

hbase(main):008:0> get 'small', 'row1'

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

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

##导出与导入

bin/hbase org.apache.hadoop.hbase.mapreduce.Driver export small small

导出的表,在hadoop文件系统的当前用户目录下,small文件夹中。例如,导出后在hadoop文件系统中的目录结构:

bin/hadoop dfs -ls

Found 1 items

drwxr-xr-x   - hadoop supergroup         /small复制代码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值