Hbase的基本存储单位是Region,Region是表数据的子集,多个Region的数据集合可以组成一张完成的表数据。Region本质上存储的一些排好序的,连续的行数据。最初的时候一张表只有一个Region,当Region变得非常大的时候,Region就会从中间分裂成两个基本等大的Region。
在Hbase中,slave也被称作RegionServer,每个RegionServer负责管理一些Region,同时一个Region只能属于一个RegionServer。
一个RegionServer可以服务一个或多个Region,每个Region在Region Server启动的时候被分配。Master可以决定将一些Region从一个RegionServer中移动到令一个RegionServer里面,以便更好的负载均衡。当某个RegionServer故障的时候,Master也可以将它的Region分配给其他的RegionServer。
Region与RegionServer之间的映射关系存储在Zookeeper中的META表中,通过读取META表,你就可以知道那个Region可以负责处理你的rowkey操作,其实这也代表着在HBase读写操作的时候是不用经过Master节点的,你可以之间联系RegionServer。
如图,在客户端进行scan的时候,它可以之间联系多个RegionServer处理当前的操作。
Meta表是用来跟踪Region的,它包含服务器的名称,Region的名称,表名,还有Region的startkey。通过startkey的范围,客户端就可以定位到当前的key要去哪一个Region了。
客户端在请求过META表之后,一般会将表缓存起来,防止每次操作都去获取。在Region进行分裂的时候,客户端去RegionServer操作Region的时候回返回异常,然后客户端会重新获取最新的META表信息。
Hbase的Java客户端API有两个主要的接口:
通过上面介绍,可以知道HBase虽然是Master/Slave架构的,但是并不是每次操作都经过Master的,读写数据的时候HBase只需要直接联系RegionServer即可。这也是HBase可以“无限扩容”的原因。在吞吐量不够的时候,通过增加RegionServer节点,可以增加吞吐量。
卸载节点一般不建议直接停掉,需要先将其排除在集群之外,在主节点上编辑配置文件:${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
在datanode-deny.list中加入要卸载的节点名称,如:slave3
[图片上传失败...(image-268887-1589181513073)]
卸载节点后,刷新节点信息:
./bin/hdfs dfsdmin -refreshNodes会看到节点变成Dead和Decommissioned状态,如下图:
该命令执行后,同时会强制重新加载配置 ,在后台进行Block块的移动
[图片上传失败...(image-71d33c-1589181513074)]
卸载成功后,再停止节点:
./sbin/hadoop-daemon.sh stop datanode
./sbin/yarn-daemon.sh stop nodemanager
如果希望下次自动启动,修改集群中所有节点的slaves配置文件,具体目录 ${HADOOP_HOME}/etc/hadoop/slaves
首先准备一台hadoop节点,参考 hadoop、spark install
在hadoop子节点上,HADOOP_HOME目录下启动hdfs: ./sbin/hadoop-daemon.sh --config /usr/hadoop/hadoop-2.7.7/etc/hadoop/ start datanode
启动nodeManage(这个命令会确定其他子节点的nodeManage,可以把该节点的slaves文件中其他节点去掉): ./yarn-daemons.sh --config /usr/hadoop/hadoop-2.7.7/etc/hadoop/ start nodemanager
在主节点上刷新节点信息: ./bin/hdfs dfsadmin -refreshNodes;使用命令可以均衡数据:./sbin/start-balancer.sh
如下图,节点又重新加入了集群
[图片上传失败...(image-a892c6-1589181513074)]
如果希望下次自动启动,修改集群里机器的所有slaves配置文件,具体目录 ${HADOOP_HOME}/etc/hadoop/slaves
在想要去掉的节点上,SPARK_HOME 目录下执行 ./sbin/stop-slave.sh 即可去掉spark节点。这样操作可以临时去掉spark节点,如果想永久去掉节点,需要在主节点的SPARK_HOME/conf/slaves 文件中去掉子节点
如图,原有三个spark节点
[图片上传失败...(image-50e48c-1589181513074)]
执行./sbin/stop-slave.sh 后,一台节点的状态变成了DEAD
[图片上传失败...(image-c12af8-1589181513074)]
如果希望下次自动启动,修改集群里机器的所有slaves配置文件,具体目录 ${SPARK_HOME}/conf/slaves
首先准备一台spark节点,参考 hadoop、spark install
在spark子节点上,SPARK_HOME 目录下执行 ./sbin/ start-slave.sh spark://<master>:7077,该子节点即可加入mster集群。
如图,扩容后,集群增加了子节点
[图片上传失败...(image-35bb79-1589181513074)]
如果希望下次自动启动,修改集群里机器的所有slaves配置文件,具体目录 ${SPARK_HOME}/conf/slaves
在要卸载的子节点上,HBASE_HOME/bin目录下,执行 ./graceful_stop.sh 子节点的hostname,即可卸载子节点。
该命令会自动关闭Load Balancer,然后Assigned Region,之后会将该节点关闭。除此之外,你还可以查看remove的过程,已经assigned了多少个Region,还剩多少个Region,每个Region 的Assigned耗时。
最终要在hbase shell 中关闭balance_switch :balance_switch false,然后再开启:balance_switch true
首先准备一台hbase节点,参考 hbase(2.0.0) install
在新的子节点 HBASE_HOME 目录下,执行 ./bin/hbase-daemon.sh start regionserver 启动节点
在主节点上编辑HBASE_HOME/conf/regionservers文件,增加新的子节点
在新的子节点上,打开hbase shell,执行 balance_switch true 开启集群自动balance.
hbase 本来有两个节点,如下图:
[图片上传失败...(image-182c39-1589181513074)]
增加新节点后变成了三个:
[图片上传失败...(image-991e21-1589181513074)]
参考:
https://blog.51cto.com/6738767/1943228?utm_source=oschina-app
https://blog.csdn.net/xgjianstart/article/details/78437374
http://www.023dns.com/server_ECS/4225.html
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)