前言:
数据库,按照数据库的存储结构来区分的话,
key-value数据结构:其中比较出名的有redis这种;
二叉树类型的数据结构:比较出名的是mysql和oracle;
LMS日志结构性数据库:就是hbase。
以下,大致讲解下hbase怎么去配置单机,伪分布式,完全分布式。
首先是hbase版本对应的信息如下:
前提条件,安装jdk 和 hadoop,并配置了环境变量
1.单机模式
直接解压安装包
tar -zxvf xxxxx.tar.gz
修改conf/hbase-site.xml,配置hbase使用的数据文件的位置,默认在/tmp/hbase-[username],此目录是linux的临时目录,可能会被系统清空,所以最好修改一下
<property>
<name>hbase.rootdir</name>
<value>file:///<path>/hbase</value>
</property>
2.伪分布式模式
修改conf/hbase-env.sh修改JAVA_HOME
export JAVA_HOME=xxxx
修改hbase-site.xml,配置使用hdfs
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop00:9000/hbase</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
启动hbase
3.完全分布式模式
修改conf/hbase-env.sh修改JAVA_HOME
export JAVA_HOME=xxxx
修改hbase-site.xml,配置开启完全分布式模式
配置hbase.cluster.distributed为true。
配置hbase.rootdir设置为HDFS访问地址
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop00:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
修改conf/hbase-env.sh禁用对zookeeper的自动管理
export HBASE_MANAGES_ZK false
配置region服务器,修改conf/regionservers文件,其中配置所有hbase主机,每个主机名独占一行,hbase启动或关闭时会按照该配置顺序启动或关闭主机中的hbase
HBASE配置文件说明
hbase-env.sh配置HBase启动时需要的相关环境变量
hbase-site.xml配置HBase基本配置信息
HBASE启动时默认使用hbase-default.xml中的配置,
如果需要可以修改hbase-site.xml文件,此文件中的配 置将会覆盖hbase-default.xml中的配置
修改配置后要重启hbase才会起作用
启动集群
启动zookeeper
启动hadoop
启动hbase
访问http://xxxxx:60010来访问web界面,通过web见面管理hbase
也可以通过hbase shell脚本来访问bhase
启动备用master实现高可用
hbase-daemon.sh start master
关闭集群
stop-hbase.sh
在hbase目录打开。以下的bin、conf、lib文件自然不用多说解释。habase-webapps。类似tomcat的同名文件。
提供页面访问hbase
habse-site.xml。此为hbase的核心配置文件
打开它。
发现空白。意思就是你不配置。就会采用默认的配置
配置单机的hbase环境,记得要在对应的文件上创建对应的tmp文件
配置完成后,尝试去bin目录启动hbase
启动命令
启动后,查看jps,发现HMaster。那么,hbase真的启动起来了吗?
访问http://xxxxx:60010来访问web界面,通过web见面管理hbase
也可以通过hbase shell脚本来访问bhase
只要能看见这个界面,就可以了
如果想关闭呢?
但是呢,单机模式,只有一台机器,底层数据也没有存到habase里面,而是存到了我指定的
这里对应的设置文件夹中。当然,不设置也可以。不设置会存在linux的临时目录,重启就可能丢失。
这个模式的存在意义,就是基本能用,拿来测试一下。
伪分布式的设置。差别就是如图的设置
那么,在底层数据的存储方面,就是把数据存到了hdfs里面,体现在这里对应的设置上。把数据真正的存到了hadoop上。
不过,伪分布式依然是单机环境,依然还是用在测试、开发环境上。
在hbase按照目录下的conf下
找到hbase-env,sh,打开并编辑
找到对应的export设置,去掉注释。注意jdk要1.6版本以上
修改hbase-site.xml,配置开启完全分布式模式
配置hbase.cluster.distributed为true。
配置hbase.rootdir设置为HDFS访问地址
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop00:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
修改conf/hbase-env.sh禁用对zookeeper的自动管理
export HBASE_MANAGES_ZK false
配置region服务器,修改conf/regionservers文件,其中配置所有hbase主机,每个主机名独占一行,hbase启动或关闭时会按照该配置顺序启动或关闭主机中的hbase
--------------------------------------------------
~HBASE配置文件说明
hbase-env.sh配置HBase启动时需要的相关环境变量
hbase-site.xml配置HBase基本配置信息
HBASE启动时默认使用hbase-default.xml中的配置,如果需要可以修改hbase-site.xml文件,此文件中的配置将会覆盖hbase-default.xml中的配置
修改配置后要重启hbase才会起作用
--------------------------------------------------
但是伪分布式下,hadoop的副本只有一份。所以,要把这里的副本数也改为1
因为是这样,如果这里副本数你不告知hbase的话,那么hbase他还是会按照三份副本的数量去hdfs寻找blocket,会出现问题。所以你要告知hbase,副本数只有唯一一个。
配置完成后,启动hbase
发现启动失败
就去对应的日志,就是如图我框起来的,但是,打开的是log文件。这才是日志
启动日志很多,最新的日志都是在文本末尾处的。翻到最后一页去查看。
他连接被拒绝。这时,考虑刚才哪里需要连接,就是hadoop的hdfs。所以要保证hadoop的伪分布式能够起来.
再重新启动hbase。启动后,如果jps如下图所示,那么就是成功了
进去主页
看到下面句子,就是表明数据存储在hdfs上
--------------完全分布式部署重点--------------
## 以下是完全分布式的部分说明
而且,注意是hbase对zk的管理
如图,为何要设置false。由于此处,默认为true。启动的时候,hadoop01-03启动会自动帮助上面的zk启动,。那么,在关闭hadoop01-03的时候,zk也会被关闭。如果改了false,那么hbase对zk的控制权就没有了。要自己先启动zk,再去启动hbase。
但是,一个机器上,zk不可能只为hbase提供服务。还会为其他技术提供服务,那万一就是其他服务没有了zk,其他服务就出问题了,那么就尴尬了。
**配置region服务器,修改conf/regionservers文件,**其中配置所有hbase主机,每个主机名独占一行,hbase启动或关闭时会按照该配置顺序启动或关闭主机中的hbase。配置如下图。加入其他hadoop集群的主机名字
配置的顺序要注意,顺序决定了启动的顺序。
启动之前,注意HMaster有没有启动,还有hadoop的启动
但是,我这里做了三台hbase节点:具体进程如下,请详细看
hadoop01
hadoop02
hadoop03
三台主机hbase高可用。其中关系如下:
三台虚拟机,配置hostname和免密登录(名字分别为hadoop01至hadoop03)
zk服务安装在三台虚拟机
hbase安装在三台虚拟机中
hadoop伪分布式安装在hadoop01
hbase的存储文件放在hdfs上。
zk做hbase的高可用。
这里放置一下总结:zk主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理、Leader 选举、队列管理等。
首先,保证虚拟机hadoop伪分布式可用。
第二,注意,注意,zookeeper一定要配置zk集群,注意注意。一定要注意,我就是忘了。判断zk集群成功的话,就是在bin下面执行 sh zkServer.sh status 里面是leader或者follower
时间不够,只能写到这里。