为了账号安全,请及时绑定邮箱和手机立即绑定

为什么开启hbase后一会hmaster和hregionserver就没了?啥情况啊?

为什么开启hbase后一会hmaster和hregionserver就没了?啥情况啊?

郎朗坤 2022-07-01 07:07:53
2021-12-12 13:05:20,551 WARN [main-SendThread(192.168.109.130:2128)] zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnectjava.net.ConnectException: 拒绝连接at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)2021-12-12 13:05:20,653 WARN [main] zookeeper.RecoverableZooKeeper: Possibly transient ZooKeeper, quorum=192.168.109.130:2128, exception=org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase2021-12-12 13:05:20,653 ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeeper create failed after 4 attempts2021-12-12 13:05:20,654 ERROR [main] master.HMasterCommandLine: Master exitingjava.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

一、通常向HBase批量导入数据有三种常用方式
1、使用HBase提供的TableOutputFormat,原理是通过一个Mapreduce作业将数据导入HBase
2、还有一种方式就是使用HBase原生Client API(put)
3、前两种方式因为须要频繁的与数据所存储的RegionServer通信。一次性入库大量数据时,特别占用资源,所以都不是很有效。因为HBase在HDFS中是以HFile文件结构存储的,所以高效便捷的方法就是直接生成HFile文件然后使用Bulk Load方法,即HBase提供的HFileOutputFormat类。
二、Bulk Load基本原理
Bulk Load处理由两个主要步骤组成:
1、生成HFile文件
Bulk Load的第一步会执行一个Mapreduce作业,其中使用到了HFileOutputFormat输出HBase数据文件:StoreFile。
HFileOutputFormat的作用在于使得输出的HFile文件能够适应单个region。使用TotalOrderPartitioner类将map输出结果分区到各个不同的key区间中,每一个key区间都相应着HBase表的region。
2、导入HBase表
第二步使用completebulkload工具将第一步的结果文件依次交给负责文件相应region的RegionServer,并将文件move到region在HDFS上的存储文件夹中。一旦完毕。将数据开放给clients。
假设在bulk load准备导入或在准备导入与完毕导入的临界点上发现region的边界已经改变,completebulkload工具会自己主动split数据文件到新的边界上。可是这个过程并非最佳实践,所以用户在使用时须要最小化准备导入与导入集群间的延时,特别是当其它client在同一时候使用其它工具向同一张表导入数据。
Bulk Load常遇到的一个ERROR:”java.io.IOException: Retry attempted 10 times without completing, bailing out”
错误解析:
我们使用的Hbase1.0.2版本下,如果Hfile文件 跨越多个region,bulkload会自动地将Hfile文件split,但是对于每次retry只会将指定的Hfile文件split一次。但是在hbase-site.xml配置文件里有个参数hbase.bulkload.retries.number控制了hbase对一个hfile最多plit多少次。这个参数默认是10,如果某个hfile跨越的region数超过10个就会报上述Exception。
解决方案:
将hbase.bulkload.retries.number这个参数设置为更大的值,比如目标表的region数量或者将这个参数设置成0,0表示不断重试直到成功。设置之后问题解决。


查看完整回答
反对 回复 2022-07-05
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

1HBase的定义

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。

适合于存储大表数据(表的规模可以达到数十亿行以及数百万列),并且对大表数据的读、写访问可以达到实时级别。利用Hadoop HDFS(Hadoop Distributed File System)作为其文件存储系统,提供实时读写的数据库系统;利用ZooKeeper作为协同服务。

2HBase的架构

3HBase的适用场景

HBase适合具有如下需求的应用:

o海量数据(TB、PB)

o高吞吐量

o需要在海量数据中实现高效的随机读取

o需要很好的性能伸缩能力

o能够同时处理结构化和非结构化的数据

o不需要完全拥有传统关系型数据库所具备的ACID特性

4成功应用场景案例

项目背景

某银行仅支持查询最近一年的账户历史交易情况,超过一年的查询需要特殊申请,由专人进行人工查询

原因:

o传统数据库无法存储海量数据。

o大数据量下查询性能急剧下降。

HBase的优势

o海量数据(TB、PB):可由查询一年变为十年或更多

o高效随机读取:查询超过一年的数据与查询最近数据同样高效


查看完整回答
反对 回复 2022-07-05
  • 2 回答
  • 0 关注
  • 406 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号