《王猛:Elasticsearch技术应用》由会员分享,可在线阅读,更多相关《王猛:Elasticsearch技术应用(50页珍藏版)》请在金锄头文库上搜索。
1、Elasticsearch技术应用目录Elasticsearch 介绍 Elasticsearch在百度的应用 Elasticsearch的一些改进目录Elasticsearch 介绍 Elasticsearch在百度的应用 Elasticsearch的一些改进Elasticsearch 介绍构建在Lucene上的搜索引擎 分布式的架构 分布式索引 多副本高可靠 全文检索系统 数据分析平台Elasticsearch介绍Node1Node2Node3Node4test(1)test(2)test(3)test(1)test(2)test(3) Index类似于database,是数据的物理管理方
2、式 一个Index被划分为多个shard 每个shard可以有多个副本 通过REST API来访问RESTElasticsearch介绍Node1Node2Node3Node4test(1)test(2)test(3)test(1)test(2)test(3) 接收json格式的文档 非结构化普通文本 半结构化日志,邮件文档 利用id hash来将数据划分到各个shard上 在导入时支持对文本进行分词处理RESTElasticsearch介绍Node1Node2Node3Node4test(1)test(2)test(3)test(1)test(2)test(3) 用json来描述查询语句 M
3、PP的方式查询所有相关的shard 查询支持模糊匹配,聚合计算等功能REST生态Traditional Sources (RDBMS, OLAP, OLTP)Raw Sources (web logs, sensor data)DATA SOURCESDATA SYSTEMSAPPSReal-time Search&AnalyticsCustom ApplicationsBatch ApplicationsNew Sources (s3, Cassandra, Mongodb)典型客户 支撑对源码、repo的搜索,对用户操作审计、代码异常分析 400万用户, 800万repo,20亿文件,30
4、TB存储目录Elasticsearch 介绍 Elasticsearch在百度的应用 Elasticsearch的一些改进ES 定位Function: query、analysis Interactive Data Analysis vs. Batch Data Processing Palo: a MPP-based Interactive Data Analysis SQL DB Elasticsearch: a Distributed Real-time Document Indexer with Support for Online AnalyticsReportingMultidim
5、ensional Analysis SQL DB PaloSemi-structured AnalysisElasticSear ch结构化数据分析半结构化数据 分析Elasticsearch的优势实时性 数据实时更新 实时检索,实时分析,毫秒级响应Flexible Schema Json格式的数据,支持嵌套、集合、父子关系多种模式 字段动态增加多维分析 任何字段都可以建立索引、使用多个索引进行分析 丰富的分析函数 avg, sum, max, min, count 文本分词能力Easy to Use Standalone的架构可以独立部署、没有大量依赖 RESTful API: 查询 & 管
6、理数据加载 单节点100GB/小时的加载能力满足大部分需求其他 扩展性、可用性、share nothingElasticsearch在百度的应用2013年10月开始使用 目前覆盖百度内部40多个业务线 单集群每天导入30TB+数据,总共每天 60TB+ 单集群最大100台机器,200个ES节点 共使用近400台机器,启动700+ES节点ES实践-监控业务百度的ELK架构ES实践-监控业务主要挑战 字段不确定 数据量较大,每天30TB+数据,24小时不间断 导入 小时级任意维度聚合分析毫秒级返回,天级秒 级返回ES实践-监控业务动态字段 一律接受 OR 一律拒绝 按照规则来接受、处理POST /
7、casio-machines- 20151017/all “instance“:1001, “long_kvs“:“mem“:12 ES实践-监控业务Node1SSDHDDNode2SSDHDDNode3SSDHDD数据迁移数据迁移Client数据写入数据写入数据冷热分离ES实践-监控业务Node1两级分区Index1Index2Node2Node3Shard分区 Partition Level 2Index分区 Partition Level 1 按照时间做一级分区,建立index 相同类型的index用alias的方式结合起来,跨index查询 过期的数据可以自动删除 新数据所在的inde
8、x使用SSD存储 使用用户指定的key做二级分区写入指定分区跨多个分区查询ES实践-百度糯米 线性扩展 Flexible Schema 高性能 强大的事务支持 多表join能力ElasticsesarchRDBMS与OLTP集成ES实践-百度糯米RDBMS业务逻辑写入、修改 复杂查询操作简单查询、分析、搜索捕获变更 用户写入或者修改操作RDBMS 复杂的查询 RDBMS 简单的查询 Elasticsearch 搜索请求 ElasticsearchRDBMSElasticsesarch +ES实践-百度糯米捕获变更的几种方式 CDC系统 优点:应用不需要做任何工作,实时性比较高,异步做,不影 响
9、插入性能 缺点:依赖binlog格式解析工具,并且一条记录的多次修改, 会被执行多次update 触发器 优点:比较方便,容易使用 缺点:对在线业务有影响 业务层标记 可以做到对数据同步的精确控制,多次更新可以一次修改 缺点:业务层需要修改业务逻辑,modify_time, is_del等标记ES实践-百度糯米跨机房部署 背景 集群由于一些bug导致服务不可用或者数据丢失 单个机房可能出现故障导致服务不可访问 双机房的现实条件 网络延时比较高 两个机房之间偶尔断线 同步的双机房方案不可取ES实践-百度糯米Nginx ProxyNginx ProxyES NodeES NodeES NodeES
10、 NodeES NodeES NodeES NodeES NodeES NodeES NodeMirror MakerMirror MakerCluster NJCluster SZES实践-百度糯米ConfigFileConfigLoaderIndex Mirror MakerIndex Mirror MakerCluster AMeta IndexUser IndexUser IndexCluster AMeta IndexUser IndexUser IndexES Mirror MakerES实践-百度糯米 Mirror Maker实现细节 增量获取 每一条数据都有唯一的时间戳 Mir
11、ror Maker通过记录的时间戳来获取增量的数据 冲突检测 每条数据都有唯一的版本信息 版本的值绑定到时间戳上或者由用户指定 循环复制 ES内部有版本冲突检测机制,版本冲突的不会被写入 MirrorMaker在获取到两个集群的数据后需要在内存里 做比对,冲突的数据不传送 通过Config来实现复制时间的回退目录Elasticsearch 介绍 Elasticsearch在百度的应用 Elasticsearch的一些改进Elasticsearch的改进一、脑裂问题原因Master NodeData NodeData NodeData NodeData NodeMaster NodeMaster
12、 NodePublish元数据 增量、全量元数据变更请求MetaMetaMetaMetaMetaMetaMeta更新本地 元数据更新本地元数据 修改本地数据原因Master NodeData NodeData NodeData NodeData NodeMaster NodeMaster NodePublish元数据 增量、全量元数据变更请求MetaMetaMetaMetaMetaMetaMeta更新本地 元数据更新本地元数据 修改本地数据元数据变更请求更新本地 元数据Publish元数据 增量、全量更新本地元数据 修改本地数据分析: 当一个节点是主时可以随意修改并广播元数据 元数据的修改没有
13、Quorum的方式修改 改进思路 需要在多个Master节点之间实现可靠的分布式 一致性算法 可选方案: RAFT & PAXOS 实现起来费时费力,不确定能work原因改进方案BDB JE HAMaster ElectableReplica ElectableReplica ObserverReplica Oberver写读读读读Replica Electable读 类似Paxos的选举机制 数据在Electable Nodes 上需要Quorum写入成功 Observer Nodes 异步的 接受数据,不参与选举改进方案Master NodeData NodeMaster NodeMast
14、er NodeBDB ElectableBDB Observer元数据变更请求Publish 版本版本Data NodeBDB ObserverData NodeBDB Observer Data NodeBDB ObserverBDB ElectableBDB ElectableStateStateStateState改进方案Cluster StaterootRouting tableIndex MetadataNodesIndex AIndex BMapping 1 Mapping 2Mapping 3state/indexmeta/indexa/mapping1 mappinginfo1 state/indexmeta/indexa/mapping2 mappinginfo2 state/nodes nodesinfoBDBElasticsearch的改进二、多副本一致性Replica Group现状PrimaryReplicaReplicaMasterClient Master指定一个副本作为 Primary Client通过连接Primary进 行数据写入或读取问题一各个节点的元数据虽然都