Apache Avro

Kafka学习笔记之confluent platform入门

空扰寡人 提交于 2020-05-08 03:32:38
0x00 下载 http://www.confluent.io/download ,打开后,显示最新版本3.0.0,然后在右边填写信息后,点击Download下载。 之后跳转到下载页面,选择zip 或者 tar都行, 下载完成后上传linux系统,解压即完成安装。 zip and tar archives – 推荐OS X 和 Quickstart deb packages via apt – 推荐安装服务在 Debian/Ubuntu系统 rpm packages via yum – 推荐安装服务在 RHEL/CentOS/Fedora系统 deb/rpm packages with installer script Confluent 目前还不支持Windows系统。Windows用户可以下载和使用zip 和 tar包,但最好直接运行jar文件 ,而不是使用包装脚本。 0x01 Requirements 唯一需要的条件是java 版本>=1.7。 0x02 Confluent Platform快速入门 你可以快速的运行Confluent platform在单台服务器上。在这篇quickstart,我们将介绍如何运行ZooKeeper,Kafka,和Schema Registry,然后如何读和写一些Avro数据从/到Kafka。 (如果你想跑一个数据管道用Kafka

Iceberg 在基于 Flink 的流式数据入库场景中的应用

这一生的挚爱 提交于 2020-04-30 16:42:17
本文以流式数据入库的场景为基础,介绍引入 Iceberg 作为落地格式和嵌入 Flink sink 的收益,并分析了当前可实现的框架及要点。 应用场景 流式数据入库,是大数据和数据湖的典型应用场景。上游的流式数据,如日志,或增量修改,通过数据总线,经过必要的处理后,汇聚并存储于数据湖,供下游的应用(如报表或者商业智能分析)使用。 上述的应用场景通常有如下的痛点,需要整个流程不断的优化: 支持流式数据写入 ,并保证端到端的不重不丢(即 exactly-once); 尽量减少中间环节 ,能支持更实时(甚至是 T+0)的读取或导出,给下游提供更实时更准确的基础数据; 支持 ACID ,避免脏读等错误发生; 支持修改已落地的数据 ,虽然大数据和数据湖长于处理静态的或者缓慢变化的数据,即读多写少的场景,但方便的修改功能可以提升用户体验,避免用户因为极少的修改,手动更换整个数据文件,甚至是重新导出; 支持修改表结构 ,如增加或者变更列;而且变更不要引起数据的重新组织。 引入 Iceberg 作为 Flink sink 为了解决上述痛点,我们引入了 Iceberg 作为数据落地的格式。Iceberg 支持 ACID 事务、修改和删除、独立于计算引擎、支持表结构和分区方式动态变更等特性,很好的满足我们的需求。 同时,为了支持流式数据的写入,我们引入 Flink 作为流式处理框架,并将

【面试题】Netty相关(转)

依然范特西╮ 提交于 2020-04-27 04:23:59
转自https://blog.csdn.net/baiye_xing/article/details/76735113 1.BIO、NIO和AIO的区别? BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。 伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。 NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。 AIO:一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理, BIO是面向流的,NIO是面向缓冲区的;BIO的各种流是阻塞的。而NIO是非阻塞的;BIO的Stream是单向的,而NIO的channel是双向的。 NIO的特点:事件驱动模型、单线程处理多任务、非阻塞I/O,I/O读写不再阻塞,而是返回0、基于block的传输比基于流的传输更高效、更高级的IO函数zero-copy、IO多路复用大大提高了Java网络应用的可伸缩性和实用性。基于Reactor线程模型。 在Reactor模式中,事件分发器等待某个事件或者可应用或个操作的状态发生,事件分发器就把这个事件传给事先注册的事件处理函数或者回调函数,由后者来做实际的读写操作。如在Reactor中实现读:注册读就绪事件和相应的事件处理器

写入Apache Hudi数据集

半世苍凉 提交于 2020-04-26 23:41:29
这一节我们将介绍使用 DeltaStreamer 工具从外部源甚至其他Hudi数据集摄取新更改的方法, 以及通过使用 Hudi数据源 的upserts加快大型Spark作业的方法。 对于此类数据集,我们可以使用各种查询引擎 查询 它们。 写操作 在此之前,了解Hudi数据源及delta streamer工具提供的三种不同的写操作以及如何最佳利用它们可能会有所帮助。 这些操作可以在针对数据集发出的每个提交/增量提交中进行选择/更改。 UPSERT(插入更新) :这是默认操作,在该操作中,通过查找索引,首先将输入记录标记为插入或更新。 在运行启发式方法以确定如何最好地将这些记录放到存储上,如优化文件大小之类后,这些记录最终会被写入。 对于诸如数据库更改捕获之类的用例,建议该操作,因为输入几乎肯定包含更新。 INSERT(插入) :就使用启发式方法确定文件大小而言,此操作与插入更新(UPSERT)非常相似,但此操作完全跳过了索引查找步骤。 因此,对于日志重复数据删除等用例(结合下面提到的过滤重复项的选项),它可以比插入更新快得多。 插入也适用于这种用例,这种情况数据集可以允许重复项,但只需要Hudi的事务写/增量提取/存储管理功能。 BULK_INSERT(批插入) :插入更新和插入操作都将输入记录保存在内存中,以加快存储优化启发式计算的速度(以及其它未提及的方面)。

刚哥谈架构(六)-大数据的文件存储

喜欢而已 提交于 2020-04-26 15:34:27
上一次我们谈到了各种类型的数据库,今天我们来谈谈在大数据,尤其是Hadoop栈下的数据和文件的存储。 我们知道为了解决大数据的存储和处理问题,google最先设计了推出了Map/Reduce的算法,而hadoop就是Google的map/reduce的开源实现。Hadoop主要由分布式的文件系统HDFS(参考Google的GFS)和Map/Reduce计算这两块。但随着Spark等更强大的计算引擎的出现,很少再有人使用Hadoop的Map/Reduce来做计算了,但是对于海量数据/文件的存储,除了HDFS,还真没有更多更好的选择。所以我们就来看看在Hadoop下,文件存储的各种选项。 原始文本文件 首先,我们什么都不需要做,HDFS提供分布式的文件存储,那么我们就直接把原始的文本文件存储在HDFS上就好了。通常我们会使用诸如txt,csv,json,xml等文本格式的文件存储在HDFS上,然后由各种计算引擎加载,计算。 HDFS是按照块来存储文件的,缺省的设置一个块的大小是64M,那么假定我的文本文件是1G,它会被分成16个分区,由计算引擎(Spark,Map/Reduce)来并行的处理,计算。 使用文本格式的主要问题是: 占用空间大 处理时有额外的序列化反序列化的开销,例如把日志中的文本‘12’转化为数字的12 所以这里就引入了两个解决方案: 压缩。 压缩是使用计算资源来换取存储

4.kafka生产者---向Kafka中写入数据(转)

三世轮回 提交于 2020-04-26 07:39:48
转: https://www.cnblogs.com/sodawoods-blogs/p/8969513.html (1)生产者概览 (1)不同的应用场景对消息有不同的需求,即是否允许消息 丢失 、 重复 、 延迟 以及 吞吐量 的要求 。 不同场景对Kafka生产者的API使用和配置会有直接的影响。 例子1:信用卡事务处理系统,不允许消息的重复和丢失,延迟最大500ms,对吞吐量要求较高。 例子2:保存网站的点击信息,允许少量的消息丢失和重复,延迟可以稍高(用户点击链接可以马上加载出页面即可),吞吐量取决于用户使用网站的频度。 (2)Kafka发送消息的主要步骤 消息格式:每个消息是一个ProducerRecord对象, 必须指定 消息所属的Topic和消息值Value,此外 还可以指定 消息所属的Partition以及消息的Key。 1:序列化ProducerRecord 2:如果ProducerRecord中指定了Partition,则Partitioner不做任何事情;否则,Partitioner根据消息的key得到一个Partition。这是生产者就知道向哪个Topic下的哪个Partition发送这条消息。 3:消息被添加到相应的batch中,独立的线程将这些batch发送到Broker上 4:broker收到消息会返回一个响应。如果消息成功写入Kafka

Iceberg 在基于 Flink 的流式数据入库场景中的应用

别等时光非礼了梦想. 提交于 2020-04-17 02:06:04
【推荐阅读】微服务还能火多久?>>> 本文以流式数据入库的场景为基础,介绍引入 Iceberg 作为落地格式和嵌入 Flink sink 的收益,并分析了当前可实现的框架及要点。 应用场景 流式数据入库,是大数据和数据湖的典型应用场景。上游的流式数据,如日志,或增量修改,通过数据总线,经过必要的处理后,汇聚并存储于数据湖,供下游的应用(如报表或者商业智能分析)使用。 上述的应用场景通常有如下的痛点,需要整个流程不断的优化: 支持流式数据写入 ,并保证端到端的不重不丢(即 exactly-once); 尽量减少中间环节 ,能支持更实时(甚至是 T+0)的读取或导出,给下游提供更实时更准确的基础数据; 支持 ACID ,避免脏读等错误发生; 支持修改已落地的数据 ,虽然大数据和数据湖长于处理静态的或者缓慢变化的数据,即读多写少的场景,但方便的修改功能可以提升用户体验,避免用户因为极少的修改,手动更换整个数据文件,甚至是重新导出; 支持修改表结构 ,如增加或者变更列;而且变更不要引起数据的重新组织。 引入 Iceberg 作为 Flink sink 为了解决上述痛点,我们引入了 Iceberg 作为数据落地的格式。Iceberg 支持 ACID 事务、修改和删除、独立于计算引擎、支持表结构和分区方式动态变更等特性,很好的满足我们的需求。 同时,为了支持流式数据的写入,我们引入 Flink

ClickHouse学习系列之三【配置文件说明】

左心房为你撑大大i 提交于 2020-04-12 16:06:49
背景 最近花了些时间看了下 ClickHouse文档 ,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统。在介绍了 安装 和 用户权限管理 之后,本文对其配置文件做下相关的介绍说明。 说明 ClickHouse的配置文件是config.xml,默认在/etc/clickhouse-server/目录中,可以在conf.d和config.d目录中的*.xml和*.conf文件中覆盖各个设置。还可以为这些配置文件的元素指定replace或remove属性,如果均未指定,它将以递归方式合并元素的内容,从而替换重复子元素的值。如果指定了replace,将用指定的元素替换整个元素。如果指定了remove,则删除该元素。   配置文件还可以定义substitutions(替代)。如果元素具有 incl 属性,则文件中的相应值将被替换。替换文件的路径为/etc/metrika.xml。可以在配置文件加入 include_from 元素进行更改。替换值在此文件的/yandex/substitution_name元素中指定。如果 incl 中指定的替代不存在,则将其记录在日志中。为了防止ClickHouse记录缺少的替代项,请指定: optional= true 属性。 可以从ZooKeeper中进行替换,指定属性from_zk =“ /path/to

求职期间,我们遇到的大数据开发和大数据平台开发有什么区别?

你。 提交于 2020-03-23 16:22:33
3 月,跳不动了?>>> 求职期间,我们遇到的大数据开发和大数据平台开发有什么区别? 不少人问过我一个问题,大数据开发和大数据平台开发,有什么不一样?今天就这个话题说几句。先给大家上两张boss上的图: 首先,大数据开发通常指的是基于大数据产业链的一系列开发任务,涉及到大数据平台开发、大数据应用开发、大数据分析等,另外还包括数据采集产品的开发、数据整理产品的开发等等,如果向上延伸的话,部分大数据开发任务与人工智能开发任务也具有密切的联系。 大数据平台开发通常有两层含义,一层是进行大数据平台自身的开发,这属于研发级开发任务,比如大数据平台Hadoop就是采用Java语言开发的。整个大数据平台还涉及到一系列产品,包括HBase、Hive、Avro、Zookeeper、Pig、Mahout、Cassandra等,开发这些产品也需要一个庞大的团队。进行大数据平台研发的程序员往往需要具备丰富的开发经验,同时具备较强的研发能力,能够搭建出一个稳定的分布式计算体系。 另一层含义是在大数据平台下进行应用开发,比如在Hadoop、Spark平台下进行具体的大数据应用开发等,这部分开发通常属于应用级开发,难度要相对小一些,但是往往需要与具体的场景进行紧密的联系,需要开发者具备一定的行业背景知识。 目前大数据应用开发主要的任务有两个,其一是进行已有软件产品的大数据改造

Kafka:大数据开发最火的核心技术

孤街浪徒 提交于 2020-03-20 09:45:09
3 月,跳不动了?>>> 大数据时代来临,如果你还不知道Kafka那你就真的out了!据统计,有三分之一的世界财富500强企业正在使用Kafka,包括所有TOP10旅游公司,7家TOP10银行,8家TOP10保险公司,9家TOP10电信公司等等。 LinkedIn,Microsoft和Netflix每天都用Kafka处理万亿级的信息。Kafka主要应用于实时信息流的大数据收集或者实时分析(或者两者兼有)。Kafka既可以为内存微服务提供持久性服务,也可以用于向复杂事件流系统和IoT/IFTTT式自动化系统反馈事件。 为什么是Kafka? Kafka常用于实时流数据结构的实时分析。由于Kafka是一种快速、可扩展、可持久和高容错的发布-订阅消息系统(publish-subscribe messaging system),所以Kafka对于一些Use Case(有大数据量和高响应需求)的支持远好于JMS、RabbitMQ和AMQP。相比于那些工具,Kafka支持更高的吞吐量,更高的稳定性和副本(replication)特性。这使得它比传统的MOM更加适合跟踪服务调用(可以跟踪每次调用)或跟踪IoT传感器数据。 Kafka可以与Flume/Flafka、Spark Streaming、Storm、HBase、Flink以及Spark配合使用,用于实时获取、分析和处理流数据