`
flylynne
  • 浏览: 376917 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MySQL、HBase、ES的特点和区别

 
阅读更多

MySQL:关系型数据库,主要面向OLTP,支持事务,支持二级索引,支持sql,支持主从、Group Replication架构模型(本文全部以Innodb为例,不涉及别的存储引擎)。

HBase:基于HDFS,支持海量数据读写(尤其是写),支持上亿行、上百万列的,面向列的分布式NoSql数据库。天然分布式,主从架构,不支持事务,不支持二级索引,不支持sql。

ElasticSearch:ES是一款分布式的全文检索框架,底层基于Lucene实现,虽然ES也提供存储,检索功能,但我一直不认为ES是一款数据库,但是随着ES功能越来越强大,与数据库的界限也越来越模糊。天然分布式,p2p架构,不支持事务,采用倒排索引提供全文检索。

 

ES是一个搜索引擎,是基于Lucene的。它是一个提供了基于RESTful 的web接口,能够达到实时,稳定,可靠,快速的搜索引擎。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。Elasticsearch的性能是solr的50倍。

elasticsearch能做什么

Elasticsearch不仅仅是Lucene和全文搜索,其他特点还包括:

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 分布式的实时分析搜索引擎
  • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。
总结一句话:ES是一个功能强大,使用简单的分布式的全文搜索引擎。

elasticsearch文档的概念

在Elasticsearch中,数据是以文档(document)形式存在的,归属于一种类型(type),而这些类型存在于索引(index)。和关系型数据库中的概念对比:

SQL database table row column
** elasticsearch** index type document field

 

HBase + ElasticSearch

需求分析

HBase的查询实现只提供两种方式:
1、按指定RowKey获取唯一一条记录,get方法(org.apache.hadoop.hbase.client.Get)
2、按指定的条件获取一批记录,scan方法(org.apache.hadoop.hbase.client.Scan)
用好HBase的第一步是要将rowkey设计好。大数据量查询最好从rowkey入手,ColumnValueFilter的速度是很慢的,HBase查询速度还是要依靠rowkey,所以根据业务逻辑把rowkey设计好,之后所有的查询都通过rowkey,是会非常快。 批量查询最好是用 scan的startkey endkey来做查询条件。
HBase在0.92之后引入了coprocessors,提供了一系列的钩子,让我们能够轻易实现访问控制和二级索引的特性。
当前平台内没有对HBase + ES的解决方案,需要给出一个能够指导用户使用HBase和ES组件的解决方案。
目前可能的需求场景如下:

批量索引:HBase上已有大量数据,需要在ES上建立索引;
增量索引:HBase上已有大量数据,提供HBase的rowkey,实现对ES的增量索引;
实时索引:HBase表持续进入数据,该表的数据要与ES的索引实时更新;

FI支持安全模式和普通模式,读取模式配置参数,安全模式则采用认证方式,普通模式则不需要认证。

 

对聚簇索引的解释是:聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的解释是:索引顺序与数据物理排列顺序无关。正式因为如此,所以一个表最多只能有一个聚簇索引。

索引是通过二叉树的数据结构来描述的,我们可以这么理解聚簇索引:索引的叶节点就是数据节点。而非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。

解决方案

HBase的工具HBase-SEP可以监测行变化事件
方案1:
如果是对写入数据性能要求高的业务场景,那么一份数据先写到HBase,然后再写到ES中,两个写入流程独立,这样可以达到性能最大

缺点:可能存在数据的不一致性。

方案2:
这也是目前网上比较流行的方案,使用HBase的协处理监听数据在HBase中的变动,实时的更新ES中的索引,
缺点:协处理器会影响HBase的性能

由于山不清楚添加协处理器具体思路是把RowKey作为索引文档的ID,并把要进行查询的Column索引到ES。
用户输入Column值作为搜索条件,通过ES查询到该Column对应的RowKey值,再根据RowKey到HBase中查询完整的数据。

分享到:
评论

相关推荐

    HBase-Elasticsearch数据同步1

    - Bboss的数据同步工具不仅限于HBase和Elasticsearch之间,还可以实现不同数据库之间的同步,例如MySQL到Elasticsearch,MongoDB到Elasticsearch等。 - 支持IP地址转换为运营商和地理位置信息的功能,增强了数据的...

    Hadoop+Spark+Hive+HBase+Oozie+Kafka+Flume+Flink+ES+Redash等详细安装部署

    在大数据领域,构建一个完整的生态系统是至关重要的,其中包括多个组件,如Hadoop、Spark、Hive、HBase、Oozie、Kafka、Flume、Flink、Elasticsearch和Redash。这些组件协同工作,提供了数据存储、处理、调度、流...

    canal安装包免费下载.mysql同步ES工具

    Canal以 MySQL binlog 为基础,通过解析 binlog 实现了对 MySQL 数据库的增量数据抓取,并支持多种目标端同步,如 Elasticsearch、HBase、Kafka 等。 2. **MySQL**: MySQL是一种广泛使用的开源关系型数据库管理...

    大数据时代云数据库HBase架构.pptx

    分布式Region Server和分布式索引(如ES和Solr)的分离,使得存储和检索功能独立,优化了性能。此外,HBase还支持多种数据类型,如时序数据、图形数据和时空数据,通过与OpenTSDB、JanusGraph和GeoMesa等技术的集成...

    ElasticSearch.docx

    相比于Redis(适合键值存储)、MySQL(支持SQL但扩展性较差)和HBase(适合大规模数据存储但查询性能一般),Elasticsearch更擅长全文搜索和实时数据分析。Hadoop/Hive则更适合批量处理大数据,但在实时查询方面不及...

    用户画像系统解决方案——标签数据存储.pdf

    Hive、MySQL、Hbase和Elasticsearch都是用户画像系统解决方案中的标签数据存储架构,每种数据库都有其特点和适用场景。通过合适的数据库选择和标签数据存储设计,可以实现高效的用户画像系统解决方案。

    No.3当HBase遇上云的思考.pdf

    关于生态组件,文档提到HBase生态组件中包含的各种工具和数据库,如Spark、ECS、MySQL、ES/Solr、分布式索引等。这些组件相互配合,共同构成了一个强大的大数据处理平台。此外,HBase生态还包括时序数据库、图数据库...

    藏经阁-大数据时代数据库-云HBase架构生态及实践.pdf

    1. 存储量的增加和并发计算的增多,导致 MySQL ECS 数据量的增加和检索计算力不足,存储事务 Spark HBase ES/Solr 100T 存储量的大挑战。 2. 非结构化业务的增加,导致 MySQL ECS 检索计算力不足, Graph 时序时空...

    云栖大会之HBase多模的机遇与挑战.pdf

    HBase的一个显著特点是其基于列族的存储方式,使得它能够非常灵活地应对不同的数据模型和数据类型,从而应对多样化的业务场景。 在云计算的背景下,多模型数据库的需求日益增加。HBase作为多模型数据库的一种,能够...

    ⼤数据时代数据库-云HBase架构&⽣态&实践_阿里云.pdf

    存储层面,HBase采用了分布式Region和分布式索引(如ES和Solr),并实现了存储与计算的分离,允许按需计费。此外,通过分级存储、高压缩比和基础设施共享,进一步优化了成本和性能。在资源分配上,通过跨可用区的...

    datax-es:从mysql导入es 重写代码

    DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步...

    canal-canal-1.1.5-alpha-2.zip ;canal-server、adapter、admin

    canal-adapter:相当于canal的客户端,会从canal-server中获取数据,然后对数据进行同步,可以同步到MySQL、Elasticsearch和HBase等存储中去。 canal-admin:为canal提供整体配置管理、节点运维等面向运维的功能,...

    EleasticSearch基本原理及架构.pdf

    Elasticsearch的特点包括分布式、横向扩展、自动分片和复制,这些特性使得它能够轻松处理大数据量的检索任务。它的架构设计允许数据在多个节点间分散,通过Sharding和Replication保证数据的分布和冗余,提高系统的...

    HAProxy配置:针对Hadoop,大数据,NoSQL,Docker,Elasticsearch,SolrCloud,HBase,MySQL,PostgreSQL,Apache Drill,Hive,Presto,Impala,Hue,ZooKeeper,SSH,RabbitMQ,Redis,Riak,Cloudera的80多个HAProxy配置,OpenTSDB,InfluxDB,Prometheus,Kibana,Graphite,Rancher等

    6. **监控和日志分析**: Prometheus和Grafana用于系统监控,InfluxDB、OpenTSDB和Kibana用于时间序列数据存储和可视化,而Elasticsearch和Logstash用于日志管理和分析。HAProxy可以确保这些监控系统的稳定性和性能。...

    最全的大数据大厂面试宝典,大数据面试题,大数据面试,王傲旗的大数据之路,大数据成神之路,Flink,Spark,Hadoop,Hbase,Hive,Impala,Hbase,MapReduce.zip

    目录大纲功能说明 导演 了解數據采集 Flume、Logstash、Canal Maxwell、Databus、NIFI数据同步 DataX、Sqoop、Kettle FlinkX悲痛 HDFS、HBase、Kudu、MongoDB、Elasticsearch、MySql TiDB、IotDB、數據計算 ...

    融合数据库技术_滴滴出行.pdf

    7. MySQL与ES的融合尝试:滴滴通过Canal和Kafka架构,将MySQL数据同步到Elasticsearch(ES),并且使用DBProxy实现了MySQL与ES数据的融合访问,降低了ES的使用成本。 8. 融合数据库原型:滴滴探索了应用程序同时...

    ES分布式搜索解决方案.docx

    Elasticsearch(ES)是一种基于Lucene的开源全文搜索引擎,专门设计用于处理大规模数据的分布式、实时搜索和分析引擎。它解决了传统数据库在大规模数据检索时的性能问题。 1. **数据存储**:Elasticsearch采用分片...

    极光推送千亿级统计平台构建

    除了传统的关系型数据库MySQL和NoSQL数据库Redis、Pika,还有分布式文件系统HDFS,列式存储系统HBase,以及搜索引擎Elasticsearch等。这些系统能够以不同的方式存储和管理数据,有助于提升数据处理的速度和效率。 ...

    Arkcontrol 数据同步功能简介1

    Arkgate作为MySQL的插件,模仿了MySQL从库的IO Thread,持续捕获并解析Binlog Events,将MySQL数据库的增量更新实时同步到目标数据库,这些目标数据库可以是HBase、Elasticsearch或另一个MySQL数据库。这一功能有助...

    ES和HADOOP使用问题和需求

    在实时数据分析领域,ELK(Elasticsearch、Logstash、Kibana)栈提供了从数据采集、处理到可视化的完整解决方案。 - **节点个数考量**:节点个数不是越多越好,应根据具体需求和数据特性来确定。对于数据量不大且...

Global site tag (gtag.js) - Google Analytics