大数据
文章平均质量分 60
L.ZZ
这个作者很懒,什么都没留下…
展开
-
Kafka HA Kafka一致性重要机制之ISR(kafka replica)
一、kafka replica当某个topic的replication-factor为N且N大于1时,每个Partition都会有N个副本(Replica)。kafka的replica包含leader与follower。Replica的个数小于等于Broker的个数,也就是说,对于每个Partition而言,每个Broker上最多只会有一个Replica,因此可以使用Broker id 指定...转载 2019-02-27 13:57:11 · 278 阅读 · 0 评论 -
Spark Streaming中的操作函数讲解
根据根据Spark官方文档中的描述,在Spark Streaming应用中,一个DStream对象可以调用多种操作,主要分为以下几类TransformationsWindow OperationsJoin OperationsOutput Operations一、Transformations1、map(func) map操作需要传入一个函数当做参数,具体调用形式为 ...转载 2019-02-27 14:00:40 · 282 阅读 · 0 评论 -
Flink 概述
1.概述 在如今数据爆炸的时代,企业的数据量与日俱增,大数据产品层出不穷。今天给大家分享一款产品—— Apache Flink,目前,已是 Apache 顶级项目之一。那么,接下来,笔者为大家介绍Flink 的相关内容。2.内容2.1 What's Flink Apache Flink 是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时(Flink...转载 2019-02-27 14:01:13 · 155 阅读 · 0 评论 -
HBase RegionServer挂掉问题分析
0. 前言HBase在使用中会遇到非常多的问题,最为常见的就是HBase regionserver挂掉(此文中简称regionserver为RS),而RS挂掉的原因各不相同。在本文中对遇到过的HBase RS挂掉的情况做一个简单的整理。1. HBase集群预留内存不足现象:HBase RS在起来1-2min后马上挂掉日志为如下日志段的重复:Mon Aug 6 10:23:54 CST...转载 2019-02-27 14:02:10 · 2172 阅读 · 0 评论 -
hbase balance命令走过的坑
1.前言balance主要有四个命令:balance_switch, balancer, balancer_enabled ,balance_rsgroup(如果开启了rsgroup)2. balance_switchhbase帮助信息:hbase(main):001:0> help 'balance_switch'Enable/Disable balancer. Returns...转载 2019-02-27 14:03:00 · 1861 阅读 · 1 评论 -
一文了解 Apache Flink 核心技术
1. Apache Flink 介绍Apache Flink 是近年来越来越流行的一款开源大数据计算引擎,它同时支持了批处理和流处理,也能用来做一些基于事件的应用。使用官网的一句话来介绍 Flink 就是 “Stateful Computations Over Streams”。首先 Flink 是一个纯流式的计算引擎,它的基本数据模型是数据流。流可以是无边界的无限流,即一般意义上的流处理。也...转载 2019-02-27 14:04:55 · 331 阅读 · 0 评论 -
HBase原理-RegionServer宕机数据恢复
1. 前言HBase采用类LSM的架构体系,数据写入并没有直接写入数据文件,而是会先写入缓存(Memstore),在满足一定条件下缓存数据再会异步刷新到硬盘。为了防止数据写入缓存之后不会因为RegionServer进程发生异常导致数据丢失,在写入缓存之前会首先将数据顺序写入HLog中。如果不幸一旦发生RegionServer宕机或者其他异常,这种设计可以从HLog中进行日志回放进行数据补救,保证...转载 2019-02-27 14:05:08 · 710 阅读 · 0 评论 -
HBase原理-数据读取流程解析
1. 前言和写流程相比,HBase读数据是一个更加复杂的操作流程,这主要基于两个方面的原因:其一是因为整个HBase存储引擎基于LSM-Like树实现,因此一次范围查询可能会涉及多个分片、多块缓存甚至多个数据存储文件;其二是因为HBase中更新操作以及删除操作实现都很简单,更新操作并没有更新原有数据,而是使用时间戳属性实现了多版本。删除操作也并没有真正删除原有数据,只是插入了一条打上”delet...转载 2019-02-27 14:06:09 · 684 阅读 · 0 评论 -
Flink 原理与实现:架构和拓扑概览
1. 架构要了解一个系统,一般都是从架构开始。我们关心的问题是:系统部署成功后各个节点都启动了哪些服务,各个服务之间又是怎么交互和协调的。下方是 Flink 集群启动后架构图。当 Flink 集群启动后,首先会启动一个 JobManger 和一个或多个的 TaskManager。由 Client 提交任务给 JobManager,JobManager 再调度任务到各个 TaskManager...转载 2019-02-27 14:06:51 · 126 阅读 · 0 评论 -
Flink 原理与实现:内存管理
1. 前言如今,大数据领域的开源框架(Hadoop,Spark,Storm)都使用的 JVM,当然也包括 Flink。基于 JVM 的数据分析引擎都需要面对将大量数据存到内存中,这就不得不面对 JVM 存在的几个问题:Java 对象存储密度低。一个只包含 boolean 属性的对象占用了16个字节内存:对象头占了8个,boolean 属性占了1个,对齐填充占了7个。而实际上只需要一个bit(...转载 2019-02-27 14:07:01 · 128 阅读 · 0 评论 -
HBase学习之路 (七)HBase 原理
目录系统架构物理存储整体的物理结构StoreFile 和 HFile 结构MemStore 和 StoreFileHbase WAL HLog预写Region 寻址机制老的 Region 寻址方式新的 Region 寻址方式 读写过程 读请求过程 写请求过程RegionServer 工作机制Region 分配RegionServer 上线RegionSer...转载 2019-02-27 14:00:24 · 153 阅读 · 0 评论 -
浅谈HBase的数据分布
浅谈HBase的数据分布摘要:HBase的rowkey设计一直都是难点和痛点,不合适的rowkey设计会导致读写性能、吞吐不佳等诸多问题。本文从数据分布问题展开,介绍HBase基于Range的分布策略与region的调度问题,详细讨论了rowkey的比较规则及其应用,希望能够加深用户对HBase数据分布机制和rowkey的理解,从而做出更合适的设计,精准、高效的使用HBase。数据分布问题...转载 2019-02-27 14:00:16 · 583 阅读 · 0 评论 -
kafka消费者offset记录位置和方式
1. 前言kafka消费者在会保存其消费的进度,也就是offset,存储的位置根据选用的kafka-api不同而不同。2. zookeeper存储首先来说说消费者如果是根据java-api来消费,也就是kafka.javaapi.consumer.ConsumerConnector,通过配置参数zookeeper.connect来消费。这种情况下,消费者的offset会更新到zookeepe...原创 2019-02-27 13:57:26 · 9775 阅读 · 1 评论 -
关于Kafka 的 consumer 消费者手动提交详解
前言在上一篇 Kafka使用Java实现数据的生产和消费demo 中介绍如何简单的使用kafka进行数据传输。本篇则重点介绍kafka中的 consumer 消费者的讲解。应用场景在上一篇kafka的consumer消费者,我们使用的是自动提交offset下标。但是offset下标自动提交其实在很多场景都不适用,因为自动提交是在kafka拉取到数据之后就直接提交,这样很容易丢失数据,尤其是...转载 2019-02-27 13:57:42 · 2900 阅读 · 1 评论 -
spark streaming从指定offset处消费Kafka数据
一. 前言当spark streaming程序意外退出时,数据仍然再往Kafka中推送,然而由于Kafka默认是从latest的offset读取,这会导致数据丢失。为了避免数据丢失,那么我们需要记录每次消费的offset,以便下次检查并且从指定的offset开始读取二. 环境kafka-0.9.0、spark-1.6.0、jdk-1.7、scala-2.10.5、idea16三. 实现代码...转载 2019-02-27 13:58:23 · 2084 阅读 · 1 评论 -
Ambari——大数据平台的搭建利器
1. Ambari 是什么Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目。目前最新的发布版本是 2.0.1,未来不久将发布 2.1 版本。就 Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,但是这里的 Hadoop 是广义,指的是 Hadoop 整个生态圈(例如 Hive,Hbase,...转载 2019-02-27 13:58:38 · 353 阅读 · 1 评论 -
Kafka消费组(consumer group)详解
一直以来都想写一点关于kafka consumer的东西,特别是关于新版consumer的中文资料很少。最近Kafka社区邮件组已经在讨论是否应该正式使用新版本consumer替换老版本,笔者也觉得时机成熟了,于是写下这篇文章讨论并总结一下新版本consumer的些许设计理念,希望能把consumer这点事说清楚,从而对广大使用者有所帮助。在开始之前,我想花一点时间先来明确一些概念和术语,这...转载 2019-02-27 13:58:52 · 29205 阅读 · 2 评论 -
Kafka 如何读取offset topic内容 (__consumer_offsets)
1. 前言众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsets topic,并且默认提供了kafka_consumer_groups.sh脚本供用户查看consumer信息。不过依然有很多用户希望了解__consumer_offsets topic内部到底保存了什...转载 2019-02-27 13:59:07 · 1902 阅读 · 1 评论 -
Spark Streaming 管理 Kafka Offsets 的方式探讨
Cloudera Engineering Blog 翻译:Offset Management For Apache Kafka With Apache Spark StreamingSpark Streaming 应用从Kafka中获取信息是一种常见的场景。从Kafka中读取持续不断的数据将有很多优势,例如性能好、速度快。然而,用户必须管理Kafka Offsets保证Spark Streami...转载 2019-02-27 13:59:23 · 172 阅读 · 0 评论 -
Spark Streaming+Kafka提交offset实现有且仅有一次(exactly-once)
前言本文讲Spark Streamming使用Direct方式读取Kafka,并在输出(存储)操作之后提交offset到Kafka里实现程序读写操作有且仅有一次,即程序重启之后之前消费并且输出过的数据不再重复消费,接着上次消费的位置继续消费Kafka里的数据。Spark Streamming+Kafka官方文档:http://spark.apache.org/docs/latest/streami...转载 2019-02-27 13:59:45 · 495 阅读 · 0 评论 -
通过offsets.retention.minutes设置kafka offset的过期时间
前言本文记录博主如何设置kafka的offset过期时间并测试其效果1、offsets.retention.minutes通过修改offsets.retention.minutes的值即可改变kafka offset的过期时间,单位为分钟,改完之后需要重启kafka。具体的配置文件为$KAFKA_HOME/config/server.properties,原生的kafka配置文件里可能没有这个配...转载 2019-02-27 13:59:57 · 998 阅读 · 1 评论 -
Flink 原理与实现:理解 Flink 中的计算资源
1. 前言本文所讨论的计算资源是指用来执行 Task 的资源,是一个逻辑概念。本文会介绍 Flink 计算资源相关的一些核心概念,如:Slot、SlotSharingGroup、CoLocationGroup、Chain等。并会着重讨论 Flink 如何对计算资源进行管理和隔离,如何将计算资源利用率最大化等等。理解 Flink 中的计算资源对于理解 Job 如何在集群中运行的有很大的帮助,也有利...转载 2019-02-27 14:07:12 · 678 阅读 · 0 评论 -
Flink 原理与实现:数据流上的类型和操作
1. 前言Flink 为流处理和批处理分别提供了 DataStream API 和 DataSet API。正是这种高层的抽象和 flunent API 极大地便利了用户编写大数据应用。不过很多初学者在看到官方 Streaming 文档中那一大坨的转换时,常常会蒙了圈,文档中那些只言片语也很难讲清它们之间的关系。所以本文将介绍几种关键的数据流类型,它们之间是如何通过转换关联起来的。下图展示了 F...转载 2019-02-27 14:07:21 · 584 阅读 · 0 评论 -
Flink 原理与实现:Window 机制
1. 前言Flink 认为 Batch 是 Streaming 的一个特例,所以 Flink 底层引擎是一个流式引擎,在上面实现了流处理和批处理。而窗口(window)就是从 Streaming 到 Batch 的一个桥梁。Flink 提供了非常完善的窗口机制,这是我认为的 Flink 最大的亮点之一(其他的亮点包括消息乱序处理,和 checkpoint 机制)。本文我们将介绍流式处理中的窗口概...转载 2019-02-27 14:07:49 · 146 阅读 · 0 评论 -
ElasticSearch最佳字段查询(Dis Max Query)
1. 最佳字段假设有个网站允许用户搜索博客的内容, 以下面两篇博客内容文档为例:PUT /my_index/my_type/1{ "title": "Quick brown rabbits", "body": "Brown rabbits are commonly seen."}PUT /my_index/my_type/2{ "title": "Keepi...转载 2019-03-19 09:29:33 · 10336 阅读 · 1 评论 -
ElasticSearch document写入原理
1. 实时性Elasticsearch的主要应用场景就是实时,但Elasticsearch本身并非实时而是near-real-time(近实时)。Elasticsearch默认写入的数据会在1秒后,才可以被检索到。2. document写入流程Elasticsearch的写入请求主要包括:index、create、update、delete、bulk。bulk是实现对前四种的批量操作。在6....转载 2019-03-26 14:05:18 · 342 阅读 · 0 评论 -
图解ElasticSearch内部模型及数据结构
0. 前言本文我们将会先自上而下,后自底向上地介绍ElasticSearch的底层工作原理,试图回答以下问题:为什么我的搜索foo-bar无法匹配foo-bar?为什么增加更多的文件会压缩索引(Index)?为什么ElasticSearch占用很多内存?ElasticSearch版本:ElasticSearch-2.2.01. 图解ElasticSearch1.1 云上的集群...转载 2019-03-26 17:53:12 · 3248 阅读 · 2 评论 -
ElasticSearch内部分片处理机制
1. 倒排索引与传统的数据库不同,在es中,每个字段里面的每个单词都是可以被搜索的。如hobby:“dance,sing,swim,run”,我们在搜索关键字swim时,所有包含swim的文档都会被匹配到,es的这个特性也叫做全文搜索。为了支持这个特性,es中会维护一个叫做“invertedindex”(也叫逆向索引)的表,表内包含了所有文档中出现的所有单词,同时记录了这个单词在哪个文档中出现...转载 2019-03-26 20:02:56 · 2034 阅读 · 0 评论 -
要搞懂 Elasticsearch Match Query,看这篇就够了
1. 前言Match Query 是最常用的 Full Text Query 。无论需要查询什么字段, match 查询都应该会是首选的查询方式。它既能处理全文字段,又能处理精确字段。2. 构建示例为了能够在后面能深入理解 Match Query 中的各个属性的意义,我们先构建一个 index 示例(有兴趣的同学只要将下面字段粘贴到 sense 中就可以创建)。PUT matchtest...转载 2019-03-28 09:32:35 · 2992 阅读 · 1 评论 -
ElasticSearch数据类型keyword和text的区别
1. 前言在 ES2.x 版本字符串数据是没有 keyword 和 text 类型的,只有string类型,ES更新到5.x版本后,取消了 string 数据类型,代替它的是 keyword 和 text 数据类型,那么 keyword 和 text 有什么区别了?2. text类型text 数据类型被用来索引长文本,比如说电子邮件的主体部分或者一款产品的介绍。这些文本会被分析,在建立索引前...转载 2019-03-28 13:57:24 · 1451 阅读 · 0 评论 -
ElasticSearch之四种查询类型
1. 前言ES在查询时, 可以指定搜索类型为下面四种:QUERY_THEN_FETCHQUERY_AND_FEATCHDFS_QUERY_THEN_FEATCHDFS_QUERY_AND_FEATCH那么这 4 种搜索类型有什么区别?2. ES的分布式搜索ES 天生就是为分布式而生, 但分布式有分布式的缺点。 比如要搜索某个单词, 但是数据却分别在 5 个分片(Shard)上面,...转载 2019-04-02 09:54:33 · 5721 阅读 · 1 评论 -
使用Idea本地调试ElasticSearch源码教程
1. 环境准备操作系统:Windows7JDK版本:Java version "1.8.0_201"Gradle版本:Gradle 3.3ElasticSearch源码版本:Github branch 5.4(5.4分支代码内部实际ES版本为5.4.4)ElasticSearch发行版版本:elasticsearch-5.4.3(ES发行版没有5.4.4版本,此处使用5.4.3)...原创 2019-04-01 14:27:05 · 3629 阅读 · 0 评论 -
ES如何指定返回的字段field
1. elasticsearch 2.x在elasticsearch 2.x版本中,如果我们想指定查询返回的字段,可以使用fields字段设置,代码如下:String index = xxx;String type = xxx;// 指定要返回的字段String[] fields = new String[2]; fields[0] = "field1"; // ...转载 2019-04-16 20:12:53 · 10034 阅读 · 0 评论 -
深入浅出剖析Elasticsearch的工作原理
1. 前言随着日志量的增加,es在不停的调整,结构层面的冷热数据分离、master和client节点的分离并引入部落节点,es集群层面的index优化、flush优化、merge优化、内存熔断优化,系统层面的GC、文件描述符、进程数、关闭交换分区调整等等,其实es优化是一个法无定法的事儿,并不是死板的调固定参数,而是要不停的去试各种参数值在自己的业务场景下哪个表现最好,但是总结起来,首先了解了e...转载 2019-03-18 19:45:10 · 711 阅读 · 0 评论 -
elasticsearch head 插件安装和使用
其实 elasticsearch  - head  安装,应该在第二篇就得讲到,我开始认为很简单,第一篇也讲到安装了,应同学要求,我再细化一下。 head  插件是最好安装的其中一个, elasticsearch  head 是集群管理工具、数据可视化、增删改查工具, Elasticsearch  语句可视化(下面会讲到) Elasticsear...转载 2019-03-18 16:27:35 · 293 阅读 · 0 评论 -
Flink 原理与实现:Session Window
1. 前言在上一篇文章:Window机制中,我们介绍了窗口的概念和底层实现,以及 Flink 一些内建的窗口,包括滑动窗口、翻滚窗口。本文将深入讲解一种较为特殊的窗口:会话窗口(session window)。建议您在阅读完上一篇文章的基础上再阅读本文。当我们需要分析用户的一段交互的行为事件时,通常的想法是将用户的事件流按照“session”来分组。session 是指一段持续活跃的期间,由活...转载 2019-02-27 14:07:58 · 3030 阅读 · 0 评论 -
Flink基于EventTime和WaterMark处理乱序事件和晚到的数据(三)
1. 相关概念在实际的业务中,我们经常会遇到数据迟到的情况,这个时候基于窗口进行计算的结果就不对了,Flink中watermark就是为了解决这个问题的,理解watermark之前,先来说一下flink中的三个与流数据相关的概念,ProcessTime、EventTime、IngestionTime,不然很难理解watermark是怎么回事.我们先来看一下官网给出的一张图,非常形象地展示了Pr...转载 2019-02-27 14:08:17 · 2615 阅读 · 1 评论 -
Apache Beam 剖析
1. 概述在大数据的浪潮之下,技术的更新迭代十分频繁。受技术开源的影响,大数据开发者提供了十分丰富的工具。但也因为如此,增加了开发者选择合适工具的难度。在大数据处理一些问题的时候,往往使用的技术是多样化的。这完全取决于业务需求,比如进行批处理的MapReduce,实时流处理的Flink,以及SQL交互的Spark SQL等等。而把这些开源框架,工具,类库,平台整合到一起,所需要的工作量以及复杂度...转载 2019-02-27 14:08:41 · 209 阅读 · 0 评论 -
Flink 原理与实现:Table & SQL API
1. 前言Flink 已经拥有了强大的 DataStream/DataSet API,可以基本满足流计算和批计算中的所有需求。为什么还需要 Table & SQL API 呢?首先 Table API 是一种关系型API,类 SQL 的API,用户可以像操作表一样地操作数据,非常的直观和方便。用户只需要说需要什么东西,系统就会自动地帮你决定如何最高效地计算它,而不需要像 DataStr...转载 2019-02-27 14:09:00 · 1180 阅读 · 0 评论 -
Flink 原理与实现:Aysnc I/O
1. 背景Async I/O 是阿里巴巴贡献给社区的一个呼声非常高的特性,于1.2版本引入。主要目的是为了解决与外部系统交互时网络延迟成为了系统瓶颈的问题。流计算系统中经常需要与外部系统进行交互,比如需要查询外部数据库以关联上用户的额外信息。通常,我们的实现方式是向数据库发送用户a的查询请求,然后等待结果返回,在这之前,我们无法发送用户b的查询请求。这是一种同步访问的模式,如下图左边所示。...转载 2019-02-27 14:09:09 · 171 阅读 · 0 评论