Apache HBase

面对key数量多和区间查询低效问题:Hash索引趴窝,LSM树申请出场

此生再无相见时 提交于 2021-01-29 03:02:21
摘要: Hash索引有两个明显的限制:(1)当key的数量很多时,维护Hash索引会给内存带来很大的压力;(2)区间查询很低效。如何对这两个限制进行优化呢?这就轮到本文介绍的主角,LSM树,出场了。 我们通过 append-only log 的数据结构,实现了一个具备高写入性能的key-value数据库。 append-only log 之所以有很高的写入性能,主要 得益于磁盘的顺序写入 。这可能违反了我们对磁盘的认知,因为在我们的印象中,写磁盘总是很慢。其实不然,准确地说应该是 随机写磁盘很慢 ,因为在写之前可能会进行多次寻址。如果只是顺序写磁盘,性能是非常的高,如下的一个ACM报告中显示,顺序写磁盘甚至比随机写内存的性能还要高! 举个例子,Kafka是一个高性能的消息队列,它的厉害之处就在于极致地利用磁盘的顺序写入性能,如果生产者和消费者的速率相当,消息甚至可以在操作系统的Page Cache层面就完成了传递。所以,以后别再认为写磁盘很慢了! append-only log 大幅提升了数据写入性能,但是随之而来的是,非常低的数据读取性能。针对这一点,我们采用Hash索引进行了优化,优化的效果也非常的显著。然而,Hash索引有两个明显的限制:(1)当key的数量很多时,维护Hash索引会给内存带来很大的压力;(2)区间查询很低效。如何对这两个限制进行优化呢?这就轮到本文介绍的主角

NoSQL概述-从Mongo和Cassandra谈谈NoSQL

强颜欢笑 提交于 2021-01-27 07:21:33
分两部分介绍NoSQL - NoSQL 概览 1. RDBMS VS NoSQL 2. NoSQL 种类 3. NoSQL 的一些名词 - 结合Mongo,Cassandra谈谈NoSQL的设计和应用 1. 部署架构 2. 分片 3. 数据存储与维护 4. 读写分析 5. 数据模型 关系型数据库 VS NoSQL VS New SQL 关系型数据库:元组关系(ER),提供了一套标准的接口,SQL NoSQL: non-relational,Not-Only SQL,致力于解决关系型数据库扩展的问题 New SQL: 结合RDBMS 与NoSQL的优势(还没有看到一个清晰的概念定义) NoSQL 种类 数据模型|相关数据库|典型应用|优势|劣势| ----|:----:|----:|----:|----:| key-value|Redis|缓存|快速查询|存储数据缺乏结构化 列族|Cassandra,Hbase|分布式的文件系统,大规模的数据存储|易于分布式扩展|功能受限 document|Mongo,CouchDB||free-schema|可扩展性查 图|Neo4J|社交网络|利用图结构相关算法|不易扩展 key-value 结构 wide-column(两级映射) document mongo应用 NoSQL 主要概念 1. 不支持事务和join 2. BASE VS ACID

分布式CAP理论、BASE理论详解

冷暖自知 提交于 2021-01-23 13:56:08
一、什么是CAP? CAP示意图 Consistency (一致性): “all nodes see the same data at the same time”,即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。一致性的问题在并发系统中不可避免,对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。 Availability (可用性): 可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。 Partition Tolerance (分区容错性): 即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。分区容错性要求能够使应用虽然是一个分布式系统,而看上去却好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求,对于用户而言并没有什么体验上的影响。 二、取舍策略 取舍策略图 CAP三个特性只能满足其中两个,那么取舍的策略就共有三种: CA without P: 如果不要求P(不允许分区),则C(强一致性)和A

Clickhouse 在58的实践之路

限于喜欢 提交于 2021-01-23 09:04:52
文章目录 1 Clickhouse简介 1.1 为什么选择Clickhouse 1.2 Clickhouse特性 2 Clickhouse建设 2.1 整体架构 2.1.1 数据接入层 2.1.2 数据存储层 2.1.3 数据服务层 2.1.4 数据应用层 3 Clickhouse运维管理平台 3.1 配置文件结构 3.2 元数据管理 3.3 自动化运维 3.4 监控与报警 4 Clickhouse应用 4.1 BI查询引擎 4.2 集群构建 4.3 问题及优化 5 实时数仓 5.1 分层架构 5.2 数据输入与输出 5.3 数据产品 6 常见问题 6.1 数据写入 6.2 JOIN操作 6.3 常用参数 7 总结与展望 在数据量日益增长的当下,传统数据库的查询性能已满足不了我们的业务需求。而Clickhouse在OLAP领域的快速崛起引起了我们的注意,于是我们引入Clickhouse并不断优化系统性能,提供高可用集群环境。本文主要讲述如何通过Clickhouse结合大数据生态来定制一套完善的数据分析方案、如何打造完备的运维管理平台以降低维护成本,并结合具体案例说明Clickhouse的实践过程。 Clickhouse简介 为什么选择Clickhouse 目前企业用户行为日志每天百亿量级,虽然经过数仓的分层以及数据汇总层通用维度指标的预计算

微服务的简单介绍

|▌冷眼眸甩不掉的悲伤 提交于 2021-01-23 07:03:56
1、单体应用的缺点 1)部署效率低下 2)协作开发成本高 3)系统高可用性能差 4)线上发布变慢 2、微服务的简单介绍 2.1)将一个单一应用程序,按照业务拆分呢为一组小型服务. 2.2)每个服务只做一件事,每个服务运行在自己的进程中 2.3)服务之间通过轻量级的通信机制(httprestapi) 2.4)每个服务都能够独立的部署 2.5)每个服务甚至可以拥有自己的数据库 2.6)微服务以及微服务架构的是二个完全不同的概念。微服务强调的是服务的大小和对外提供的单一功能,而微服务架构是指把一个一个的微服务组合管理起来,对外提供一套完整的服务 3、微服务的优点 ①:每个服务足够小,足够内聚,代码更加容易理解,专注一个业务功能点(对比传统应用,可能改几行代码需要了解整个系统) ②:开发简单,一个服务只干一个事情。(加入你做支付服务,你只要了解支付相关代码就可以了) ③:微服务能够被2-5个人的小团队开发,提高效率(你应该可以想象我们那时的状况。如果一次上线超过五个人参与的话,就会经常出现各种问题:有的人忘记提交代码、有的人忘记打包、有的人忘记修改工程依赖到最新版本。一次上线过程需要反复确认,耗费了大量精力,严重影响了整体的开发和部署效率。) ④:服务松耦合,每个服务都能够开发部署。 ⑤:前后段分离,作为java开发人员,我们只要关系后端接口的安全性以及性能,不要去关注页面的人机交互

hbase架构

强颜欢笑 提交于 2021-01-22 12:44:57
Client 包含访问HBase的接口并维护cache来加快对HBase的访问Zookeeper 保证任何时候集群只有一个master 存储所有Region的寻址入口 实时监控Region server的上线和下线信息,并实时通知给Master 存储HBase的schema和table元数据 Master 为Region server分配region 负责Region server并重新分配其上的region 管理用户对table的增删改操作 Region server 维护region,处理对这些region的io请求 负责切分在运行过程中变得过大的region Region HBase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据;每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,region就会等分为两个新的region(裂变) 当table中的行不断地增多,就会有越来越多的region,这样一个完整的表被保存在多个region server上 Mestor与storefile 一个region由多个store组成,一个store对应一个cf store包括位于内存中的memstore和位于磁盘的storefile写操作 Memstore 当memstore中的数据达到某个阀值

sqoop1再踩坑

给你一囗甜甜゛ 提交于 2021-01-22 12:26:41
一、什么是Sqoop Sqoop是一个在结构化数据和Hadoop之间进行批量数据迁移的工具,结构化数据可以是Mysql、Oracle等RDBMS。Sqoop底层用MapReduce程序实现抽取、转换、加载,MapReduce天生的特性保证了并行化和高容错率,而且相比Kettle等传统ETL工具,任务跑在Hadoop集群上,减少了ETL服务器资源的使用情况。在特定场景下,抽取过程会有很大的性能提升。 如果要用Sqoop,必须正确安装并配置Hadoop,因依赖于本地的hadoop环境启动MR程序;mysql、oracle等数据库的JDBC驱动也要放到Sqoop的lib目录下。本文针对的是Sqoop1,不涉及到Sqoop2,两者有大区别,感兴趣的读者可以看下官网说明。 二、import import是数据从RDBMS导入到Hadoop的工具 2.1、split Sqoop并行化是启多个map task实现的,-m(或--num-mappers)参数指定map task数,默认是四个。并行度不是设置的越大越好,map task的启动和销毁都会消耗资源,而且过多的数据库连接对数据库本身也会造成压力。在并行操作里,首先要解决输入数据是以什么方式负债均衡到多个map的,即怎么保证每个map处理的数据量大致相同且数据不重复。--split-by指定了split column,在执行并行操作时

没搞清楚网络I/O模型?那怎么入门Netty

99封情书 提交于 2021-01-18 17:03:47
本文是Netty系列笔记第2篇 Netty是网络应用框架,所以从最本质的角度来看,是对网络I/O模型的封装使用。 因此,要深刻理解Netty的高性能,也必须从网络I/O模型说起。 看完本文,可以回答这三个问题: 五种I/O模型是什么?核心区别在哪里? 同步=阻塞?异步=非阻塞? Netty的高性能,是采用了哪种I/O模型? 1.掌握五种I/O模型的关键钥匙 Unix系统下的五种基本I/O模型大家应该都有所耳闻,分为: blocking I/O(同步阻塞IO,BIO) nonblocking I/O(同步非阻塞IO,NIO) I/O multiplexing (I/O多路复用) signal driven I/O(信号驱动I/O) asynchronous I/O(异步I/O,AIO) 每种I/O的特性如何,尤其是同步/非同步、阻塞/非阻塞的区别,其实很多人并不能准确地进行区分。 所以,我们先把最核心的“钥匙”告诉大家,带着这把“钥匙”再来看I/O模型的关键问题,就能手到擒来了。 当一次网络IO发生时,主要涉及到 三个对象 : 发起此次IO操作的Process或者Application 系统内核kernel。用户进程无法直接操作I/O设备,必须通过系统内核kernel与I/O设备交互。 I/O设备,包括网络、磁盘等。本文主要针对网络。 真正的I/O过程,主要分为 两个阶段 :

浅淡 Apache Kylin 与 ClickHouse 的对比

不问归期 提交于 2021-01-16 13:27:49
作者简介 周耀,Kyligence 解决方案架构师,Apache Kylin、Apache Superset Contributor。 Apache Kylin 和 ClickHouse 都是目前市场流行的大数据 OLAP 引擎;Kylin 最初由 eBay 中国研发中心开发,2014 年开源并贡献给 Apache 软件基金会,凭借着亚秒级查询的能力和超高的并发查询能力,被许多大厂所采用,包括美团,滴滴,携程,贝壳找房,腾讯,58同城等; OLAP 领域这两年炙手可热的 ClickHouse,由俄罗斯搜索巨头 Yandex 开发,于2016年开源,典型用户包括字节跳动、新浪、腾讯等知名企业。 这两种 OLAP 引擎有什么差异,各自有什么优势,如何选择 ? 本文将尝试从技术原理、存储结构、优化方法和优势场景等方面,对比这两种 OLAP 引擎, 为大家的技术选型提供一些参考。 01 技术原理 技术原理方面,我们主要从 架构 和 生态 两方面做个比较。 1.1 技术架构 Kylin 是基于 Hadoop 的 MOLAP (Multi-dimensional OLAP) 技术,核心技术是 OLAP Cube ;与传统 MOLAP 技术不同,Kylin 运行在 Hadoop 这个功能强大、扩展性强的平台上,从而可以支持海量 (TB到PB) 的数据;它将预计算(通过 MapReduce 或

详谈分布式最终一致性

北慕城南 提交于 2021-01-14 13:34:59
“什么是分布式系统?这取决于看系统的角度。对于坐在键盘前使用IBM个人电脑的人来说,电脑不是一个分布式的系统。但对于在电脑主板上趴着的虫子来说,这台电脑就是一个分布式系统。” —— Leslie Lamport 引言 分布式一致性问题随处可见,任何一个实体/联接模型,都可能存在分布式一致性问题。如果把单机拆开来看,CPU、内存、I/O设备组成的机箱本身就是一个小型的分布式系统,需要确保对这个系统操作的最终一致性。幸运的是这部分工作已经交给操作系统和数据库软件来帮我们完成。而在大型分布式企业级应用中,分布式最终一致性方案需要根据系统自身特点量身定制,是系统设计的重点。近年来随着沪江业务的快速增长和微服务治理推广,本地ACID事务早已不能满足业务和系统的发展需求。大部分业务流程都需要跨多微服务的调用来协作完成,并且要求系统确保分布式最终一致性。 可以选择分布式事务框架方案,目前主流的分布式事务框架大致可分为3类实现 : 基于XA协议的两阶段提交(2PC)方案 基于支付宝最早提出的TCC(Try、Confirm、Cancel)方案 基于ebay最早提出的消息队列异步确保方案 此外还有较轻的解决方案,业务系统可以根据自身需要,选择通过幂等/重试、状态机、恢复日志、异步校验等技术来确保最终一致性。 重型武器 采用分布式事务框架的方案,最终一致性由分布式事务框架保证