猿问

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

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 reconnect
java.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 /hbase
2021-12-12 13:05:20,653 ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeeper create failed after 4 attempts
2021-12-12 13:05:20,654 ERROR [main] master.HMasterCommandLine: Master exiting
java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster


郎朗坤
浏览 407回答 2
2回答

www说

一、通常向HBase批量导入数据有三种常用方式1、使用HBase提供的TableOutputFormat,原理是通过一个Mapreduce作业将数据导入HBase2、还有一种方式就是使用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表示不断重试直到成功。设置之后问题解决。

蝴蝶不菲

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高效随机读取:查询超过一年的数据与查询最近数据同样高效
随时随地看视频慕课网APP
我要回答