关于Hbase的集群管理

2019-03-28 13:35|来源: 网络

1、如果只增加集群的存储量,建议增加Hadoop datanode节点。
方法:
  • 停掉集群包括hadoop和hbase,当然也可以不停掉,直接在hadoop namenode的配置文件Slave里添加新节点的host,别忘了在host文件里也要添加新添加的host名。
  • 执行bin/start-all.sh启动集群
  • 如果不手动作平衡,插入的数据将会放在新添加的节点上。以趋于平衡。
  • 如果手动平衡,则 start-balancer.sh和调用bin/shadoop balancer命令相似,也可加参数 -threshold 5(threshold 是平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长)。 在使用start-balancer.sh时,如果在hdfs-site.xml里面没有配置dfs.balance.bandwidthPerSec,那么集群hdfs内部默认使用1M/S的速度移动数据(so slowly...),我们可以通过在hdfs-site.xml里面配置dfs.balance.bandwidthPerSec来加快balance的速度。 最开始我们配置的是20m/S ,然后结果是导致job运行变得不稳定,出现一些意外的长map单元,某些reduce时间处理变长(整个集群负载满满的情况下,外加20m/s的balance),在前天的中国hadoop年会上听淘宝调整的为10m/s,需要调整后实验,看看情况如何。 另外再修改dfs.balance.bandwidthPerSec参数后,需要在namenode上运行stop-dfs.sh start-dfs.sh重启hdfs生效。我们可以通过stop-balancer.sh停掉平衡任务。作完平衡后,启动hbase,正常。 果cluster设置的副本数不为3(默认),需要先运行命令hadoop fs –setrep [-R] <path> 
    进行设置一个文件的副本系数。如果默认为3则不必。如果执行完平衡以后才改变副本数,会将新加入到新节点上的所有数据删除。 
    5.dfs.replication设置的副本系数只在文件系统写入时有效,并不影响在新添加节点时,平衡时的副本数 
    由于还有hbase数据库,因此,在运行完平衡以后,将hbase下的.META.文件删除(防止出错),启动hbase,执行hbase org.jruby.Main add_table /表名 来进行hbase表恢复
验证步骤:1namenode+3datanode+1master+2regionserver+3zookeeper

2、删除一个regionServer,
在需要删除的RegionServer上执行以下命令: $ ./bin/hbase-daemon.sh stop regionserver  RegionServer将会关掉所有的region,然后此节点将会在Zookeeper消失。Master注意到了此RegionServer 掉了,它将会重新分配掉的这些Region。在停掉一个节点的时候,注意要关闭Load Balancer,因为 Load Balancer可能要和Master的恢复机制争夺停掉的RegionServer。
hbase(main):001:0> balance_switch false
true
0 row(s) in 0.3590 seconds

hbase(main):002:0> balance_switch true
false
0 row(s) in 0.3590 seconds

./bin/graceful_stop.sh
Usage: graceful_stop.sh [--config &conf-dir>] [--restart] [--reload] \
[--thrift] [--rest] &hostname>
thrift If we should stop/start thrift before/after the hbase stop/start
rest If we should stop/start rest before/after the hbase stop/start
restart If we should restart after graceful stop
reload Move offloaded regions back on to the stopped server
debug Move offloaded regions back on to the stopped server
hostname Hostname of server we are to stop

3、添加一个备份的master节点

相关问答

更多
  • 1> 准备工作 a> 已经配置完成的Hadoop集群 b> 所需要的软件包 zookeeper-3.4.4.tar.gz hbase-0.94.5.tar.gz 2> 单独安装的ZooKeeper集群,不基于HBase集群管理 a> 在master01上解压zookeeper-3.4.4.tar.gz #tar -zxvf zookeeper-3.4.4.tar.gz b> 修改Zookeeper的配置文件 #vim /root/zookeeper-3.4.4/conf/zoo.cfg
  • 不需要,但其余主机要配好环境就可以连接了,但有一点,如果你建hive的外表,并与hive表关联时,就需要每个节点都装,不然会有报错的。
  • 更改以下conf文件。 对于hadoop:core-site.xml,mapred-site.xml。 对于hbase:hbase-site.xml。 您可以创建这些文件的多个版本并根据需要在它们之间切换。 Make changes to the following conf files. For hadoop: core-site.xml, mapred-site.xml. For hbase: hbase-site.xml. You could create multiple versions of t ...
  • 让它运行 您不必在本地计算机上运行Thrift服务器,它可以在任何地方运行,但RegionServers通常是一个好地方*。 然后在代码中连接到该服务器。 一个Python示例: transport = TSocket.TSocket("random-regionserver", 9090) 你明显用你正在运行Thrift服务器的其中一个服务器替换random-regionserver服务器。 该服务器从通常的位置获取其配置。 如果您正在使用CDH,那么您将在/etc/hbase/conf/hbase-s ...
  • 首先,HBase将其数据存储在HDFS中。 所以我相信你的HBase集群上有HDFS。 当impala正在向HDFS读取/写入数据时,它直接访问OS级别的块。 这就是为什么黑斑羚在这方面如此之快。 当impala读取HBase数据时,它将成为使用其api的HBase客户端,而不是直接从磁盘读取HBase数据。 因此,HBase不必与Impala安装在同一个集群上。 但是,群集需要能够相互访问。 First HBase stores its data in HDFS. So I am sure you hav ...
  • Hbase与您拥有的DN数量无关。 但是,DN的数量越多,性能和可用性就越高,因为复制实际上是在HDFS级别进行的。 所以,如果你只有一个节点,你所有的Hbase数据都会去那里,如果那个服务器停机,你就处于中间地带。 虽然拥有多个DN有几个优点,例如机器上的负载较小且均衡,与单个机器上的所有负载相比,并行性更高,可用性更高等。 Hbase has nothing to do with the number of DNs you have. But, greater the number of DNs bet ...
  • 我删除了/ etc / hosts中与127.0.0.1相关的所有条目并将hdfs-site.xml复制到所有节点中的$ HBASE_HOME / conf之后,问题得以解决 The problem solved after I removed all entries related to 127.0.0.1 in /etc/hosts and copied the hdfs-site.xml to $HBASE_HOME/conf in all nodes
  • 第一件事:你真的需要数千张桌子吗? 在这种情况下,我不认为Hbase是一个正确的工具,如果你的地图很小,你最好使用Redis地图。 那么这意味着最大表数= 1500 x 3 = 4500? - > Hbase集群中的表数没有理论上的限制。 如果每个表都很小,那么一个区域是否可能包含许多表,因此我们可以在HBase中拥有数百万个表? - >否:区域是表的一部分,与之关联,并且只由一个区域服务器加载。 First thing: do you really need thousand of tables? I d ...
  • 我发现我使用的是Docker版本1.8.2完全删除Docker然后安装旧版本(1.7.0)然后我的脚本正常运行 I found out that I'm using Docker version 1.8.2 After fully remove Docker then install the older one (1.7.0) then my script run normally