1:由于HBase依赖hdfs,所以下载的时候注意HBase的版本:
注:我使用的是hadoop2.4版本的,所以HBase选择支持2版本的:hbase-0.96.2-hadoop2-bin.tar.gz
2:上传hbase安装包,上传到一台机器即可:
建议:自己规划一下自己的机器,最好是独立的,再搞两台机器最好,
如果不想搞更多的机器,这里放到启动yarn进程的机器上:
如我的slaver5,slaver6(master节点,slaver1节点,slaver2节点安装Region Server,slaver5,slaver6安装Master),
这样负载比较好点,自己电脑吃得消;
过程省略,上传结果如下所示;
2:解压缩刚才上传的hbase-0.96.2-hadoop2-bin.tar.gz:
[root@slaver5 hadoop]# tar -zxvf hbase-0.96.2-hadoop2-bin.tar.gz
3:配置HBase集群,要修改3个文件(首先Zookeeper集群已经安装好了哟):
注意:要把hadoop的hdfs-site.xml和core-site.xml 放到HBase/conf下;
[root@slaver5 conf]# cp /home/hadoop/hadoop-2.4.1/etc/hadoop/{core-site.xml,hdfs-site.xml} ./
开始修改配置文件:
3.1:修改hbase-env.sh:
修改如下所示:
//自己的jdk路径 export JAVA_HOME=/usr/java/jdk1.7.0_55 //告诉hbase使用外部的zk export HBASE_MANAGES_ZK=false
演示操作如下所示:
可以使用命令查看jdk的路径:
[root@slaver6 hadoop]# echo $JAVA_HOME
/home/hadoop/jdk1.7.0_65
[root@slaver6 hadoop]#
按ESC进入命令行模式:
搜索内容如下所示:
改成如下内容,使用外部的Zookeeper管理HBase:
3.2:修改hbase-site.xml,vim hbase-site.xml:
修改内容如下所示:
<configuration> <!-- 指定hbase在HDFS上存储的路径 --> <property> <name>hbase.rootdir</name> <value>hdfs://ns1/hbase</value> </property> <!-- 指定hbase是分布式的 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- 指定zk的地址,多个用“,”分割 --> <property> <name>hbase.zookeeper.quorum</name> <value>master:2181,slaver1:2181,slaver2:2181</value> </property> </configuration>
修改操作如下所示:
[root@slaver5 conf]# vim hbase-site.xml
演示操作如下所示:
3.3:修改regionservers,vim regionservers:
因为master节点,slaver1节点,slaver2节点安装Region Server,所以这里配置一下,slaver5,slaver6安装Master就可以找到Region Server了;
4:然后将部署好的HBase传到其他几个节点上面(拷贝里面有html文档,拷贝起来有点慢,可以删除doc文档):
注:将配置好的HBase拷贝到每一个节点并同步时间。
[root@slaver5 hadoop]# scp -r hbase-0.96.2-hadoop2/ master:/home/hadoop/
[root@slaver5 hadoop]# scp -r hbase-0.96.2-hadoop2/ slaver1:/home/hadoop/
[root@slaver5 hadoop]# scp -r hbase-0.96.2-hadoop2/ slaver2:/home/hadoop/
[root@slaver5 hadoop]# scp -r hbase-0.96.2-hadoop2/ slaver6:/home/hadoop/
5:现在可以启动HBase了,不过启动HBase之前需要将HDFS启动起来(hdfs启动过程省略,之前启动好多次了),因为HBase在hdfs下面创建一个目录叫做hbase,自己配置的:
注:如果浏览器访问不了,记得关防火墙:service iptables stop,service iptables status;
启动所有的hbase
1:分别启动zk
./zkServer.sh start
2:启动hbase集群
start-dfs.sh
3:启动hbase,在主节点上运行:
start-hbase.sh
启动完hdfs之后启动HBase:
可以查看这几个节点的进程的启动情况:
现在呢,一个HBase已经启动起来了,如果想启动两个HBase,第一个HBase启动不会自动启动第二个HBase,所以现在手动启动第二个HBase,操作如下所示:
注:为保证集群的可靠性,要启动多个HMaster
6:通过浏览器访问hbase管理页面
192.168.3.134:60010
可以看到三台master节点,slaver1节点,slaver2节点安装Region Server;slaver6是安装的备份的Master;
7:自己可以测试一下,杀死一个HMaster(slaver5节点的),另一个HMaster立马顶上去了,很强悍,依赖着Zookeeper,爽到爆啊。(kill -9 进程号,-9是强制杀死):
8:使用HBase的命令行客户端操作一下HBase(测试使用,真实环境使用Java操作):
由于HBase是非关系型数据库,可以查看一下help看看都有啥命令,然后再操作:
可以查看一些基本的命令:
HBase的一些基本命令:
#创建HBase数据表
create 'myTables',{NAME => 'base_info',VERSIONS => 3},{NAME => 'extra_info'}
#查看有什么表
list
#查看表结构
describe 'myTables'
#禁用表
disable 'myTables'
#删除表,删除之前要先禁用表
drop 'myTables'
#插入数据,插入一个表的一行的一列的一个值,最后一个字段不带
#不带分号
#put '表名称','行','base_info/extra_info:列名称','列值'
put 'myTables','0001','base_info:name','张三'
put 'myTables','0001','base_info:age','22'
put 'myTables','0001','base_info:sex','男'
put 'myTables','0001','extra_info:addr','河南省'
#查询数据,查询某一行。
get 'myTables','0001'
get 'myTables','0001',{COLUMN => 'base_info:name',VERSION => 10}
scan 'myTables'
#修改值操作,默认不显示历史值
put 'myTables','0001','base_info:name','李四'