本文是基于CentOS 7.3系统环境,进行HBase的学习和使用
HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库,可以解决HDFS随机写的问题
逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像是一个multi-dimensional map
HBase依赖时间戳进行数据的管理,因此时间戳对于HBase十分重要,一定要确保不同系统之间的时间一致,否则在操作HBase时会出现各种异常错误
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver
tar -xzvf hbase-1.3.1-bin.tar.gz -C /opt/module
vi /opt/module/hbase/conf/regionservers
# 添加内容如下
192.168.0.109
vi /opt/module/hbase/conf/hbase-env.sh
# 修改内容如下
export JAVA_HOME=/opt/module/jdk1.8.0_201
# 注释内容
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
# 修改内容如下
export HBASE_MANAGES_ZK=true
首先创建一个zkData目录
mkdir -p /opt/module/hbase/data/zkData
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.0.109: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>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/module/hbase/data/zkData</value>
</property>
</configuration>
ln -s /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml /opt/module/hbase/conf/core-site.xml
ln -s /opt/module/hadoop-2.7.2/etc/hadoop/hdfs-site.xml /opt/module/hbase/conf/hdfs-site.xml
cd /opt/module/hbase/
bin/hbase-daemon.sh start zookeeper
cd /opt/module/hbase/
bin/hbase-daemon.sh start master
cd /opt/module/hbase/
bin/hbase-daemon.sh start regionserver
cd /opt/module/hbase/
bin/hbase-daemon.sh stop regionserver
cd /opt/module/hbase/
bin/hbase-daemon.sh stop master
cd /opt/module/hbase/
bin/hbase-daemon.sh stop zookeeper
cd /opt/module/hbase/
bin/start-hbase.sh
cd /opt/module/hbase/
bin/stop-hbase.sh
#启动所有zookeeper集群节点
cd /opt/module/zookeeper-3.4.10
bin/zkServer.sh start
sbin/start-dfs.sh
sbin/start-yarn.sh
tar -xzvf hbase-1.3.1-bin.tar.gz -C /opt/module
vi /opt/module/hbase/conf/regionservers
# 添加内容如下
hadoop101
hadoop102
hadoop103
vi /opt/module/hbase/conf/hbase-env.sh
# 修改内容如下
export JAVA_HOME=/opt/module/jdk1.8.0_201
# 注释内容
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
# 修改内容如下
export HBASE_MANAGES_ZK=false
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop101: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>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop101,hadoop102,hadoop103</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/module/zookeeper-3.4.10/zkData</value>
</property>
</configuration>
ln -s /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml /opt/module/hbase/conf/core-site.xml
ln -s /opt/module/hadoop-2.7.2/etc/hadoop/hdfs-site.xml /opt/module/hbase/conf/hdfs-site.xml
安装ntp
yum -y install net-tools
yum -y install ntp
修改配置文件/etc/ntp.conf
vi /etc/ntp.conf
# 限制 192.168.1.0~192.168.255.255之间的服务器可以访问
restrict 192.168.1.0 mask 255.255.0.0 nomodify notrap
# 注释以下内容,因为集群在局域网中,所以不属于互联网其他时间
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#添加以下信息,当失去互联网连接后,使用本机时间做同步
server 127.127.1.0
fudge 127.127.1.0 stratum 10
修改配置文件/etc/sysconfig/ntpd
vi /etc/sysconfig/ntpd
#添加以下信息,硬件时间与系统时间同步
SYNC_HWCLOCK=yes
hadoop101节点上启动ntp
systemctl stop chronyd
systemctl disable chronyd
systemctl start ntpd
systemctl enable ntpd
其他节点上启动ntp
crontab -e
# 编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate hadoop101
cd /opt/module/hbase/
bin/hbase-daemon.sh start master
cd /opt/module/hbase/
bin/hbase-daemon.sh start regionserver
cd /opt/module/hbase/
bin/hbase-daemon.sh stop regionserver
cd /opt/module/hbase/
bin/hbase-daemon.sh stop master
cd /opt/module/hbase/
bin/start-hbase.sh
cd /opt/module/hbase/
bin/stop-hbase.sh