Apache HBase

【详细爆文】HBase基础(一):架构理解

拜拜、爱过 提交于 2020-02-26 21:46:53
版本说明: 通过 HDP 3.0.1 安装的 HBase 2.0.0 一、概述 Apache HBase 是基于 Hadoop 构建的一个分布式的、可伸缩的海量数据存储系统。常被用来存放一些海量的(通常在TB级别以上)、结构比较简单的数据,如历史订单记录,日志数据,监控 Metris 数据等等, HBase 提供了简单的基于 Key 值的快速查询能力。 <!--more--> HBase 实际上更像是“数据存储”而不是“数据库”,因为它 缺少 RDBMS 中找到的许多功能,例如二级索引,触发器和高级查询语言等。 但是 HBase 具备许多 RDBMS 没有的功能: 通过 RegionServer 扩展存储。如果 HBase 集群从10个 RegionServer 扩展到20个 RegionServer ,那么在存储和处理能力方面都会翻倍。 强大的读写能力。 自动分片。 HBase 表通过 Region 分布在 HBase 上,并且随着数据的增长, Region 会自动分割和重新分配。 RegionServer 自动故障转移。如果一个 RegionServer 宕机或进程故障,由 Master 负责将它原来所负责的 Regions 转移到其它正常的 RegionServer 上继续提供服务。 Hadoop/HDFS 集成: HBase 使用 HDFS 作为其分布式文件系统。

bilibili 实时平台的架构与实践

瘦欲@ 提交于 2020-02-26 14:57:26
摘要:本文由 bilibili 大数据实时平台负责人郑志升分享,基于对 bilibili 实时计算的痛点分析,详细介绍了 bilibili Saber 实时计算平台架构与实践。本次分享主要围绕以下四个方面: 一、实时计算的痛点 二、Saber 的平台演进 三、结合 AI 的案例实践 四、未来的发展与思考 重要:点击「 PPT 」可下载 Flink Forward Asia 大会全部PPT。 一、实时计算的痛点 1.痛点 各个业务部门进行业务研发时都有实时计算的需求。早期,在没有平台体系做支撑时开发工作难度较大,由于不同业务部门的语言种类和体系不同,导致管理和维护非常困难。其次,bilibili 有很多关于用户增长、渠道投放的分析等 BI 分析任务。而且还需要对实时数仓的实时数据进行清洗。此外,bilibili 作为一个内容导向的视频网站,AI 推荐场景下的实时计算需求也比较强烈。 2.痛点共性 开发门槛高 :基于底层实时引擎做开发,需要关注的东西较多。包括环境配置、语言基础,而编码过程中还需要考虑数据的可靠性、代码的质量等。其次,市场实时引擎种类多样,用户选择有一定困难。 运维成本高 :运维成本主要体现在两方面。首先是作业稳定性差。早期团队有 Spark 集群、YARN 集群,导致作业稳定性差,容错等方面难以管理。其次,缺乏统一的监控告警体系,业务团队需要重复工作,如计算延时、断流

分布式锁深度剖析-疫情不断,学习怎能断

╄→尐↘猪︶ㄣ 提交于 2020-02-26 09:32:29
疫情不断,学习怎能断,今天主要学习分布式锁相关原理 分布式锁深度剖析 1、分布式锁的应用场景 生产一个具体业务场景的唯一订单编号,并发场景下订单号生产会重复嘛? 2、分布式锁的原理、实现方式 锁具有的特点: 排他性:只有一个线程能获取 在计算机技术中,可提供排他性的有:文件系统,数据库(主键 唯一约束 )、缓存redis(setnx)、zookeeper(类似文件系统) 阻塞性:其他未抢到的线程阻塞,直到锁释放出来,再抢 可重入性:线程获得锁后,后续是否可重复获取该锁 常用分布式锁实现技术: 基于数据库实现 性能差,容易出现单点故障,锁没有失效时间,容易死锁 基于缓存实现 实现复杂,性能好,存在死锁(或段时间死锁)的可能 基于Zookeeper实现 实现相对简单、可靠性高、性能较好,不出现死锁 3、基于Zookeeper的分布式锁的实现 Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,Hadoop和Hbase的重要组件。 Zookeeper特点: 节点数数据结构,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据; 通过客户端可对znode进行增删改查操作,还可以注册watcher监控znode Zookeeper节点类型: (在同一个znode点下,不允许存在同名节点) 持久节点 持久顺序节点 临时节点 临时顺序节点

ZhaoWei-2020-01-27

[亡魂溺海] 提交于 2020-02-26 03:35:45
缓存穿透 正常情况下,我们去查询数据都是存在。 那么请求去查询一条数据库中根本就不存在的数据,也就是缓存和数据库都查询不到这条数据,但是请求每次都会打到数据库上面去。 这种查询不存在数据的现象我们称为缓存穿透。 解决办法 缓存空值 之所以会发生穿透,就是因为缓存中没有存储这些空数据的key。从而导致每次查询都到数据库去了。 那么我们就可以为这些key对应的值设置为null 丢到缓存里面去。后面再出现查询这个key 的请求的时候,直接返回null 。 这样,就不用在到数据库中去走一圈了,但是别忘了设置过期时间。 维护key值 提供一个能够迅速判断请求是否有效的拦截机制,比如使用布隆过滤器,吧合法的key值维护起来,如果请求带的key值不合法,则直接返回。 BloomFilter BloomFilter 类似于一个hbase set 用来判断某个元素(key)是否存在于某个集合中。 这种方式在大数据场景应用比较多,比如 Hbase 中使用它去判断数据是否在磁盘上。还有在爬虫场景判断url 是否已经被爬取过。 这种方案可以加在第一种方案中,在缓存之前在加一层 BloomFilter ,在查询的时候先去 BloomFilter 去查询 key 是否存在,如果不存在就直接返回,存在再走查缓存 -> 查 DB。 流程图如下: 缓存击穿 缓存击穿是我们可能遇到的第二个使用缓存方案可能遇到的问题。

CM6.3 High Availability

[亡魂溺海] 提交于 2020-02-26 00:53:29
HDFS High Availability YARN High Availability HBase High Availability Most aspects of HBase are highly available in a standard configuration. A cluster typically consists of one Master and three or more RegionServers, with data stored in HDFS. To ensure that every component is highly available, configure one or more backup Masters. The backup Masters run on other hosts than the active Master. Enabling HBase High Availability Using Cloudera Manager Go to the HBase service. Follow the process for adding a role instance and add a backup Master to a different host than the one on which the active

大数据(hadoop-生态系统概述以及版本演化)

走远了吗. 提交于 2020-01-09 01:44:30
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Hadoop生态系统的特点: 源代码开源(免费) 社区活跃、参与者众多 涉及分布式存储和计算的方方面面 已得到企业界验证 Hadoop1.0和2.0: Hadoop概述: 分布式存储系统HDFS(Hadoop Distributed File System) 分布式存储系统 提供了高可靠性、高扩展性和高吞吐率的数据存储服务 资源管理系统YARN(Yet Another Resource Negotiator) 负责集群资源的统一管理和调度 分布式计算框架MapReduce 分布式计算框架 具有易于编程、高容错性和高扩展性等优点 Hadoop2.0层级关系: Hadoop构成 :HDFS 分布式文件存储 源自于Google的GFS论文 发表于2003年10月 HDFS是GFS克隆版 HDFS特点 良好的扩展性 高容错性 适合PB级以上海量数据的存储 基本原理 将文件切分成等大的数据块,存储到多台机器上 将数据切分、容错、负载均衡等功能透明化 可将HDFS看成一个容量巨大、具有高容错性的磁盘 应用场景 海量数据的可靠性存储 数据归档 Hadoop构成 :YARN(资源管理系统) YARN是什么 Hadoop 2.0新增系统 负责集群的资源管理和调度 使得多种计算框架可以运行在一个集群中

分布式分析引擎——Kylin

时光怂恿深爱的人放手 提交于 2020-01-07 01:15:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Apache Kylin 是一个开源的分布式 分析引擎 ,提供 Hadoop/Spark 之上的 SQL 查询接口及 多维分析 ( OLAP )能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区。它能在 亚秒 内查询巨大的 Hive 表。 Cube构建流程 创建中间表 将中间表的数据均匀分配到不同的文件(防止数据倾斜) 创建字典表 构建cube 形成HBase的K-V结构 将cube data转化成Hfile格式并导入HBase Cube构建算法 逐层构建算法(layer)(中心开花) 每个层级的计算是基于它上一层级的结果来计算的。 每一轮的计算都是一个 MapReduce 任务,且串行执行;一个 N 维的 Cube ,至少需要 N 次 MapReduce Job 。 优点: 此算法充分利用了 MapReduce 的优点,处理了中间复杂的排序和 shuffle 工作,故 而算法代码清晰简单,易于维护; 受益于 Hadoop 的日趋成熟,此算法非常稳定,即便是集群资源紧张时,也能保证 最终能够完成。 缺点: 当 Cube 有比较多维度的时候,所需要的 MapReduce 任务也相应增加;由于 Hadoop的任务调度需要耗费额外资源,特别是集群较庞大的时候,反复递交任务造成的额外开销会相当可观; 由于

HBase的安装

女生的网名这么多〃 提交于 2019-12-29 21:09:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Zookeeper正常启动 [hadoop@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh start [hadoop@hadoop103 zookeeper-3.4.10]$ bin/zkServer.sh start [hadoop@hadoop104 zookeeper-3.4.10]$ bin/zkServer.sh start Hadoop正常部署 [hadoop@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh [hadoop@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh 解压HBase到指定目录 [hadoop@hadoop102 software]$ tar -zxvf hbase-1.3.1-bin.tar.gz -C /opt/module HBase文件配置 hbase-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_144 export HBASE_MANAGES_ZK=false JDK1.8需要注释 #export HBASE_MASTER_OPTS。。。。 #export HBASE_REGIONSERVER_OPTS。。

通过Flink实现个推海量消息数据的实时统计

天涯浪子 提交于 2019-12-22 01:23:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 背景 消息报表主要用于统计消息任务的下发情况。比如,单条推送消息下发APP用户总量有多少,成功推送到手机的数量有多少,又有多少APP用户点击了弹窗通知并打开APP等。通过消息报表,我们可以很直观地看到消息推送的流转情况、消息下发到达成功率、用户对消息的点击情况等。 个推在提供消息推送服务时,为了更好地了解每天的推送情况,会从不同的维度进行数据统计,生成消息报表。个推每天下发的消息推送数巨大,可以达到数百亿级别,原本我们采用的离线统计系统已不能满足业务需求。随着业务能力的不断提升,我们选择了Flink作为数据处理引擎,以满足对海量消息推送数据的实时统计。 本文将主要阐述选择Flink的原因、Flink的重要特性以及优化后的实时计算方法。 离线计算平台架构 在消息报表系统的初期,我们采用的是离线计算的方式,主要采用spark作为计算引擎,原始数据存放在HDFS中,聚合数据存放在Solr、Hbase和Mysql中: 查询的时候,先根据筛选条件,查询的维度主要有三个: appId 下发时间 taskGroupName 根据不同维度可以查询到taskId的列表,然后根据task查询hbase获取相应的结果,获取下发、展示和点击相应的指标数据。在我们考虑将其改造为实时统计时,会存在着一系列的难点: 原始数据体量巨大

数据查询的玄铁剑:云HBase原生二级索引发布

℡╲_俬逩灬. 提交于 2019-12-18 12:06:57
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> HBase原生提供了主键索引,用户可以根据rowkey进行高效的单行读、前缀匹配、范围查询操作。但若需要使用属性列进行查询时,则只能使用filter在查询范围内进行逐行过滤。在扫描范围较大时,会浪费大量的IO,请求RT也无法保证。为此,HBase增强版推出了原生二级索引来解决非rowkey查询的性能问题。 云HBase增强版是基于阿里内部的HBase分支(亦称Lindorm)构建的,二级索引是其核心能力之一,历经多年双11大考,在性能、吞吐、稳定性等方面都具备核心竞争力。 下面,我们从一组示例出发来了解索引的使用及其能力。 功能简介 从表设计和查询设计的角度看,HBase增强版二级索引的使用与RDBMS的二级索引基本一致。下面我们看一个简单的示例:大学生信息表( Students ),该表的主键(即rowkey)是学号,非主键是学生姓名和所属的学院名称。学生与学院是多对一的关系。 通过 HBase shell 建表,建索引: # 创建主表student,列族名为f create 'student', 'f' # 创建索引表department,为department列建索引 # COVERED_ALL_COLUMNS是HBase增强版引入的新属性关键字, # 意味冗余主表student中的所有列