Apache HBase

什么是云数据库 HBase 版

坚强是说给别人听的谎言 提交于 2020-05-01 03:00:19
云数据库 HBase 版 (ApsaraDB for HBase)是基于 Hadoop 的一个分布式数据库,支持海量的PB级的大数据存储,适用于高吞吐的随机读写的场景。目前在阿里内部有数百个集群,10000台左右规模的集群,服务数百个业务线,在订单存储、消息存储、物联网、轨迹、wifi、安全风控、搜索等领域有较多的在线应用。 阿里云特别提供HBase产品化方案服务广大的中小型客户。 精心打造的功能 产品内核及架构深度优化 架构高可用,集群可无限扩展,内核深度优化 架构高可用 高可用架构,Master互为主备模式,且HA实时检测,保障业务高可靠;core节点故障时,region可秒级切换 集群弹性扩展 单core节点提供最高10万QPS、最高8T存储空间;磁盘及节点可灵活扩容,可轻松扩展到千台规模,满足千万级QPS及数PB存储空间 低延迟 SSD存储满足0.2k单条 999延迟3ms 平均延迟1ms 内核深度优化 集团HBase规模超过万台,多位PMC、Committer保驾护航 数据备份 支持HBase集群数据备份及恢复 HBase低成本存储 支持HBase低成本存储,存储成本降低50%以上 双集群容灾 支持HBase双集群容灾 构建领域数据库满足多种场景需求 支持SQL、时序、时空、图、检索等诉求 支持实时小对象存储 满足10M以内的对象实时存储,实时访问 支持SQL

HBase 热点问题——rowkey散列和预分区设计

不想你离开。 提交于 2020-04-30 20:25:52
热点发生在大量的client直接访问集群的一个或极少数个节点(访问可能是读,写或者其他操作)。大量访问会使热点region所在的单个机器超出自身承受能力,引起性能下降甚至region不可用,这也会影响同一个RegionServer上的其他region,由于主机无法服务其他region的请求,造成资源浪费。设计良好的数据访问模式以使集群被充分,均衡的利用。  数据倾斜:Hbase可以被划分为多个Region,但是默认创建时只有一个Region分布在集群的一个节点上,数据一开始时都集中在这个Region,也就是集中在这一个节点上,就算region存储达到临界值时被划分,数据也是存储在少数节点上。这就是数据倾斜 随机散列与预分区二者结合起来,是比较完美的 。预分区一开始就预建好了一部分region,这些region都维护着自己的start-end keys,在配合上随机散列,写数据能均衡的命中这些预建的region,就能解决上面的那些缺点,大大提供性能。 1. 预分区 1.1 HBase的预分区概述 默认分区: HBase表被创建时,只有1个Region,当一个Region过大达到默认的阀值时(默认10GB大小),HBase中该Region将会进行split,分裂为2个Region,以此类推。 缺点: 表在进行split的时候,会耗费大量的资源,频繁的分区对HBase的性能有巨大的影响

自建Hadoop迁移MaxCompute

 ̄綄美尐妖づ 提交于 2020-04-30 15:29:13
场景描述 客户基于ECS、IDC自建或在友商云平台自建了大数据集群,为了降低企业大数据计算平台的成本,提高大数据应用开发效率,更有效保障数据安全,把大数据集群的数据、作业、调度任务以及业务数据库整体迁移到MaxCompute和其他云产品。 解决问题 自建Hadoop集群搬迁到MaxCompute 自建Hbase集群搬迁到云Hbase 自建Kafka或应用数据准实时同步到MaxCompute 自建Azkaban任务迁移到Dataworks任务 产品列表 MaxCompute Dataworks 云数据库Hbase版 Datahub VPC ECS 直达最佳实践 》》 来源: oschina 链接: https://my.oschina.net/u/4383176/blog/4259367

大数据存储利器

狂风中的少年 提交于 2020-04-29 17:15:40
由于疫情原因在家办公,导致很长一段时间没有更新内容,这次终于带来一篇干货,是一篇关于 Hbase架构原理 的分享。 Hbase 作为实时存储框架在大数据业务下承担着举足轻重的地位,可以说目前绝大多数大数据场景都离不开Hbase。 今天就先从 Hbase 基础入手,来说说 Hbase 经常用到却容易疏忽的基础知识。 本文主要结构总结如下: Hbase 主从架构 Hbase 安装依靠 Hadoop 与 Zookeeper,网上有很多安装教程,安装比较简单,这里我们就着重看下 Habse 架构,如图: 可以从图中看出,Hbase 也是主从架构,其中 HMaster 为主,HRegionServer 为从。 Zookeeper 主要存储了Hbase中的元数据信息,如哪个表存储在哪个 HRegionServer 上; HLog 是作为 Hbase 写数据前的日志记录; BLockCache 作为读写数据的缓存; HMaster: 负责新Region分配到指定HRegionServer 管理HRegionServer 间负载均衡,迁移 region 当HRegionServer 宕机,负责 region 迁移 HRegionserver: 响应客户端读写请求 管理Region 切分变大的 Region Region: 一个 Region 对应一个 Table 表 Hbase 存储的最小单元

kudu简介2

天大地大妈咪最大 提交于 2020-04-29 17:05:11
参考文章: kudu介绍 文章内容来源于官网文档: http://kudu.apache.org/docs/index.html 一、kudu介绍 Kudu是Cloudera开源的新型列式存储系统,是Apache Hadoop生态圈的成员之一(incubating),专门为了对快速变化的数据进行快速的分析,填补了以往Hadoop存储层的空缺。 1 功能上的空白 Hadoop生态系统有很多组件,每一个组件有不同的功能。在现实场景中,用户往往需要同时部署很多Hadoop工具来解决同一个问题,这种架构称为混合架构 (hybrid architecture)。比如,用户需要利用Hbase的快速插入、快读random access的特性来导入数据,HBase也允许用户对数据进行修改,HBase对于大量小规模查询也非常迅速。同时,用户使用HDFS/Parquet + Impala/Hive来对超大的数据集进行查询分析,对于这类场景, Parquet这种列式存储文件格式具有极大的优势。 很多公司都成功地部署了HDFS/Parquet + HBase混合架构,然而这种架构较为复杂,而且在维护上也十分困难。首先,用户用Flume或Kafka等数据Ingest工具将数据导入HBase,用户可能在HBase上对数据做一些修改。然后每隔一段时间(每天或每周)将数据从Hbase中导入到Parquet文件

kudu简介3

六月ゝ 毕业季﹏ 提交于 2020-04-29 17:04:40
参考: kudu原理与使用 1、 kudu简介 1.1、kudu是什么 简单来说:dudu是一个与hbase类似的列式存储分布式数据库。 官方给kudu的定位是:在更新更及时的基础上实现更快的数据分析 1.2、为什么需要kudu 1.2.1、hdfs与hbase数据存储的缺点 目前数据存储有了HDFS与hbase,为什么还要额外的弄一个kudu呢? HDFS:使用列式存储格式Apache Parquet,Apache ORC,适合离线分析,不支持单条纪录级别的update操作,随机读写性能差。 HBASE:可以进行高效随机读写,却并不适用于基于SQL的数据分析方向,大批量数据获取时的性能较差。 正因为HDFS与HBASE有上面这些缺点, KUDU较好的解决了HDFS与HBASE的这些缺点,它不及HDFS批处理快,也不及HBase随机读写能力强,但是反过来它比HBase批处理快(适用于OLAP的分析场景),而且比HDFS随机读写能力强(适用于实时写入或者更新的场景) ,这就是它能解决的问题。 2、架构介绍 2.1、基本架构 2.1.1、概念  Table(表) :一张table是数据存储在kudu的位置。Table具有schema和全局有序的primary key(主键)。Table被分为很多段,也就是tablets.  Tablet (段)

Kudu的性能测试

泪湿孤枕 提交于 2020-04-29 17:04:11
参考文章: Kudu的性能测试 1. kudu和parquet的比较  上图是官方给出的用Impala跑TPC-H的测试,对比Parquet和Kudu的计算速度。从图中我们可以发现,Kudu的速度和parquet的速度差距不大,甚至有些Query比parquet还快。然而,由于这些数据都是在内存缓存过的,因此该测试结果不具备参考价值。 2. kudu和Hbase的比较 图是官方给出的另一组测试结果,从图中我们可以看出,在scan和range查询上,kudu和parquet比HBase快很多,而random access则比HBase稍慢。然而数据集只有60亿行数据,所以很可能这些数据也是可以全部缓存在内存的。对于从内存查询,除了random access比HBase慢之外,kudu的速度基本要优于HBase。 3、超 大数据 集的查询性能   Kudu的定位不是in-memory database。因为它希望HDFS/Parquet这种存储,因此大量的数据都是存储在磁盘上。如果我们想要拿它代替HDFS/Parquet + HBase,那么超大数据集的查询性能就至关重要,这也是Kudu的最初目的。然而,官方没有给出这方面的相关数据。由于条件限制,网易暂时未能完成该测试。下一步,我们将计划搭建10台Kudu + Impala服务器,并用tpc-ds生成超大数据,来完成该对比测验。 来源

Hbase详细架构图解

梦想的初衷 提交于 2020-04-29 15:55:23
目录 主要组件 数据模型 注意 :Hbase是依赖zookeeper和hdfs的,需要启动zk和hdfs。 主要组件 Zookeeper: HBase 通过 Zookeeper 来做 Master 的高可用、RegionServer 的监控、元数据的入口以及集群配置的维护等工作。 HDFS: HDFS 为 HBase 提供最终的底层数据存储服务,同时为 HBase 提供高可用的支持。 Master:(是所有 Region Server 的管理者,其实现类为 HMaster) 对RegionServer的操作: 监控 RegionServer 处理RegionServer 故障转移 处理 元数据 的变更 处理region的 分配或转移 在空闲时间进行数据的 负载均衡 通过Zookeeper发布自己的位置给客户 对于表的操作(DDL) create, delete, alter RegionServer:(为 Region 的管理者,其实现类为 HRegionServer) 1.负责存储HBase的实际数据 2.处理分配给它的Region 3.刷新缓存到HDFS 4.维护Hlog 5.执行压缩 6.负责处理Region分片 对于数据的操作:(DML) get, put, delete; Region: Hbase表的分片

都快5月份了,还没有收到心仪的offer(一篇全面的面经送给您)。

耗尽温柔 提交于 2020-04-29 12:37:59
这里,笔者结合自己过往的面试经验,整理了一些核心的知识清单,帮助读者更好地回顾与复习 Java 服务端核心技术。本文会以引出问题为主,解答为辅。有需要的朋友可以 关注+微信获取! 1.JVM JVM内存区域 JVM运行时内存 垃圾回收与算法 JAVA 四中引用类型 GC分代收集算法 VS 分区收集算法 GC垃圾收集器 JAVA IO/NIO JVM 类加载机制 2. JAVA集合 List Set Map 3.JAVA多线程并发 JAVA线程实现/创建方式 4种线程池 线程生命周期(状态) 终止线程4种方式 JAVA锁 线程基本方法 线程上下文切换 同步锁与死锁 线程池原理 JAVA阻塞队列原理 CyclicBarrier、CountDownLatch、Semaphore的用法 volatile关键字的作用(变量可见性、禁止重排序) 如何在两个线程之间共享数据 ThreadLocal作用(线程本地存储) synchronized和ReentrantLock的区别 ConcurrentHashMap并发 Java中用到的线程调度 进程调度算法 什么是CAS(比较并交换-乐观锁机制-锁自旋) 什么是 AQS(抽象的队列同步器) 4. JAVA基础 JAVA异常分类及处理 JAVA反射 JAVA注解 JAVA内部类 JAVA泛型 JAVA序列化(创建可复用的Java对象) JAVA复制

如何在 HBase Shell 命令行正常查看十六进制编码的中文?哈哈~

做~自己de王妃 提交于 2020-04-28 09:20:09
今天比较开心,只想哈哈 哈哈哈 啥也不多说了,直接看示例吧!绝对比我口才好~ hbase(main):050:0> scan 'test' ROW COLUMN+CELL row-1 column=f:c1, timestamp=1587984555307, value=\xE7\xA6\x85\xE5\x85\x8B row-2 column=f:c2, timestamp=1587984555307, value=HBase\xE8\x80\x81\xE5\xBA\x97 row-3 column=f:c3, timestamp=1587984555307, value=HBase\xE5\xB7\xA5\xE4\xBD\x9C\xE7\xAC\x94\xE8\xAE\xB0 row-4 column=f:c4, timestamp=1587984555307, value=\xE6\x88\x91\xE7\x88\xB1\xE4\xBD\xA0\xE4\xB8\xAD\xE5\x9B\xBD\xEF\xBC\x81 4 row(s) in 0.0190 seconds hbase(main):051:0> scan 'test', {FORMATTER => 'toString'} ROW COLUMN+CELL row-1 column=f:c1, timestamp