1、hbase
google:
gfs –> hdfs mapreduce –> mapreduce bigtable –> hbaseApache HBase™是Hadoop数据库,是一个分布式,可扩展的大数据存储
当您需要对大数据进行随机,实时读/写访问时,请使用Apache HBase™。该项目的目标是托管非常大的表 - 数十亿行X百万列 - 在商品硬件集群上。Apache HBase是一个开源的,分布式的,版本化的非关系数据库nosql,模仿Google的Bigtable: Chang等人的结构化数据分布式存储系统。正如Bigtable利用Google文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供类似Bigtable的功能
2、hbase集群角色
hdfs: NameNode DataNode
yarn: ResourceManager NodeManager zookeeper: QuorumPeerMain hbase: HMaster RegionServer主从结构
HMaster: 1)对RegionServer监控 2)处理一些元数据的变更 3)对RegionServer进行故障转移 4)空闲时对数据进行负载均衡 5)对region进行管理 6)发布位置到客户端借助于zookeeperRegionServer:
1)存储hbase实际的数据 2)刷新缓存数据到hdfs 3)处理Region 4)可以进行压缩 5)对Hlog进行维护 6)对region分片3、hbase集群安装部署
1)需要安装好zookeeper集群
2)需要安装好hadoop集群
hdfs yarn3)解压hbase压缩包
tar -zxvf hbase-1.3.0-bin.tar.gz4)修改配置hbase-env.sh
export JAVA_HOME=/root/hd/jdk1.8.0_192 export HBASE_MANAGES_ZK=false5)配置hbase-site.xml
cd /root/hd/hbase-1.3.0 vi hbase-site.xml<configuration>
<!-- 设置namenode所在位置 通过rootdir设置 也就是设置hdfs中存放的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://hsiehchou121:9000/hbase</value>
</property>
<!-- 是否开启集群 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 0.98 后的新变动,之前版本没有.port,默认端口为 60000 -->
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<!-- zookeeper集群的位置 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hsiehchou121:2181,hsiehchou122:2181,hsiehchou123:2181,hsiehchou124:2181</value>
</property>
<!-- hbase的元数据信息存储在zookeeper的位置 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/root/hd/zookeeper-3.4.10/zkData</value>
</property>
</configuration>
指定从节点regionservers
vi regionservershsiehchou122
hsiehchou123
hsiehchou124
6)解决依赖问题
HBase依赖于Hadoop,换成2.8.4的hadoop依赖包 hadoop-annotations-2.8.4.jar hadoop-auth-2.8.4.jar hadoop-common-2.8.4.jar hadoop-hdfs-2.8.4.jar hadoop-hdfs-client-2.8.4.jar hadoop-mapreduce-client-app-2.8.4.jar hadoop-mapreduce-client-common-2.8.4.jar hadoop-mapreduce-client-core-2.8.4.jar hadoop-mapreduce-client-hs-2.8.4.jar hadoop-mapreduce-client-hs-plugins-2.8.4.jar hadoop-mapreduce-client-jobclient-2.8.4.jar hadoop-mapreduce-client-jobclient-2.8.4-tests.jar hadoop-mapreduce-client-shuffle-2.8.4.jar hadoop-yarn-api-2.8.4.jar hadoop-yarn-applications-distributedshell-2.8.4.jar hadoop-yarn-applications-unmanaged-am-launcher-2.8.4.jar hadoop-yarn-client-2.8.4.jar hadoop-yarn-common-2.8.4.jar hadoop-yarn-server-applicationhistoryservice-2.8.4.jar hadoop-yarn-server-common-2.8.4.jar hadoop-yarn-server-nodemanager-2.8.4.jar hadoop-yarn-server-resourcemanager-2.8.4.jar hadoop-yarn-server-web-proxy-2.8.4.jarzookeeper-3.4.10.jar
7)软连接core-site.xml hdfs-site.xml
ln -s /root/hd/hadoop-2.8.4/etc/hadoop/hdfs-site.xml ln -s /root/hd/hadoop-2.8.4/etc/hadoop/core-site.xml8)发送到其他机器
scp -r hbase-1.3.0 hsiehchou122:/root/hd scp -r hbase-1.3.0 hsiehchou123:/root/hd scp -r hbase-1.3.0 hsiehchou124:/root/hdfiind /root/hd/hadoop-2.8.4/ -name hadoop-a*
9)访问ui界面
启动hbase
bin/hbase-daemon.sh start master bin/hbase-daemon.sh start regionserver关闭hbase
bin/hbase-daemon.sh stop master bin/hbase-daemon.sh stop regionserver4、hbase设计架构
Rowkey行键 类似 id
列式存储 hbase操作1)查看表操作
list2)显示当前服务器状态
status ‘hsiehchou121’ 1 active master, 0 backup masters, 3 servers, 0 dead, 0.5000 ave rage load 1 active master: 1个存活的master 0 backup masters: 0个备份master 3 servers: 3个regionserver 0 dead: 没有挂掉的 0.5000 average load:平均加载3)显示当前用户
whoami4)创建表
create ‘表名’,’列族’ create ‘user’,’info1’5)添加数据
put ‘表名’,’rowkey’,’列族:列’,’值’ put ‘user’,’1001’,’info1:name’,’xie’ put ‘user’,’1001’,’info1:age’,’19’删除需要ctrl+<-
6)全表扫描
scan ‘表名’ scan ‘user’ROW COLUMN+CELL
1001 column=info1:age, timestamp=1552579563486, value=19 1001 column=info1:name, timestamp=1552579531260, value=xie7)hbase没有修改,只有覆盖
put ‘user’,’1001’,’info1:name’,’mi’ 只要对应上表名、rowkey、列族、列即可8)查看表结构
describe ‘user’9)变更表结构信息
alter ‘user’,{NAME => ‘info1’,VERSIONS=>’8’}10)查看指定的数据信息
指定具体的rowkey get ‘user’,’1001’ 指定具体的列 get ‘user’,’1001’,’info1:name’11)清空表
truncate ‘user1’12)删除表
需要先指定不可用 disable ‘表名’ drop ‘表名’ disable ‘user1’ drop ‘user1’13)扫描指定范围
指定从某一rowkey扫描 scan ‘user’,{STARTROW => ‘1002’}包含头不包含尾(1001保留,1002不扫描)
scan ‘user’,{STARTROW => ‘1001’, STOPROW => ‘1002’}14)统计rowkey的个数
count ‘user’15)退出hbase shell
quit