读数据工程之道:设计和构建健壮的数据系统01数据工程概述

news2024/10/7 8:30:18

1. 数据工程

1.1. 自从公司开始使用数据做事,数据工程就以某种形式存在了

  • 1.1.1. 预测性分析、描述性分析和报告

1.2. 数据工程师获取数据、存储数据,并准备数据供数据科学家、分析师和其他人使用

1.3. 数据工程是系统和流程的开发、实施和维护,这些系统和流程接收原始数据并生成支持下游用例(例如分析和机器学习)的高质量、一致的信息

1.4. 数据工程是安全、数据管理、数据运维(DataOps)、数据架构、编排和软件工程的交集

1.5. 数据工程师管理数据工程生命周期,从源系统获取数据开始,到为用例(例如分析或机器学习)提供数据结束

2. 数据工程生命周期

2.1. 生成

2.2. 存储

2.3. 获取

2.4. 转换

2.5. 服务

3. 数据工程师的演变

3.1. 旧的又成了新的

3.2. 早期

  • 3.2.1. 1980年到2000年,从数据仓库到Web

  • 3.2.2. 数据工程师的诞生可以说起源于数据仓库,最早可以追溯到20世纪70年代

  • 3.2.3. 商业数据仓库在20世纪80年代初具规模,Bill Inmon于1989年正式创造了数据仓库一词

    • 3.2.3.1. 数据仓库开创了第一个可扩展分析的时代,新的大规模并行处理(Massively Parallel Processing,MPP)数据库使用多个处理器来处理市场上出现的大量数据并支持前所未有的数据量
  • 3.2.4. 在IBM的工程师开发了关系数据库和结构化查询语言(Structured Query Language,SQL)之后,Oracle普及了该技术

3.3. 21世纪00年代初期

  • 3.3.1. 当代数据工程的诞生

  • 3.3.2. 雅虎、谷歌和亚马逊最初继续依赖20世纪90年代传统的单机关系数据库和数据仓库,将这些系统推向了极限

  • 3.3.3. 一些创新允许在大规模计算集群上进行大规模分布式计算和存储

  • 3.3.4. 数据的三个V

    • 3.3.4.1. 速度(velocity)

    • 3.3.4.2. 多样性(variety)

    • 3.3.4.3. 数量(volume)

  • 3.3.5. 2003年,谷歌发表了一篇关于Google文件系统的论文

  • 3.3.6. 在2004年发表了一篇关于MapReduce(一种超可扩展数据处理范式)的论文

  • 3.3.7. 谷歌的出版物构成了数据技术的“大爆炸”和我们今天所知的数据工程的文化根基

  • 3.3.8. Google的论文启发了Yahoo的工程师开发并于2006年开源了Apache Hadoop

    • 3.3.8.1. 随着各种规模和类型的公司看到他们的数据增长到数TB甚至PB,大数据工程师的时代诞生了
  • 3.3.9. 亚马逊

    • 3.3.9.1. 创建了弹性计算环境(Amazon Elastic Compute Cloud,或EC2)​、无限可扩展的存储系统(Amazon Simple Storage Service,或S3)​、高度可扩展的NoSQL数据库(Amazon DynamoDB)和许多其他核心数据构建块

    • 3.3.9.2. 亚马逊选择通过Amazon Web Services(AWS)为内部和外部消费提供这些服务,成为第一个流行的公有云

    • 3.3.9.3. AWS通过虚拟化和转售巨大的商品硬件池创建了一个超灵活的即付即得资源市场

      3.3.9.3.1. 简单地从AWS租用计算和存储,无须为数据中心购买硬件

  • 3.3.10. Google Cloud、微软Azure和DigitalOcean

    • 3.3.10.1. 公有云可以说是21世纪最重要的创新之一,它引发了软件和数据应用程序开发与部署方式的革命

3.4. 21世纪00年代和21世纪10年代

  • 3.4.1. 大数据工程

  • 3.4.2. 任何企业都可以使用顶级科技公司使用的相同的前沿数据工具

  • 3.4.3. 从批处理计算到事件流的转变,开创了大“实时”数据的新时代

  • 3.4.4. Hadoop、Apache Pig、Apache Hive、Dremel、Apache HBase、Apache Storm、Apache Cassandra、Apache Spark、Presto以及出现的许多其他新技术

  • 3.4.5. 大数据工程师必须精通软件开发和底层基础设施黑客技术

    • 3.4.5.1. Hadoop、YARN、Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)和MapReduce在内的Hadoop生态系统
  • 3.4.6. 大数据很快成为其自身成功的牺牲品

    • 3.4.6.1. 大数据抓住了试图理解不断增长的数据量的公司的想象力,以及销售大数据工具和服务的公司无休止的营销

    • 3.4.6.2. 没有足够的时间来提供业务的洞察力和价值

  • 3.4.7. 大数据一词本质上是描述处理大量数据的特定时间和方法的遗留物

    • 3.4.7.1. 如今,数据的移动速度比以往任何时候都快,而且数据增长越来越大,但是大数据处理已经变得如此容易理解,以至于它不再是一个单独的术语

    • 3.4.7.2. 每家公司都旨在解决其数据问题而不用关心实际数据大小

    • 3.4.7.3. 大数据工程师现在只是数据工程师

3.5. 21世纪20年代

  • 3.5.1. 数据生命周期工程

  • 3.5.2. 包括现代数据栈,代表了一组现成的开源和第三方产品,这些产品组合起来可以让分析师的工作更轻松

  • 3.5.3. 虽然数据工程师保持低级数据编程技能并根据需要使用这些技能,但他们越来越多地发现自己的角色侧重于价值链中更高层次

    • 3.5.3.1. 安全

    • 3.5.3.2. 数据管理

    • 3.5.3.3. DataOps

    • 3.5.3.4. 数据架构

    • 3.5.3.5. 编排

    • 3.5.3.6. 一般数据生命周期管理

  • 3.5.4. 开源项目和服务不再关注谁拥有“最大数据”​,而是越来越关注管理和治理数据,使其更易于使用和发现,并提高其质量

  • 3.5.5. 设计管道时,关心隐私、匿名化、数据垃圾收集和法规遵从性

  • 3.5.6. 强调去中心化和敏捷性,这与传统的企业命令-控制型方法形成鲜明对比

  • 3.5.7. 数据生命周期管理的黄金时代

    • 3.5.7.1. 管理数据工程生命周期的数据工程师拥有比以往更好的工具和技术

4. 数据工程与数据科学

4.1. 数据工程与数据科学和分析学是分开的

  • 4.1.1. 数据工程位于数据科学的上游

    • 4.1.1.1. 意味着数据工程师提供数据科学家使用的输入(数据工程的下游)
  • 4.1.2. 数据科学家将这些输入转化为有用的东西

4.2. 数据科学需求层次

  • 4.2.1. 收集

  • 4.2.2. 移动/存储

  • 4.2.3. 探索/转变

  • 4.2.4. 复合/标签

  • 4.2.5. 学习/优化

4.3. 数据科学家通常没有接受过设计生产级数据系统的培训,他们最终会随意地做这项工作,因为他们缺乏数据工程师的支持和资源

  • 4.3.1. 在理想情况下,数据科学家应该将90%以上的时间专注于金字塔的顶层:分析、实验和ML

  • 4.3.2. 当数据工程师专注于层次结构的这些底层部分时,他们为数据科学家的成功奠定了坚实的基础

4.4. 随着数据科学推动高级分析和ML,数据工程跨越了获取数据和从数据中获取价值之间的鸿沟

  • 4.4.1. 认为数据工程与数据科学具有同等的重要性和可见性,数据工程师在使数据科学在生产中取得成功方面发挥着至关重要的作用

5. 数据工程技能和活动

5.1. 数据工程师的技能集包含数据工程的“底层设计"

  • 5.1.1. 安全、数据管理、DataOps、数据架构和软件工程

  • 5.1.2. 该技能集需要了解如何评估数据工具以及它们如何在整个数据工程生命周期中相互配合

  • 5.1.3. 必须沿着成本、敏捷性、可扩展性、简单性、复用性和互操作性等轴线不断优化

5.2. 数据工程师需要知道并理解如何使用少数强大的庞大技术(Hadoop、Spark、Teradata、Hive等)来创建数据解决方案

  • 5.2.1. 他们的工作将致力于集群管理和维护、管理开销、写管道和转换作业,以及其他任务

5.3. 数据工程师现在专注于平衡能够为企业带来价值的最简单、最具成本效益的最佳服务

5.4. 数据工程师通常不直接构建ML模型、创建报告或仪表板、执行数据分析、构建关键绩效指标(KPI)或开发软件应用程序

5.5. 数据工程师应该对这些领域有很好的理解,以便更好地为利益相关者提供服务

6. 数据成熟度

6.1. 数据成熟度是指整个组织向着更高的数据利用率、功能和集成的方向发展,但数据成熟度不仅仅取决于公司的年龄或收入

6.2. 重要的是如何利用数据作为竞争优势

6.3. 三个阶段

  • 6.3.1. 从数据开始

    • 6.3.1.1. 根据定义,一个开始使用数据的公司处于其数据成熟度的早期阶段

    • 6.3.1.2. 数据团队很小,人数通常只有个位数

      6.3.1.2.1. 在这个阶段,数据工程师通常是多面手,通常会扮演其他几个角色,例如数据科学家或软件工程师

    • 6.3.1.3. 数据工程师的目标是快速行动、获得牵引力并增加价值

    • 6.3.1.4. 从数据中获取价值的实用性通常不为人所知,但这种愿望是存在的

      6.3.1.4.1. 报告或分析缺乏正式的结构,大多数数据请求都是临时性的

    • 6.3.1.5. 没有办法以可扩展和可重复的方式将这些模型部署到生产中

    • 6.3.1.6. 主要来自在没有足够的数据成熟度或数据工程支持的情况下参与不成熟的数据科学项目的个人经验

    • 6.3.1.7. 数据工程师应该关注

      6.3.1.7.1. 获得包括执行管理层在内的主要利益相关者的支持

      6.3.1.7.1.1. 理想情况下,数据工程师应该有一个关键举措的发起人来设计和构建数据架构以支持公司的目标

      6.3.1.7.2. 定义正确的数据架构(通常是单独的,因为数据架构可能不可用)

      6.3.1.7.3. 识别和审计将支持关键举措的数据,并在你设计的数据架构内运行

      6.3.1.7.4. 为未来的数据分析师和数据科学家构建坚实的数据基础,以生成具有竞争价值的报告和模型

      6.3.1.7.4.1. 你可能还必须生成这些报告和模型,直到雇用该团队

    • 6.3.1.8. 如果数据没有带来很多可见的成功,组织的意志力可能会减弱

    • 6.3.1.9. 走出去与人交谈,避免孤岛工作

    • 6.3.1.10. 避免无差别的繁重工作

    • 6.3.1.11. 仅在可以创造竞争优势的地方构建自定义解决方案和代码

  • 6.3.2. 用数据扩展

    • 6.3.2.1. 在这个阶段,一家公司已经摆脱了临时数据请求并拥有正式的数据实践

    • 6.3.2.2. 现在的挑战是创建可扩展的数据架构并为公司真正的数据驱动的未来做规划

    • 6.3.2.3. 数据工程角色从通才转变为专家,人们专注于数据工程生命周期的特定方面

    • 6.3.2.4. 数据工程师的目标

      6.3.2.4.1. 建立正式的数据实践

      6.3.2.4.2. 创建可扩展且健壮的数据架构

      6.3.2.4.3. 采用DevOps和DataOps实践

      6.3.2.4.4. 建立支持ML的系统

      6.3.2.4.5. 继续避免无差别的繁重工作,只有在产生竞争优势时才进行自定义

    • 6.3.2.5. 随着我们对数据的处理变得越来越复杂,人们很想采用基于硅谷公司社会证明的尖端技术

      6.3.2.5.1. 这很少能很好地利用你的时间和精力

    • 6.3.2.6. 扩展的主要瓶颈不是集群节点、存储或技术,而是数据工程团队

    • 6.3.2.7. 你会很想把自己定位成一名技术专家,一个可以提供神奇产品的数据天才

      6.3.2.7.1. 将你的注意力转移到务实的领导力上,并开始过渡到下一个成熟阶段,与其他团队就数据的实用性进行沟通

      6.3.2.7.2. 教会组织如何使用和利用数据

  • 6.3.3. 以数据领先

    • 6.3.3.1. 在这个阶段,公司是由数据驱动的

    • 6.3.3.2. 数据工程师创建的自动化管道和系统允许公司内部的人员进行自助分析和ML

      6.3.3.2.1. 数据工程师实施适当的控制和实践,以确保数据始终可供人员和系统使用

      6.3.3.2.2. 数据工程角色比第2阶段更加专业化

    • 6.3.3.3. 引入新的数据源是无缝的,并且产生了有形的价值

    • 6.3.3.4. 数据工程师

      6.3.3.4.1. 创建自动化以无缝引入和使用新数据

      6.3.3.4.2. 专注于构建利用数据作为竞争优势的自定义工具和系统

      6.3.3.4.3. 专注于数据的“企业级”方面

      6.3.3.4.3.1. 数据管理(包括数据治理和质量)和DataOps

      6.3.3.4.4. 在整个组织中公开和传播数据的部署工具,包括数据目录、数据血缘工具和元数据管理系统

      6.3.3.4.5. 与软件工程师、ML工程师、分析师和其他人高效协作

      6.3.3.4.6. 创建一个人们可以在这里协作和公开发言的社区和环境,无论他们的角色或职位如何

    • 6.3.3.5. 需要注意的问题

      6.3.3.5.1. 在这个阶段,自满是一个重大危险

      6.3.3.5.1.1. 一旦组织达到第3阶段,他们就必须不断专注于维护和改进,否则就有退回到较低阶段的风险

      6.3.3.5.2. 与其他阶段相比,技术干扰在这里是一个更大的危险

      6.3.3.5.2.1. 追求昂贵的业余项目是一种诱惑,这些项目不会为企业带来价值

      6.3.3.5.2.2. 应该只在可提供竞争优势的情况下使用自定义技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2193815.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

No.0 笔记 | 从小白到入门:我的渗透测试笔记

嘿,小伙伴们!好久不见啊,是不是都以为我失踪了?😂 其实呢,最近一直在埋头苦学,感觉自己就像是在技术的海洋里游泳,每天都在吸收新知识。现在终于有时间冒个泡,跟大家分享…

如何通过 Alt 键打出所有特殊字符?

有时我们需要键入键盘上没有的字符,例如版权符号 ©,怎么办呢? 上一篇文章说过,可以用输入法自带的符号表功能。但除此之外,Windows 官方有一个功能,可以让我们可以通过 Alt 键输入任何特殊符号。 ‍…

Python进阶--函数进阶

目录 1. 函数多返回值 2. 函数多种传参方式 (1). 位置参数 (2). 关键字参数 (3). 缺省参数 (4). 不定长参数 3. 匿名函数 (1). 函数作为参数传递 (2). lambda匿名函数 1. 函数多返回值 def return_num():return 1# 返回1之后就不会再向下继续执行函数体return 2 resu…

《Linux从小白到高手》理论篇:Linux软件安装一篇通

List item 本篇介绍Linux软件安装相关的操作命令,看完本文,有关Linux软件安装相关操作的常用命令你就掌握了99%了。 Linux软件安装 RPM RPM软件的安装、删除、更新只有root权限才能使用;查询功能任何用户都可以操作;如果普通用…

ElasticSearch备考 -- Alias

一、题目 1) Create the alias hamlet that maps both hamlet-1 and hamlet-2 Verify that the documents grouped by hamlet are 8 2) Configure hamlet-3 to be the write index of the hamlet alias 二、思考 可以通过指定别名,来指向一个或多个索引&#xff0c…

系统守护者:使用PyCharm与Python实现关键硬件状态的实时监控

目录 前言 系统准备 软件下载与安装 安装相关库 程序准备 主体程序 更改后的程序: 编写.NET程序 前言 在现代生活中,电脑作为核心工具,其性能和稳定性的维护至关重要。为确保电脑高效运行,我们不仅需关注软件优化&#xf…

美国静态住宅IP代理怎么定期更换?

在互联网使用中,P代理被广泛应用于许多方面,如网络安全测试、数据采集、访问受限制内容等。然而,为了维护隐私安全和避免被封禁,定期更换IP地址是必要的。特别是对于每个用户,定期更换IP地址更是至关重要。本文将探讨美…

大数据新视界 --大数据大厂之 Druid 查询性能提升:加速大数据实时分析的深度探索

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Python案例--九九乘法表

乘法口诀表是学习基础数学中不可或缺的工具,它帮助我们快速记忆乘法结果。在这篇文章中,我将向你展示如何使用Python编程语言来生成一个9x9的乘法口诀表。这不仅对教育工作者和学生有用,而且对任何需要快速回顾乘法事实的人来说都是一个有用的…

美团 spiderindefence 滑块 分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像私信联系我删…

毕设 大数据抖音短视频数据分析与可视化(源码)

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕…

[C++]使用纯opencv部署yolov11-cls图像分类onnx模型

【算法介绍】 在C中使用纯OpenCV部署YOLOv11-cls图像分类ONNX模型是一项具有挑战性的任务,因为YOLOv11通常是用PyTorch等深度学习框架实现的,而OpenCV本身并不直接支持加载和运行PyTorch模型。然而,可以通过一些间接的方法来实现这一目标&am…

IMS添加实体按键流程 - Android14

IMS添加实体按键流程 - Android14 1、实体按键信息(Mi 9 左侧实体按键)2、硬件添加2.1 内核添加设备节点2.2 Generic.kl映射文件2.3 映射文件文件加载loadKeyMapLocked2.4 addDeviceLocked 添加设备相关对象 3、keycode对应scankode4、KeyEvent.java 添加…

[翻译]ANSI X9.24-1-2009

目录 1 目的 2 范围 2.1 应用 3 参考文献 4 术语和定义 4.1 acceptor 接收器 4.2 acquirer 收单 4.3 algorithm 算法 4.4 archived key 存档密钥 4.5 authentication 认证/鉴别/身份验证 4.6 authentication algorithm 认证算法 4.7 authentication element 认证要…

UE5数字人制作平台使用及3D模型生成

第10章 数字人制作平台使用及3D模型生成 在数字娱乐、虚拟现实(VR)、增强现实(AR)等领域,高质量的3D模型是数字内容创作的核心。本章将引导你了解如何使用UE5(Unreal Engine 5)虚幻引擎这一强大…

Transformer 模型和 BERT 模型:概述

语言模型发展历程Language modeling history 多年来,语言建模一直在不断发展。过去十年的最新突破,包括使用神经网络来表示文本,比如2013年的Word2vec和N元语法,2014年开发的序列到序列模型,如RNN和LSTM帮助提高机器学…

舵机驱动详解(模拟/数字 STM32)

目录 一、介绍 二、模块原理 1.舵机驱动原理 2.引脚描述 三、程序设计 main.c文件 servo.h文件 servo.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 舵机(Servo)是在程序的控制下,在一定范围内连续改变输出轴角度并保持的电机系统。即舵机只支持…

九、3 串口发送+printf函数移植+打印汉字

1、接线图 TX与RX交叉连接,TXD接STM32的PA10,RXD接STM32的PA9 VCC与3.3V用跳线帽连接 2、函数介绍 3、代码部分 (1)发送字节的函数(Byte) 可直接发送十六进制数 如0x41,也可直接发送字符 如A …

通信工程学习:什么是AIOT智能物联网

AIOT:智能物联网 AIOT智能物联网,即Artificial Intelligence of Things(人工智能物联网),是人工智能(AI)与物联网(IoT)技术的深度融合。这一技术通过物联网产生、收集来自…

import torch报错问题:OSError: [WinError 126] 找不到指定的模块。

今天在python中导入import torch时&#xff0c;发生了报错。 import torch File "D:\python\Lib\site-packages\torch\__init__.py", line 148, in <module>raise err OSError: [WinError 126] 找不到指定的模块。 Error loading "D:\python\Lib\site-pac…