怎么建自己的手机网站吗,怎么做1688网站,做网站编程需要学什么软件,学习网站建设的心得一、引言
时间到了2019年#xff0c;数据库也发展到了一个新的拐点#xff0c;有三个明显的趋势#xff1a;
越来越多的数据库会做云原生(CloudNative)#xff0c;会不断利用新的硬件及云本身的优势打造CloudNative数据库#xff0c;国内以阿里云的Cloud HBase、POLARDB…一、引言
时间到了2019年数据库也发展到了一个新的拐点有三个明显的趋势
越来越多的数据库会做云原生(CloudNative)会不断利用新的硬件及云本身的优势打造CloudNative数据库国内以阿里云的Cloud HBase、POLARDB为代表此块文章会有一定的引述但不是本文的重点。NoSQL正在解决BigData领域的问题。根据Forrester NoSQL的报告BigData NoSQL是提供 存储、计算处理、支持水平扩展、Schemaless以及灵活的数据模型特别提到需要支持复杂计算一般通过集成Spark或者实现单独的计算引擎实现。Cassandra商业化公司Datastax提供的产品是直接在Cassandra之上集成了Spark另外ScyllaDB公司首页的宣传语就是The Real-Time Big Data Database。大数据的5V特性包括 Volume数据量大包括采集、存储和计算的量都非常大Variety种类和来源多样化包括结构化、半结构化和非结构化数据Value数据价值密度相对较低或者说是浪里淘沙却又弥足珍贵Velocity数据增长速度快处理速度也快时效性要求高Veracity数据的准确性和可信赖度即数据的质量需要高。5V特性可以使用BigData NoSQL数据库很好的满足且又能满足实时的写入分析及展现。越来越多的公司或者产品都是融合多个能力Strapdata公司把Cassandra及ElasticSearch的能力融合在一起Datastax直接在Cassandra之上集成了SparkSQLServer也是融合了Spark打造Native Spark满足DB计算能力外延的商业诉求。
阿里云HBase经过公共云两年单独的HBase在阿里内部已经发展快9年的发展融合开源Apache HBase、Apache Phoenix、Apache Spark、Apache Solr等开源项目再加上一系列自研特性满足 【一体化数据处理平台提供一站式能力】 , 基本架构如下
我们是站在Apache巨人的肩膀上自研了 ApsaraDB Filesystem、HBase冷热分离、SearchIndex、SparkOnX、BDS等模块优化了HBase、Phoenix、Spark等内核一些patch并反馈到社区维护打造了多模服务、数据工作台等一些列的平台能力。自研部分是我们平台核心的核心竞争力每一层每一个组件都是我们精心打造满足客户数据驱动业务的实际需求。为了降低客户的准入门槛我们在Github上提供了Demo支持aliyun-apsaradb-hbase-demo欢迎大家关注并贡献代码。接下来笔者会介绍各层力求简单通俗文中有大量的链接以衍生阅读。
二、业务视角及数据流
作为一个存储计算平台价值在满足不同的业务需求。见下图 此图描述了数据的来源、通道到沉淀到云HBase平台再通过平台提供的Spark引擎去挖掘价值反馈给业务系统。此类似一个循环系统在阿里内部形象称为【业务数据化再数据业务化】。 结合架构图及业务图此平台融合了 存储包括实时存储及离线存储、计算、检索等技术。整个系统都打造在ApsaraDB Filesystem统一文件层之上把检索通过Phoenix的SearchIndex包装以降低易用性打造领域引擎满足领域的需求内置BDS(数据通道)实时归档数据到列存再通过Spark引擎挖掘价值。 详细参考【选择阿里云数据库HBase版十大理由】
三、统一文件访问层
ApsaraDB Filesystem简称ADB FS以Hadoop FileSystem API为基础构建了云HBase生态文件层底座。面向HBase生态提供了无感知的混合存储能力极大简化了HBase生态接入云端多存储形态的复杂环境。支持OSS、阿里云HDFS、基于云盘或者本地盘构建的HDFS以及基于共享云盘构建的系统。每种分布式文件系统所用的硬件不同、成本不同、延迟不同、吞吐量不同这里不展开。我们可以不断扩展只要添加一个实现xxxFileSystem即可。基于OSS直接实现的FS是无法具备原子性的元数据管理能力的实现方案是在HDFS的namenode存元数据实际的存储存放在OSS之上。对Rename操作只需要移动元数据所以非常轻量。 四、HBase KV层
HBase是基于Bigtable在hadoop社区的开源实现提供了如稀疏宽表、TTL、动态列等特性。HBase在阿里已经发展9年已经有数位PMC及Committer可以说在国内阿里在HBase的影响力还是数一数二的。社区也有不少的Patch也是阿里贡献。在18年云HBase首家商业化了HBase2.0并贡献了数十个BugFix给社区。有不少客户单独使用HBase API满足业务需求也有不少客户使用Phoenix NewSQL层NewSQL层提升易用性及提供了很多好用的功能。在HBase层面除了修复社区的Bug以外也做了几个较大的特性。 在对比关系型数据方面HBase也有天然的优势参考对比MySQL一文看透HBase的能力及使用场景
冷热分离 冷热分离可以降低存储成本66%左右。广泛应用于车联网、冷日志等场景下。我们把冷数据存放到OSS之上且用户还可以使用HBase的API访问。基本原理是把Hlog存在HDFS之上再把冷的HFile存放在OSS之上。GC优化 GC一直是Java应用中讨论的一个热门话题尤其在像HBase这样的大型在线存储系统中大堆下(百GB)的GC停顿延迟产生的在线实时影响成为内核和应用开发者的一大痛点。平台实现了CCSMap新的内存存储结构结合offheap及新的ZenGC等一列的优化在生产环境young GC时间从120ms减少到15ms在实验室进一步降低到5ms左右。可以参考文章如何降低90%Java垃圾回收时间以阿里HBase的GC优化实践为例
五、检索层
HBase底层基于LSM擅长前缀匹配和范围查找数据模型上属于行存大范围扫描数据对系统影响很大。我们知道用户的需求往往是各式各样不断变化的。对于要求高TPS高并发查询业务比较固定且简单的场景HBase可以很好满足。更复杂一些当用户对同一张表的查询条件组合有固定多个时可以通过二级索引的方式来解决但是二级索引有写放大问题索引数量不能太多一般建议不超过10个。当面对更复杂的查询模式比如自由条件组合模糊查询全文查询等用当前的索引技术是无法满足的需要寻求新的解决方案。我们容易想到搜索引擎比如Lucene、Solr以及ElasticSearch是专门面向复杂查询场景的。为了应对各种复杂的查询需求搜索引擎运用到了大量跟LSM Tree十分不同的索引技术比如倒排、分词、BKD Tree做数值类型索引、roaring bitmap实现联合索引、DocValues增强聚合和排序等。使用搜索引擎的技术来增强HBase的查询能力是一个十分值得深入探索的技术方向。
当前用户要想实现复杂查询只能重新购买新的搜索集群通过导数据的方式将数据导入到新的搜索服务中。这种方式存在很多这样那样的问题维护成本比较高需要购买在线数据库分析数据库和数据传输服务学习门槛高需要同时熟悉至少上诉三种服务无法保证实时性在线库入库和检索库入库效率不匹配数据冗余存储在线库索引数据和结果数据设计的所有数据都需要导入数据一致性难保证数据乱序问题十分常见特别是对于分布式在线库更是如此。云HBase引入Solr并在产品和内核上做了一系列工作将其打造成统一的产品体验一揽子解决了前述所有问题。用户在控制台上一键可以开通检索服务参考文章云HBase发布全文索引服务,轻松应对复杂查询。 检索服务的架构如上图所示最底层是分布式文件系统的统一抽象HBase的数据和Solr中的数据都会存储在分布式文件系统中。最上层是分布式协调服务ZookeeperHBase、Indexer、Solr都是基于其实现分布式功能。Indexer实现了存量HBase数据的批量导入功能有针对性地实现了数据批量导入的分布式作业机制。Indexer服务也实现了实时数据的异步同步功能利用HBase的后台Replication机制Indexer实现了Fake HBase功能接收到HBase的数据后将其转换为Solr的document并写入solr。针对HBase写入速度比Solr快的问题我们设计并实现了反压机制可以将Solr中数据的延迟控制在用户设定的时间范围内该机制同时也避免了HLog消费速度过慢的堆积问题。实时同步和批量导入可以同时运行我们通过保序的时间戳保证了数据的最终一致性。为了提高产品的易用性我们还基于Phoenix 实现了检索服务的SQL封装并在存储查询等方面做了一系列优化升级该部分在下个章节将会介绍。
六、NewSQL Phoenix
Phoenix是HBase之上的SQL层Phoenix让HBase平台从NoSQL直接进化到了NewSQL。在HBase的基础之上再支持了Schema、Secondary Indexes、View 、Bulk Loading(离线大规模load数据)、Atomic upsert、Salted Tables、Dynamic Columns、Skip Scan等特性。目前云上最大客户有200T左右且50%的客户都开通了Phoenix SQL服务。我们修复了社区数十个Bug及提了不少新特性团队也拥有1位Committer及数位contributor。在18年我们在充分测试的基础上先于社区正式商业化了Phoenix5.0并支持了QueryServer,支持轻量的JDBC访问。同时社区的5.0.1也将由我们推动发布。
Phoenix本身我们做了一系列稳定性性能等方面的优化升级主要有客户端优化MetaCache机制大数据量简单查询性能提升一个数量级索引表回查主表使用lookupjoin的方式优化性能提升5到7倍轻客户端优化batch commit性能提升2到3倍解决Phoenix时区问题提高易用性降低数据一致性问题概率禁用DESC扫全表等有风险功能实现大批量数据导入的Bulkload功能等等。这些稳定性和性能方面的提升在用户侧得到了很好的反馈。 Phoenix目前基本的架构如图所示我们让Phoenix支持了HBase和Solr双引擎用户可以使用SQL实现对HBase和Solr数据的管理和查询大大提高了系统的易用性。Solr和HBase之间的同步机制可以参考上节。在支持复杂查询方面我们设计并实现了一种新的索引Search Index使用方式跟Phoenix的Global Index类似主要区别在于Search Index的索引数据存储在Solr里面而Global Index的索引数据是一张单独的HBase表。直接通过SQL管理Search Index的生命周期、数据同步和状态自动映射数据字段类型并通过SQL支持复杂查询这极大降低了用户的使用门槛。Search Index可以统一根据HBase和Solr的特性做优化由于原表在HBase中可以通过RowKey高效查询Solr中只需要存储作为查询条件的字段的索引数据查询字段的原数据不需要存储在Solr中表中的非查询字段则完全不需要存储到Solr中。相对于用户单独购买检索产品并同步数据的方案Search Index可以大大降低存储空间。同时根据索引特性Phoenix在做执行计划优化时可以动态选择最优的索引方案。
我们还打造了一个系列的文章这些文章是很多国内用户熟悉和学习Phoenix的入门资料在社区里面也收获了较高的影响力参考 Phoenix入门到精通
七、多模领域层
数据类型有表格、文档、宽表、图、时序、时空等不同的类型。云HBase之上打造了 HGraphDB分布式图层、OpenTSDB分布式时序层、Ganos分布式空间层分别满足3大子场景的诉求。每个都是分布式的组件具备PB级别的存储、高并发读写及无限扩展的能力。
HGraphDB HGraphDB是云HBase完全自研的组件。HGraphDB基于Tinker pop3实现支持集成Tinker pop3全套软件栈以及Gremlin语言。HGraphDB是一个OLTP图库支持schema以及顶点和边的增删改查还有图的遍历。图数据库HGraphDB介绍OpenTSDBOpenTSDB是社区在HBase的基础之上提供的时序引擎以HBase为底座满足PB级别的时序存储需求。团队做了大量优化为了提升稳定性其中【时间线压缩优化】是一个比较重要的优化见云HBase之OpenTSDB时序引擎压缩优化Ganos Ganos取名于大地女神盖亚Gaea和时间之神柯罗诺斯Chronos代表着“时空” 结合。Ganos空间算子增强、时空索引增强、GeoSQL扩展等与Spark结合支持大规模遥感空间数据在线分析与管理。详细参考文章阿里云时空数据库引擎HBase Ganos上线场景、功能、优势全解析
八、列式存储
行列混合HTAP一直是各大数据库梦寐追求大统一的技术类似于M理论想统一量子力学与万有引力。目前看起来一份存储难以满足各种诉求通用的做法是行存与列存的数据分开存实现手段一种是通过同步的方案把行存的数据再转存一份列存另一种是通过raft等变种协议的手段实现行列副本同时存在。 HBase擅长在线查询场景底层的HFile格式实际还是行存直接Spark分析HBase表在大范围查询的情况下性能一般(Spark On HBase也有很多优化点)。在这样的背景下我们构建了HBase的实时HLog增量同步归档到列存的链路来有效满足用户对于HBase数据分析的需求。列存的压缩比比行存高增加部分存储成本有效的增强分析能力用户是能够接受的。HBase搭配列存可以有效的驱动用户业务的发展列存分析后的结果数据回流到HBase支持业务让用户业务在HBase平台中快速迭代。在列存之中也有类似LSM的 Delta全量的比如Kudu以及 Delta Lake。云HBase参考了Delta Lake及Parquet技术提供更加高效的一体化分析。
Parquet Parquet的灵感来自于2010年Google发表的Dremel论文文中介绍了一种支持嵌套结构的存储格式并且使用了列式存储的方式提升查询性能目前Parquet已经是大数据领域最有代表性的列存方式广泛应用于大数据数据仓库的基础建设。Delta Delta原本是Spark的商业公司Databriks在存储方面做的闭源特性偏向实时读写已于近期开源核心是解决了大数据分析场景中常见的数据更新的问题。具体做法按列式格式写数据加快分析读增量更新数据 delta 则采取行式写入支持事务和多版本然后系统通过后台不断地进行合并。一键同步用户可以根据自身的业务需求进行转存对于对实时性要求比较高的用户可以选择实时同步的方式BDS服务会实时解析HLog并转存到Delta用户可以通过Spark对Delta直接进行查询而对于离线场景的转存用户可以在控制台上根据自身业务需要进行配置可以自定义在业务低峰期进行转存也可以选择是否进行增量和全量合并后台调度系统会自动触发转存逻辑。
九、分析层
在云HBase平台里面沉淀了不少数据或者在进入云HBase平台的数据需要流ETL参考业界的通用做法目前最流行的计算引擎是Spark我们引入Apache Spark来满足平台的数据处理需求。Spark采取的是DAG的执行引擎支持SQL及编程语言比传统的MR快100倍另外支持流、批、机器学习、支持SQLPythonScala等多种编程语言。云HBase平台提供的能力有流式的ETL、Spark on HBase(也包括其它数据库)及HBase数据转为列存后的分析。为了满足Spark低成本运行的需求我们即将支持Serverless的能力。Spark在数据库之间处于一个胶水的作用平台通过Spark打造数据处理的闭环系统以核心客户的核心问题比如点触科技的游戏大数据平台
支持流式处理 大部分的系统之中数据经过中间件之后需要一些预处理再写入到HBase之中一般需要流的能力。Spark Streaming提供秒级别的流处理能力另外Structured Streaming可以支持更低时延。平台支持Kafka、阿里云LogHub、DataHub等主要的消息通道。关于很多从业者关心的Spark跟Flink对比的问题其一Flink基于pipeline模式的流比Spark基于mini batch的流在延迟上要低功能上也更强大但是大部分用户很难用到毫秒级和高阶功能Spark的流满足了大部分场景其二Spark生态要比Flink成熟影响力也更大。Spark On X 分析层不仅仅支持HBase、Phoenix以外也包括POALRDB、MySQL、SQLServer、PG、Redis、MongoDB等系统。比如归档POLARDB数据做分析Spark On X支持schema映射、算子下推、分区裁剪、列裁剪、BulkGet、优先走索引等优化。算子下推可以减少拉取DB的数据量以及减少DB的运算压力从而提高Spark On X的运算性能。HBase一般存储海量数据单表可达千亿、万亿行数据Spark On HBase的rowkey过滤字段下推到HBase查询性能可达毫秒级别。
十、数据工作台
在线DB一般是业务系统连接DB的但离线的作业与在线的平台不一样需要提供Job的管理及离线定时运行另外还需要支持交互式运行。在云HBase平台上我们提供了 【数据工作台】来满足这一需求。数据工作台能力有资源管理、作业管理、工作流、回话管理、交互式查询、及作业的告警。作业可以是jar包、python脚本、SQL脚本等工作流可以把多个作业关联在一起并可以周期性或者指定固定时间运行回话管理可以启动一个在线的交互式Spark回话满足交互式查询的诉求交互式查询可以满足在线运行 sql脚本、python及scala脚本。 十一、DBaaS
云HBase构建了一整套的管理系统支持全球部署、监控报警(包括云监控及原生自带监控页面)、在线扩容、安全白名单、VPC网络隔离、在线修改配置、公网访问、小版本在线一键升级、分阶段低峰期MajorCompaction优化、自动检测集群可用状态紧急报警人工干预、磁盘容量水位报警等等运维操作及自动化优化。 平台提供7*24小时人工答疑及咨询可直接咨询钉钉号 云HBase答疑。除此之外打造了2大企业级特性备份恢复、BDS服务
备份恢复 HBase的数据也是客户的核心资产为了保障客户的数据不被意外删除经常是用户自己误删时我们内置了备份恢复的服务。此服务是直接独立于HBase内核单独进程保障的。基本原理是全量数据拉HFile增量数据拉Hlog。满足了数百TB数据的备份恢复实时备份的延迟时间在数分钟以内。数据恢复可以满足按照时间点恢复数百TB规模的集群基本在2天内完成恢复。不管是备份还是恢复都不影响原来的集群继续提供服务。其中细节点也较多可以参考访问云HBase备份恢复为云HBase数据安全保驾护航BDS服务 数据迁移是一个重的事项尤其当类似如HBase数十TB数据的迁移。我们专门为云HBase打造数据迁移的服务命名为BDS。此服务满足各类数据迁移及同步的场景包括自建HBase集群迁移上阿里云HBase、跨地域迁移例如从青岛机房迁移到北京机房、HBase1.x升级HBase2.x、网络环境经典网络切换成VPC等
十二、后记
存储、检索、分析是BigData三大核心的能力也是BigData NoSQL着力打造的核心能力通过深度整合更好解决客户风控、画像等数据驱动业务的问题。阿里云云HBase团队基于云上环境的种种特性打造了Native的众多优势目前服务了数千家中小型企业。另外为了服务中国广大的开发者自从18年5月发起成立了【中国HBase技术社区】举办线下meetup 9场次邀请内外部嘉宾数十人报名2801人公众号1.1w人直播观看2.1w人影响数万企业。特别为开发者提供免费版新人1个月的免费试用以方便其开发学习以及交流。
未来我们将继续紧紧贴合云上用户需求打磨产品打造核心竞争力提升易用性保障系统稳定性以及引入Serverless特性以进一步降低成本。
If not now, when? If not me, who?
原文链接 本文为云栖社区原创内容未经允许不得转载。