列式数据库与行式数据库
从上面可以看出,列式数据库和行式数据库各自有着自己的优点。传统数据库如:oracle、mysql都是行式。它们适合用于实时的业务系统(OLTP),对数据进行增删改查。而列式数据库如:hbase。适合用于离线数据分析系统(OLAP)。对数据进行大规模存储和离线分析。对方的优点恰恰也是自己的缺点,在真实的业务场景中,这两类数据库都起着至关重要的作用。
hbase
hbase是一种高可靠、高性能、面向列、可伸缩的分布式存储系统。
主要优点有:可线性拓展,数据量的增多可以通过节点拓展进行支持。数据存储在hdfs上,备份机制健全。通过zookeeper协调查找数据,访问速度快。
集群角色:Hmaster(一个或多个主节点),HregionServer(多个子节点)。
面向行式的可以做多表关联,(主键,外键),而面向列式的不可以。
hbase:列式,分布式。实际可看做一个缓存层。用来存海量数据。
可以线性拓展,数据存在hdfs上,备份机制健全。通过zookeeper协调查找数据,访问速度快。
hdfs只能做文件存储,不能做数据存储。外部写入日志时先写入hbase达到128M时再存入hdfs。
- hbase的安装:
- 上传、解压、重命名、修改环境变量、修改配置文件、分发到其他节点
rz 选择上传
tar -zxvf hbase-0.99.2-bin.tar.gz
rm -rf hbase-0.99.2-bin.tar.gz
mv hbase-0.99.2 hbase
- 文件配置:
1.hbase-env.sh
export JAVA_HOME=/apps/jdk1.7.0_45
export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
export HBASE_MANAGES_ZK=false
2.hbase-site.xml
<configuration>
<property>
<name>hbase.master</name>
<value>mini1:60000</value>
</property>
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://mini1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>mini1,mini2,mini3</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/zkdata</value>
</property>
</configuration>
3.regionservers
mini1
mini2
mini3
4.再拷入hadoop的配置文件:core-site.xml、hdfs-site.xml
- 环境变量的配置:
su root
export HBASE_HOME=/home/hadoop/hbase
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/
bin(bin可执行文件。sbin启动脚本。)
source /etc/profile
,在这一步有两台机器报错:bash: bin: command not found
,尝试了很多网上说的方法都没有解决。最后解决办法:从别的机器拷贝了一份profile文件scp /etc/profile root@mini2:/etc/
……
- 启动hbase
bin/start-hbase.sh
在这里遇到了一个让人头痛的情况,Hmaster,Hregionserver启动了之后一下就没了。试了很多方法,其实是自己配置文件没有写好……这里要注意hdfs://mini1:9000/hbase
这个地址的写法。
同步时间:
date -s 08/20/2017
date -s 15:34:00
clock –r(查看硬件时间)
clock –w(把本地时间写入硬件)
打开web监控界面:
首先访问http://mini1:60010
进不去。
各种看网上别怎么说……关闭了hadoop的安全模式:hadoop dfsadmin -safemode leave
,好像毫无作用。折腾好久后发现端口是16030。
双主节点的启动:
local-master-backup.sh start 2
添加hbase节点:
1.复制原子节点到新节点上
2.hbase-daemon.sh start regionserver
删除子节点:
zookeeper/bin/zkCli.sh
ls /hbase/rs
kill -9 xxx