Apache Beam

Apache Beam的架构概览

做~自己de王妃 提交于 2020-03-04 11:39:18
 Apache Beam是一个开源的数据处理编程库,由Google贡献给Apache的项目,前不久刚刚成为Apache TLP项目。它提供了一个高级的、统一的编程模型,允许我们通过构建Pipeline的方式实现批量、流数据处理,并且构建好的Pipeline能够运行在底层不同的执行引擎上。刚刚接触该开源项目时,我的第一感觉就是:在编程API的设计上,数据集及其操作的抽象有点类似Apache Crunch(MapReduce Pipeline编程库)项目;而在支持统一数据处理模型上,能够让人想到Apache Flink项目。如果深入了解Apache Beam,你会发现未来Apache Beam很可能成为数据处理领域唯一一个能够将不同的数据应用统一起来的编程库。 Apache Beam架构概览   Apache Beam目前最新版本为2.1.1-SNAPSHOT,最新的Release版本为2.0.0,很多特性还在开发中。   在网上找到一个由Andrew Psaltis在2016年6月份演讲的《Apache Beam: The Case for Unifying Streaming API’s》,引用了其中一个Apache Beam的架构图,如下图所示:      上图中,我们可以看到, Apache Beam核心的主要有两层 : Pipeline构建层   在Pipeline构建层

Apache Beam WordCount编程实战及源码解读

为君一笑 提交于 2020-03-04 11:17:37
概述:Apache Beam WordCount编程实战及源码解读,并通过intellij IDEA和terminal两种方式调试运行WordCount程序,Apache Beam对大数据的批处理和流处理,提供一套先进的统一的编程模型,并可以运行大数据处理引擎上。完整项目Github源码 负责公司大数据处理相关架构,但是具有多样性,极大的增加了开发成本,急需统一编程处理,Apache Beam,一处编程,处处运行,故将折腾成果分享出来。 1.Apache Beam编程实战–前言,Apache Beam的特点与关键概念。 Apache Beam 于2017年1月10日成为Apache新的顶级项目。 1.1.Apache Beam 特点: 统一:对于批处理和流媒体用例使用单个编程模型。 方便:支持多个pipelines环境运行,包括:Apache Apex, Apache Flink, Apache Spark, 和 Google Cloud Dataflow。 可扩展:编写和分享新的SDKs,IO连接器和transformation库 部分翻译摘自官网:Apacher Beam 官网 1.2.Apache Beam关键概念: 1.2.1.Apache Beam SDKs 主要是开发API,为批处理和流处理提供统一的编程模型。目前(2017)支持JAVA语言

Android MVP 详解(上)

故事扮演 提交于 2020-02-27 14:29:24
作者: 李旺成 时间:2016年4月3日 “ Android MVP 详解(下) ”已经发布,欢迎大家提建议。 MVP 在 Android 上的使用其实已经有挺长一段时间了,长到似乎有点“过时”了(目前风头正劲的是MVVM),那为什么现在还要讲 MVP。今天我想要讨论它的主要原因有如下几点: 1. MVP 并未过时,值得我们研究 2. 目前关于 MVP 的资料都不算太详尽 3. 由于能力和时间有限,本人拖到最近才下定决心写 说明:本文只是抛砖引玉,疏漏之处敬请谅解。 MVP 详解思维导图 目录 前言 一、什么是MVP 二、MVX解析 三、MVX与三层架构 四、Android上MVP的几种实现 五、最佳实践 六、进阶与不足 前言 2014年年底偶然得知在Android开发中出现了MVP这种模式,当时觉得这东西挺好,正好赶上公司要做一个新的小项目,于是尝试了一下。仿照网上的Demo分出View、Model、Presenter层,抽取View接口,看起来像那么回事的用MVP完成了整个项目。因为项目简单,期间也没有遇到什么坑,但是总觉得还有那些地方不对。当时网上一些关于Android MVP的介绍都有点浅尝辄止,一个登录或者根据地区查询天气等的小Demo,没有实际在项目中应用的示例,所以在用MVP做完一个小项目之后还是不敢在主项目中轻易尝试。首先,主项目比较混乱,改动起来工作量很大

如何在 PyFlink 1.10 中自定义 Python UDF?

余生长醉 提交于 2019-12-13 11:10:54
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 作者:孙金城(金竹) 我们知道 PyFlink 是在 Apache Flink 1.9 版新增的,那么在 Apache Flink 1.10 中 Python UDF 功能支持的速度是否能够满足用户的急切需求呢? Python UDF 的发展趋势 直观的判断,PyFlink Python UDF 的功能也可以如上图一样能够迅速从幼苗变成大树,为啥有此判断,请继续往下看… Flink on Beam 我们都知道有 Beam on Flink 的场景,就是 Beam 支持多种 Runner,也就是说 Beam SDK 编写的 Job 可以运行在 Flink 之上。如下图所示: 上面这图是 Beam Portability Framework 的架构图,他描述了 Beam 如何支持多语言,如何支持多 Runner,单独说 Apache Flink 的时候我们就可以说是 Beam on Flink,那么怎么解释 Flink on Beam 呢? 在 Apache Flink 1.10 中我们所说的 Flink on Beam 更精确的说是 PyFlink on Beam Portability Framework。我们看一下简单的架构图,如下: Beam Portability Framework

玩转KafkaIO与Flink

五迷三道 提交于 2019-12-11 20:11:35
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 随着大数据 2.0 时代悄然到来,大数据从简单的批处理扩展到了实时处理、流处理、交互式查询和机器学习应用。近年来涌现出诸多大数据应用组件,如 HBase、Hive、Kafka、Spark、Flink 等。开发者经常要用到不同的技术、框架、API、开发语言和 SDK 来应对复杂应用的开发,这大大增加了选择合适工具和框架的难度,开发者想要将所有的大数据组件熟练运用几乎是一项不可能完成的任务。 面对这种情况,Google 在 2016 年 2 月宣布将大数据流水线产品(Google DataFlow)贡献给 Apache 基金会孵化,2017 年 1 月 Apache 对外宣布开源 Apache Beam,2017 年 5 月迎来了它的第一个稳定版本 2.0.0。在国内,大部分开发者对于 Beam 还缺乏了解,社区中文资料也比较少。InfoQ 期望通过 **Apache Beam 实战指南系列文章** 推动 Apache Beam 在国内的普及。 一.概述 大数据发展趋势从普通的大数据,发展成AI大数据,再到下一代号称万亿市场的lOT大数据。技术也随着时代的变化而变化,从Hadoop的批处理,到Spark Streaming,以及流批处理的Flink的出现,整个大数据架构也在逐渐演化。 Apache

大众点评信息流基于文本生成的创意优化实践

让人想犯罪 __ 提交于 2019-12-07 17:53:10
1. 引言 信息流是目前大众点评除搜索之外的第二大用户获取信息的入口,以优质内容来辅助用户消费决策并引导发现品质生活。整个大众点评信息流(下文简称点评信息流)围绕个性化推荐去连接用户和信息,把更好的内容推荐给需要的用户。信息流推荐系统涉及内容挖掘、召回、精排、重排、创意等多层机制和排序。本文主要围绕创意部分的工作展开,并选取其中重要的文本创意优化做介绍,分为三个部分:第一部分阐述几个重点问题,包括创意优化是什么,为什么做,以及挑战在哪里;第二部分讲述领域内的应用及技术进展;第三部分介绍我们创意优化的实践,最后做个总结。 什么是创意优化 创意是一个宽泛的概念,它作为一种信息载体对受众展现,可以是文本、图像、视频等任何单一或多类间的组合,如新闻的标题就是经典的创意载体。而创意优化,作为一种方法,指在原有基础上进一步挖掘和激活资源组合方式进而提升资源的价值。在互联网领域产品中,往往表现为通过优化创意载体来提升技术指标、业务目标的过程,在信息流中落地重点包括三个方向: 文本创意 :在文本方面,既包括了面向内容的摘要标题、排版改写等,也包括面向商户的推荐文案及内容化聚合页。它们都广泛地应用了文本表示和文本生成等技术,也是本文的主要方向。 图像创意 :图像方面涉及到首图或首帧的优选、图像的动态裁剪,以及图像的二次生成等。 其他创意 :包括多类展示理由(如社交关系等)、元素创意在内的额外补充信息

emq 监听1024以下的端口

房东的猫 提交于 2019-12-07 17:42:52
应用程序监听1024以下的端口 我们自己编写的应用程序监听服务端端口号。普通用户只能访问1024以上端口; 当需要使用1024及以下的端口号时,需要应用程序获取root用户权限,操作方法如下(假设我们编写的应用程序名称为 myproc): chown root:root myproc chmod u+s myproc 更改systemctl 是emqx以root用户启动无效 vim /usr/lib/systemd/system/emqx.service [Unit] Description=emqx daemon After=network.target [Service] User=emqx Group=emqx Type=forking Environment=HOME=/var/lib/emqx ExecStart=/bin/sh /usr/bin/emqx start LimitNOFILE=1048576 ExecStop=/bin/sh /usr/bin/emqx stop [Install] WantedBy=multi-user.target 之后发现emqx是个脚本文件不是二进制文件,文件中已经指定了启动用户,所以如果更改启动用户的话需要改这个脚本文件 vim /usr/bin/emqx emq默认是以emqx用户运行的,在命令行启动emqx start

Rabbitmq集群(单机多实例)

若如初见. 提交于 2019-11-30 03:35:22
Rabbitmq集群 Distributed Rabbitmq brokers的实现方式有三种,分别是clustering、federation、shovel。本节围绕clustering(集群)讲述。 搭建rabbitmq集群要求: 可靠的网络环境; 集群中所有机器的Rabbitmq和Erlang版本要一样。 Rabbitmq_Clustering工作模式: Virtual hosts, exchanges, users和permissions会自动镜像到集群的所有节点; queues可以只配置在一个节点或者镜像到多个节点; 客户端连接到集群的任何一个节点都能看到所有的queues。 搭建Rabbitmq集群 搭建Rabbitmq集群的方法有很多种,参考 Ways of Forming a Cluster ,在此作者使用env variables来搭建集群。 Rabbitmq是通过ip和port来为客户端提供服务的,所以配置Rabbitmq实例的基本要求就是绑定ip:port(默认为localhost:5672),如果单机部署过mysql、Redis等工具,想必这个原理很好理解了。如果不理解请继续看示例: 单机启动多个实例 # 启动第一个节点 $ RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit1 rabbitmq-server

如何优化大规模推荐?下一代算法技术JTM来了

狂风中的少年 提交于 2019-11-29 07:56:52
阿里妹导读:搜索,推荐和广告是互联网内容提供商进行价值创造的核心业务,在阿里巴巴的电子商务交易平台上,搜索,推荐和广告业务同样具有举足轻重的意义和价值。现在,阿里推荐技术又双叒优化了,新的推荐技术,新的体验,一起来看。 一. 背景 搜索、推荐和广告看似业务形态不同,其实技术组成却是非常相通的。从推荐的视角看,搜索可以认为是一种带query相关性约束的推荐,而广告则是叠加了广告主营销意愿(价格)约束的推荐,所以推荐技术的创新对推动搜索、推荐和广告业务技术的整体发展具有基础性的作用。 从技术演进的角度,推荐算法近年来也在不断地更新换代。从限定在一个有限的历史兴趣范畴内推荐的第一代基于统计的启发式规则方法(代表算法Item-based Collaborative Filtering, Item-CF)到第二代基于内积模型的向量检索方法,推荐技术打开了候选子集检索范围的天花板。然而,向量检索方法限定了内积模型这种用户-商品偏好度量方式,无法容纳更加先进的打分模型(例如带有Attention结构的深度网络)。 为了在全库检索和效率约束的基础上进一步打开推荐技术中模型能力的天花板,此前阿里妈妈精准定向广告业务团队自主提出了新一代任意深度学习+树型全库检索推荐算法(Tree-based Deep Model,TDM),在大规模推荐问题上取得了显著的效果提升。最近

emq 监听1024以下的端口

╄→尐↘猪︶ㄣ 提交于 2019-11-28 22:30:09
应用程序监听1024以下的端口 我们自己编写的应用程序监听服务端端口号。普通用户只能访问1024以上端口; 当需要使用1024及以下的端口号时,需要应用程序获取root用户权限,操作方法如下(假设我们编写的应用程序名称为 myproc): chown root:root myproc chmod u+s myproc emq默认是以emqx用户运行的,在命令行启动emqx start 之后日志里报错如下 如下修改完emqx 权限之后无效 chown root:root emqx chmod u+s emqx 查看emqx 正常启动后的进程后,发现启动文件是这个/usr/lib/emqx/erts-10.3.5.1/bin/beam.smp chmod u+s beam.smp 修改完之后权限如下,可以正常启动。 参考: https://blog.csdn.net/weixin_43050332/article/details/89420007 来源: https://my.oschina.net/u/4131409/blog/3099401