1.1主机规划
前面的文章中,我们已经搭建了一个3节点的Hadoop分布式集群,为了保证数据的本地性,HBase集群与Hadoop集群共用节点。
1.2软件规划
前面hadoop集群使用的安装包为hadoop-2.6.0-cdh5.10.0.tar.gz,这里选择与Hadoop相兼容的hbase-1.2.0-cdh5.10.0.tar.gz安装包
1.3用户与用户组规划
安装HBase用户和用户组跟Hadoop集群保持一致即可。
1.4目录规划
安装HBase分布式集群,默认配置文件有一些默认的日志目录和进程目录,为了方便管理,我们规划好自己创建目录,便于统一管理。
2.1下载
CDH版本:http://archive-primary.cloudera.com/cdh5/cdh/5/
这里选择下载hbase-1.2.0-cdh5.10.0.tar.gz版本的安装包,上传至主节点/home/hadoop/app目录。
2.2解压
使用如下命令解压HBase安装包:
tar -zxvf hbase-1.2.0-cdh5.10.0.tar.gz
2.3创建软连接
为了方便操作,使用如下命令创建软连接:
ln -s hbase-1.2.0-cdh5.10.0 hbase
2.4修改配置文件
2.4.1修改hbase-site.xml
在Hadoop中,如果用户需要增加HDFS的特定配置就要添加到hdfs-site.xml文件中。同样在HBase中,用户需要增加配置信息,就需要将配置添加到conf/hbase-site.xml文件中。
进程启动后,服务器会先读取hbase-default.xml文件,然后读取hbase-site.xml文件,hbase-site.xml的内容会覆盖hbase-default.xml中的内容。每次修改配置文件需要重启进程才能得到最新的配置。
2.4.2修改hbase-en.sh
HBase环境变量等信息需要在这个文件中配置,例如HBase守护进程的JVM启动参数。还可以设置HBase配置文件的目录、日志目录、进程pid文件的目录等。
export JAVA_HOME=/home/hadoop/app/jdk
export HBASE_LOG_DIR=/home/hadoop/data/hbase/logs
export HBASE_PID_DIR=/home/hadoop/data/hbase/pids
export HBASE_MANAGES_ZK=false
2.4.3修改RegionServer
这个文件罗列了所有region服务器的主机名,它是纯文本文件,文件中的每一行都是主机名。HBase的运维脚本会依次迭代访问每一行来启动所有region服务器进程。
hadoop01
hadoop02
hadoop03
2.4.4修改backup-masters
这个文件配置HBase master的备用节点,它是纯文本文件,每行填写主机名即可。
hadoop02
2.5添加hdfs配置文件
因为HBase启动依赖hdfs配置信息,需要将hdfs配置文件拷贝到主节点hbase的conf目录下
cp core-site.xml /home/hadoop/app/hbase-1.2.0-hadoop5.10.0/conf/
cp hdfs-site.xml /home/hadoop/app/hbase-1.2.0-hadoop5.10.0/conf/
2.6同步HBase安装目录
将主节点下的hbase安装目录分发到其他节点
deploy.sh hbase-1.2.0-cdh5.10.0 /home/hadoop/app/ slave
然后分别创建软链接
ln -s hbase-1.2.0-cdh5.10.0 hbase
2.7创建规划目录
在所有节点创建之前规划好的目录。
runRemoteCmd.sh "mkdir -p /home/hadoop/data/hbase/logs" all
3.1启动Zookeeper
集群依赖Zookeeper集群,所以需要先启动Zookeeper
runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh start" all
3.2启动hdfs
Hbase数据都存储在hdfs上,它依赖与hdfs集群,所以先启动hdfs。
sbin/start-dfs.sh
3.3启动hbase
通过如下命令启动hbase。
bin/start-hbase.sh
备注:也可以换一个节点启动HBase,在哪个节点启动HBase,哪个节点就是master角色。
3.4关闭hbase
运行以下命令可以停止HBase集群,一旦启动了这个脚本,我们将会看到一条描述集群正在停止的信息,该信息会周期性地打印”. ”字符。(这仅仅表明脚本正在运行,并不是进度的反馈或者隐藏有用的信息)
$bin/stop-hbase.sh
stopping hbase.......
关闭脚本大概需要几分钟完成,如果集群机器比较多,需要执行更长的时间。如果用户运行的是分布式集群,在关闭hadoop集群之前一定要确认hbase已经被正常关闭。
3.5 web 查看hbase
访问地址:http://master:60010查看hbase相关信息。
HBase 为用户提供了一个非常方便的使用方式, 我们称之为“HBase Shell”。
HBase Shell 提供了大多数的 HBase 命令, 通过 HBase Shell 用户可以方便地创建、删除及修改表, 还可以向表中添加数据、列出表中的相关信息等。
bin/hbase shell
#查看命令组
hbase>help
4.1 General操作
#查询HBase服务器状态
hbase>status
#查看HBase版本
hbase>version
4.2Ddl 操作
Ddl 操作(Data Definition Language)数据定义语言
#创建一个表
hbase(main):002:0> create 'myhbase','cf'
#查看HBase所有表
hbase(main):003:0> list
#描述表结构
hbase(main):004:0> describe 'myhbase'
#删除表
hbase(main):005:0> disable 'myhbase'
hbase(main):006:0> drop 'myhbase'
hbase(main):007:0> list
4.3Dml操作
Dml操作(Data Manipulation Language)是数据操纵语言
#创建一个表
hbase(main):002:0> create ‘user','cf'
#插入数据
put 'user', '1', 'cf:name', 'xiaoli'
put 'user', '1', 'cf:age', '24'
put 'user', '1', 'cf:birthday', '1987-06-17'
put 'user', '1', 'cf:company', 'alibaba'
put 'user', '1', 'cf:contry', 'china'
put 'user', '1', 'cf:province', 'zhejiang'
put 'user', '1', 'cf:city', 'hangzhou'
#扫描表所有数据
hbase(main):011:0> scan 'user'
#根据rowkey获取数据
hbase(main):012:0> get 'user','1'
#根据rowkey 更新一条数据
hbase(main):013:0>put 'user', '1', 'cf:age', '28'
hbase(main):014:0> get 'user','1'
#查询表中总记录数据
hbase(main):015:0> count 'user'
#删除某一列数据
hbase(main):016:0> delete 'user', '1', 'cf:age'
hbase(main):017:0> get 'user','1'
#清空hbase表数据
hbase(main):018:0> truncate 'user'
hbase(main):019:0> scan 'user'