HBase集群安装部署(完全分布式)

来源:互联网 发布:2016网络暴力事例 编辑:程序博客网 时间:2024/06/08 04:15

zookeeper 配置

 

1.         Zookeeper服务集群规模不小于三个节点,要求各服务之间系统时间要保持一致。

2.         m1usr/local目录下,解压缩zookeeper(执行命令tar –zvxf zookeeper.tar.gz

3.         设置环境变量

打开/etc/profile文件!内容如下:

 

#set java & hadoopexport JAVA_HOME=/usr/local/program/jdkexport HADOOP_HOME=/usr/local/program/hadoopexport ZOOKEEPER_HOME=/usr/local/program/zookeeperexport PATH=.:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH


 

 

注:修改完后profile记得执行source /etc/profile

 

4.         在解压后的zookeeper的目录下进入conf目录修改配置文件

更名操作:mv zoo_sample.cfg zoo.cfg

5.         编辑zoo.cfg (vi zoo.cfg)

修改dataDir=/usr/local/program/zookeeper/data/

新增server.0=m1:2888:3888

         server.1=s1:2888:3888

         server.2=s2:2888:3888

 

文件如下:

# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/usr/local/program/zookeeper/data# the port at which the clients will connectclientPort=2181## Be sure to read the maintenance section of the # administrator guide before turning on autopurge.## http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance## The number of snapshots to retain in dataDir#autopurge.snapRetainCount=3# Purge task interval in hours# Set to "0" to disable auto purge feature#autopurge.purgeInterval=1 server.0=m1:2888:3888server.1=s1:2888:3888server.2=s2:2888:3888

 

  注:

server.0=m1:2888:3888server.1=s1:2888:3888server.2=s2:2888:3888

这三行为配置zookeeper集群的机器(m1s1s2)分别用server.0server.1server.2标识,28883888为端口号(zookeeper集群包含一个leader(领导)和多个fllower(随从),启动zookeeper集群时会随机分配端口号,分配的端口号为2888的为leader,端口号为3888的是fllower

 

6.         创建文件夹mkdir /usr/local/program/zookeeper/data

7.         data目录下,创建文件myid,值为0  (0用来标识m1这台机器的zookeeper )

 

到此为止 m1上的配置就已经完成;接下来配置s1s2.

 

8.         zookeeper目录复制到s1s2中(scp –r /usr/local/program/zookeeper s1:/usr/local/program/zookeeper

9.         把修改后的etc/profile文件复制到s1s2

(复制完后记得在s1s2中执行命令source /etc/profile

10.     s1中相应的myid中的值改为1s2中相应的myid中的值改为2

11.     启动,在三个节点上分别执行命令zkServer.sh  start

12.     检验,在三个节点上分别执行命令zkServer.sh  status

 

 

 

zookeeper的shell操作

启动zookeeperzkServer.sh  start

进入zookeeperzkCli.sh

 

 

hbase配置

 

HBase(NoSQL)的数据模型

1.1 (table),是存储管理数据的。

1.2 行键(row key),类似于MySQL中的主键。

    行键是HBase表天然自带的。

1.3 列族(column family),列的集合。

    HBase中列族是需要在定义表时指定的,列是在插入记录时动态增加的。

         HBase表中的数据,每个列族单独一个文件。

1.4 时间戳(timestamp),列(也称作标签、修饰符)的一个属性。

    行键和列确定的单元格,可以存储多个数据,每个数据含有时间戳属性,数据具有版本特性。    

         如果不指定时间戳或者版本,默认取最新的数据。

1.5 存储的数据都是字节数组。

1.6 表中的数据是按照行键的顺序物理存储的。

 

2.HBase的物理模型

2.1 HBase是适合海量数据(20PB)的秒级简单查询的数据库。

2.2 HBase表中的记录,按照行键进行拆分,拆分成一个个的region

    许多个region存储在region server(单独的物理机器)中的。

         这样,对表的操作转化为对多台region server的并行查询。

 

3.HBase的体系结构

3.1 HBase是主从式结构,HMasterHRegionServer

 

HBase的伪分布

1.         m1上解压缩、重命名、设置环境变量HBASE_HOME

如下:

#set java & hadoopexport JAVA_HOME=/usr/local/jdkexport HADOOP_HOME=/usr/local/hadoopexport ZOOKEEPER_HOME=/usr/local/zookeeperexport HBASE_HOME=/usr/local/hbaseexport PATH=.:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin:$JAVA_HOME/bin:$PATH


 

注:修改完成后记得source /etc/profile

 

2.         修改文件$HBASE_HOME/conf/hbase-env.sh,修改内容如下

         export JAVA_HOME=/usr/local/jdk         export HBASE_MANAGES_ZK=true

3.         修改文件hbase-site.xml,修改内容如下

     

    <property>           <name>hbase.rootdir</name>           <value>hdfs://m1:9000/hbase</value>         </property>         <property>           <name>hbase.cluster.distributed</name>           <value>true</value>         </property>         <property>           <name>hbase.zookeeper.quorum</name>           <value>m1</value>         </property>         <property>           <name>dfs.replication</name>           <value>1</value>         </property>


4.         (可选)修改regionservers,具体操作见ppt

5.         启动,执行命令start-hbase.sh

    注意:启动hbase之前要先启动hadoop,确保hadoop可写入数据。

 

 

HBase的完全分布集群

1.hbase的机群搭建过程(在原来的m1上的hbase伪分布基础上进行搭建)

1.1 集群结构,主节点(hmaster)m1,从节点(region server)s1s2

1.2 修改m1上的hbase的几个文件

    (1)修改hbase-env.sh的最后一行export HBASE_MANAGES_ZK=false

         (2)修改hbase-site.xml文件的hbase.zookeeper.quorum的值为m1,s1,s2

         (3)修改regionservers文件(存放的region serverhostname),内容修改为s1s2

1.3 复制m1中的hbase文件夹到s1s2        

    复制m1中的/etc/profiles1s2中,在s1s2上执行source /etc/profile

1.4 启动集群

Ø  首先启动hadoop(在m1start-all.sh),

Ø  然后启动zookeeper集群(分别在三台机器上zkServer.sh  start;可以使用zkServer.sh status查看zk的状态)。

Ø  最后在m1上启动hbase集群(start-hbase.sh)。

HBase Shell操作(增删改查)

说明:

       hbase提供了一个shell的终端给用户交互

 

创建表

>create 'users','user_id','address','info'

         (说明:users,有三个列族user_id,address,info)

 

列出全部表

>list 

得到表的描述

>describe 'users'


创建表

>create 'users_tmp','user_id','address','info'

删除表

>disable 'users_tmp'>drop 'users_tmp'


 

添加记录

put ‘表名’,’行键(标识)’,’列族:字段’,’数值

示例:

put 'users','xiaoming','info:age','24';put 'users','xiaoming','info:birthday','1987-06-17';put 'users','xiaoming','info:company','alibaba';put 'users','xiaoming','address:contry','china';put 'users','xiaoming','address:province','zhejiang';put 'users','xiaoming','address:city','hangzhou';put 'users','zhangyifei','info:birthday','1987-4-17';put 'users','zhangyifei','info:favorite','movie';put 'users','zhangyifei','info:company','alibaba';put 'users','zhangyifei','address:contry','china';put 'users','zhangyifei','address:province','guangdong';put 'users','zhangyifei','address:city','jieyang';put 'users','zhangyifei','address:town','xianqiao'

 

获取一条记录

1.       取得一个id的所有数据

 

>get 'users','xiaoming'


 

2.       获取一个id,一个列族的所有数据

 

>get 'users','xiaoming','info'


 

3.       获取一个id,一个列族中一个列的所有数据

 

>get 'users','xiaoming','info:age'


 

更新记录

>put 'users','xiaoming','info:age' ,'29'>get 'users','xiaoming','info:age'>put 'users','xiaoming','info:age' ,'30'>get 'users','xiaoming','info:age'

获取单元格数据的版本数据

>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>1}>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>2}>get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>3}

获取单元格数据的某个版本数据

〉get 'users','xiaoming',{COLUMN=>'info:age',TIMESTAMP=>1364874937056}

全表扫描

>scan 'users'


 

删除xiaoming值的'info:age'字段

>delete 'users','xiaoming','info:age'>get 'users','xiaoming'

删除整行

>deleteall 'users','xiaoming'

统计表的行数

>count 'users'

清空表
>truncate 'users'

0 0