【大数据技术】Apache Beam实战指南

2023-11-11

关于 Apache Beam 实战指南系列文章

随着大数据 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 在国内的普及。对大数据的概念都是模糊不清的,大数据是什么,能做什么,学的时候,该按照什么线路去学习,学完往哪方面发展,想深入了解,想学习的同学欢迎加入大数据学习qq群:458345782,有大量干货(零基础以及进阶的经典实战)分享给大家,并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系 。

一.概述

随着 2018 年 10 月 2 日欧洲 Beam 首届峰会结束后,Beam 的使用者越来越多,关注度越来越高。不光外国公司 Google、Spotify、亚马逊、Data Artisans 等用上了 Beam,TensorFlow 机器学习框架也跟 Beam 结合使用做机器学习的预处理工作,背靠谷歌巨头,Beam 不光在大数据一统上做强有力的部署,在云计算、大数据、机器学习、人工智能的集成和运用也越来越广泛。

Beam 在发布第一个版本后,不断完善模型和运行平台。SDKs 也添加了许多 IO,例如消息中间件又新增了 ActiveMQ 和 RabbitMQ ,缓存新增 Redis ,大数据分析神器 Kudu,大数据存储格式 Parquet 等等。Runner 新增了实时流处理 Samza 和 JStorm、MapReduce 和加速 Hadoop 查询 Tez,此外新增了 Beam 部署 Docker 的 DockerCommand 接口 ,以及 Metrics 监控的引入和集成。其他 SDK 和 Runner 也在不断更新中,Beam 每 6 周发布一个小版本,及时完善了一些一次性未集成完善的功能。

在科技日新月异的浪潮中,不管是人工智能的机器学习、还是 AI 的人脸识别、以及物联网的工业互联、互联网的深度挖掘等都必须有一定的数据积累,恰恰这些早期的数据很多公司都存到不同的数据库中,很多公司在早期没有其他大数据存储情况下,基本都存在 Hadoop 的 HDFS 中。对于 HDFS 这个被公认的大数据存储基石,Beam 是怎样简单的操作的呢?底层源码是怎样跟 Beam 结合使用的?我们今天就重点看一下。

二.Apache Beam 中 HdfsIO 源码剖析

由于 Beam 在发布稳定版本 2.0 之前的源码,Beam 操作 HdfsIO 都比较不稳定,并且 API 都比较 Low。在 2.0 版本之后 HdfsIO 的变化很大,2.0 版本之前命名为 HDFSFileSink 读写等操作,2.0 之后都是命名为 HadoopFileSystem 来操作 Hadoop 的 HDFS 。本文按照 Beam 2.4 版本源码进行剖析,2.4 之后的版本基本没有很大变化,直到最新的 2.9 版本才有一个小优化,2.4 版本的 HdfsIO 还是比较稳定的。

2.1 Hdfs 的配置类 Configuration 源码部分

HadoopFileSystem(Configuration configuration) throws IOException { this.fileSystem = org.apache.hadoop.fs.FileSystem.newInstance(configuration);

}

在源码中 HadoopFileSystem 把 Hadoop Hdfs 的配置类当参数,在构造函数外面配置好传参到内部。 Configuration 类其实有三个配置,一个是 HdfsConfiguration 类,另外是 map-reduce Job 任务和 YarnConfiguration 资源调度器用到的配置,今天我们主要看 HdfsConfiguration 类,因为 Map-Reduce 去年集成到 Beam 之后基本很少人使用。

在 HdfsConfiguration 类中支持很多配置,最主要的“fs.default.name’”是配置我们 Hadoop 集群。

2.2 HDFS 的读写都是基于 ByteBuffer 的

@Override

public int read(ByteBuffer dst) throws IOException {

if (closed) {

throw new IOException("Channel is closed");

}

// O length read must be supported

int read = 0;

// We avoid using the ByteBuffer based read for Hadoop because some FSDataInputStream

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【大数据技术】Apache Beam实战指南 的相关文章

  • vs2010 中使用 log4net

    vs2010 中使用 log4net 环境 vs2010 framework4 0 log4net 1 2 10 0 framework 2 0 参考 http www cnblogs com llhhll archive 2011 03
  • iOS端抓包工具-stream

    内容项 1 stream安装使用 2 stream功能解析 构建请求 host设置 抓包模式 stream安装使用 1 app store 搜索stream 点击下载 2 下载完成后进入app 点击 开始抓包 允许添加VPN配置 下载安装C

随机推荐

  • Python-单例模式详解与实现

    目录 单例模式 new 装饰器 元类 import 单例模式 这种类型的设计模式属于创建型模式 它提供了一种创建对象的最佳方式 这种模式涉及到一个单一的类 该类负责创建自己的对象 同时确保只有单个对象被创建 这个类提供了一种访问其唯一的对象
  • 电商交易数据分析-Tableau

    1 这是一份关于某电脑平台2016年的交易数据 通过分析这份数据 我们可以知道这一整年的销售情况 数据解读 id ID order id 订单ID user id 用户ID productId 产品ID cityId 城市的ID price
  • Ubuntu常用命令-基础

    Ubuntu 操作系统是基于 Linux 内核的开源操作系统 其命令行界面提供了大量的命令来管理系统和执行各种任务 以下是一些 Ubuntu 操作系统中常用的命令 cd 用于切换当前工作目录 例如 cd path to directory
  • cat EOF的追加与覆盖

    一 覆盖 bin bash cat lt lt EOF gt root test txt Hello My site is www 361way com My site is www 91it org Test for cat and EO
  • 张五常《思考方法》

    思考的方法 上 据说熊彼德 J A Schumpeter 曾在课堂上批评牛顿 指责这个如假包换的物理学天才只顾闭门思想 没有将他思考推理的方法公开而留诸后世 这批评有点道理 但牛顿在物理学上的丰功伟绩 是他在逃避瘟疫的两年中想出来的 其后就
  • Spring初识

    文章目录 Spring框架 一 Spring简介 一 Spring的介绍及需要的依赖 二 Spring的优点 二 Spring的组成及拓展 一 什么是Spring Boot 二 什么是Spring Cloud 三 IOC 控制反转 一 IO
  • vue 使用MD5加密

    概念 MD5是一种信息摘要算法 对称加密 一种被广泛使用的密码散列函数 可以产生出一个128位 16字节 的散列值 用来确保信息传输完整一致性 它可以计算任意长度的输入字符串 得到固定长度的输出 而且这个算法是不可逆的 即使得到了加密的密文
  • tomcat的webapps下没项目的问题

    这几天在在写代码的时候一直都存在一个问题 就是把项目发布到comcat后在webapps下找不到项目 而work下面却有临时文件 浏览器也能正常访问 百度后网上的答案大都是 找到servers location 选择第二个 User tom
  • 压缩感知算法_深度学习压缩感知(DCS)历史最全资源汇总分享

    压缩感知 Compressed sensing 也被称为压缩采样 Compressive sampling 稀疏采样 Sparse sampling 压缩传感 它作为一个新的采样理论 它通过开发信号的稀疏特性 在远小于Nyquist 采样率
  • 解决 python execjs._exceptions.ProgramError

    return self eval identifier apply this args format identifier identifier args args File usr local lib python3 7 site pac
  • Redis7之发布订阅(七)最好别用

    7 1 介绍 是一种消息通信模式 发送者 PUBLISH 发送消息 订阅者 SUBSCRIBE 接收消息 可以实现进程间的消息传递 Redis可以实现消息中间件MQ的功能 通过发布订阅实现消息的引导和分流 功能 Redis客户端可以订阅任意
  • ChatGLM学习

    GLM paper https arxiv org pdf 2103 10360 pdf chatglm 130B https arxiv org pdf 2210 02414 pdf 前置知识补充 双流自注意力 Two stream se
  • 假ArrayList导致的线上事故......

    线上事故回顾 晚饭时 当我正沉迷于排骨煲肉质鲜嫩 汤汁浓郁时 产研沟通群内发出一条消息 显示用户存在可用劵 但进去劵列表却什么也没有 并附含了一个视频 于是我一边吃了排骨 一边查看消息点开了视频 en 视频跟描述一样 但没有系统告警 用户界
  • 设计模式之工厂方法模式(Factory Method)摘录

    23种GOF设计模式一般分为三大类 创建型模式 结构型模式 行为模式 创建型模式包括 1 FactoryMethod 工厂方法模式 2 Abstract Factory 抽象工厂模式 3 Singleton 单例模式 4 Builder 建
  • 数据挖掘实训 Week 6

    理论学习 1 决策树 1 1 概念 每个非叶节点表示一个特征属性上的测试 每个分支代表这个特征属性在某个值域上的输出 而每个叶节点存放一个类别 优点 决策过程直观 易理解 可解释性强 1 2 构造 属性是离散值且不要求生成二叉决策树 此时用
  • 手机断触怎么办_手机触摸屏失灵了怎么办,五种方法自己就能修好它!

    点击 蓝字 关注我们 做 优 品 创 名 品 欧仕极 手机触摸屏常见问题排查 01 触摸屏断触 我们在点击某个图标时 正常情况下 手机会有所反应 一般按键底色变灰 反之手机无应答 也就是我们说的断触现象 在确定不是外部条件 触摸屏有汗渍 异
  • 【android】searchView注意点

    1 安卓闪退 可能由于布局文件有问题 2 searchView 导入android support v7 widget SearchView是用在Actionbar Toolbar 的组建 要在onCreateOptionsMenu初始化
  • 【DevOps】DevOps的新出路:平台工程

    DevOps的新出路 平台工程 DevOps是一种文化 是敏捷的一部分 主要是解决引入敏捷活动的持续开发 快速反馈后带来的新的运维问题 然也 DevOps的初衷是让开发能够掌握运维知识 对自己的产品全生命周期负责 you build it
  • 【MySQL】漫谈死锁

    一 前言 死锁是每个MySQL DBA 都会遇到的技术问题 本文自己针对死锁学习的一个总结 了解死锁是什么 MySQL如何检测死锁 处理死锁 死锁的案例 如何避免死锁 二 死锁 死锁 是并发系统中常见的问题 同样也会出现在Innodb系统中
  • 【大数据技术】Apache Beam实战指南

    关于 Apache Beam 实战指南系列文章 随着大数据 2 0 时代悄然到来 大数据从简单的批处理扩展到了实时处理 流处理 交互式查询和机器学习应用 近年来涌现出诸多大数据应用组件 如 HBase Hive Kafka Spark Fl