事实上,这个问题让我思考,因为我的脑海中还没有一个清晰的画面。这只是我对这个话题的想法,在很大程度上,我只是在推测数据管理的当前状态和未来。
根据我的观察,大数据主要存在4大挑战:
- 大数据中的数据挑战
- 大数据中的管理挑战
- 大数据中的分析挑战
- 大数据中的运营挑战
一、大数据中的数据挑战
大数据中的数据挑战泛指处理数据时必须解决的问题。哪里有大数据,哪里就有大问题。
当您处理一层或另一层数据时,您将需要一些特定的技能,让我们深入了解它们。
1、数据存储
随着存储数据量的不断增加,数据存储问题历来是第一位的。这是任何处理数据的系统的基础——有许多技术可以存储大量原始数据,这些数据来自传统来源(如 OLTP 数据库)和更新的、结构化程度较低的来源(如日志文件、传感器、Web 分析、文档档案) 、媒体档案等。正如你所看到的,这些是非常不同的领域,有自己的特点,我们需要从所有这些领域收集数据,以获取有关整个系统的整体信息。
首先需要清楚使用哪种格式存储数据,如何优化数据结构以及如何优化存储数据。当然,在这里,您可以想到在大数据世界中非常常见的Parquet、CSV、Avro 格式。此外,可以考虑使用 Bzip2、Snappy、Lzo 等编解码器。好吧,优化基本上要么是适当的分区,要么是做一些特定于存储的事情。
使用Hadoop和HDFS构建该层的主要技术之一。它因其耐用性和传统设备上的无限规模而广受欢迎。但是,如今,越来越多的数据存储在云中,或者至少存储在混合解决方案中——组织正在从过时的本地存储系统转移到托管服务,例如 AWS S3、GCP GCS 或Azure Blobs。
对于 SQL 解决方案,流行的项目包括Hive、Apache Drill、Apache Impala、Apache Spark SQL和Presto。此外,还有更多有趣的数据仓库解决方案,我认为它们位于简单的 SQL 引擎之上。稍后我们将讨论它们。
对于 NoSQL 解决方案,它可以是支持 ACID的Cassandra 、用于文档数据模型和可管理数据大小的MongoDB ,或者如果您在 AWS 云中,它可以用于可扩展解决方案的AWS DynamoDB 。
对于图形数据库,我只能回忆起Neo4j。它非常适合存储图形数据或相关信息,例如一群人及其关系。在传统的 SQL 数据库中对此类信息进行数据建模是一件痛苦的事情,而且效率非常低。
2、数据湖
数据湖是企业数据的集中存储库,允许存储有关业务的所有结构化和非结构化数据。在这里,我们按原样存储数据,而不对其进行结构化,并在顶部运行不同类型的分析。
如今,数字化转型实际上是将数据驱动的方法应用于业务的各个方面,以创造竞争优势。这就是为什么越来越多的公司希望构建自己的数据湖解决方案。这种趋势仍在继续,并且仍然需要这些技能。
大多数情况下,Hadoop 发行版的供应商选择可能由客户驱动,这取决于他们的个人偏好、供应商的市场份额或现有的合作伙伴关系。用于本地集群的Hadoop分发供应商是Cloudera、Hortonworks、Mapr和BigInsights。本地被认为更安全。银行、保险公司和医疗机构非常喜欢它,因为数据不会离开他们的场所。然而,在时间和精力方面,获取和维护基础设施将花费更多。
还有来自 AWS、GCP 和 Azure 的云存储解决方案。与本地解决方案相比,云解决方案在可扩展性和即用型资源方面提供了更大的灵活性,但维护成本很高。
除此之外,还有一些数据平台正在尝试填补多个细分市场并创建集成解决方案,例如Apache Hudi、Delta Lake。
3、数据仓库
数据仓库可以描述为可用于分析和报告的有序数据存储库,旨在针对聚合请求进行优化。在任何情况下,它都是构建分析和数据驱动决策的基础,就像 Data Lake 一样,它们并不相互排斥,而是相互补充。
数据集市是数据仓库解决方案的最后一层,旨在满足特定业务功能的要求。它们从不同来源提取数据并将其提供给业务用户的能力使它们成为数据仓库领域的增长趋势。
趋势数据仓库解决方案包括Teradata、Snowflake、BigQuery、AWS Redshift。
4、数据中心
有数据仓库,其中信息被分类、排序并以最终结论的形式呈现(其余的被丢弃),还有数据湖——“把所有东西都丢在这里,因为你永远不知道什么会有用”。数据中心专注于不属于第一类或第二类的人。
数据中心架构允许您将数据留在原处,提供集中处理而不是存储。数据在当前所在的位置被搜索和访问。但是,由于数据中心是经过规划和管理的,因此组织必须投入大量时间和精力来确定其数据的含义、数据来源以及必须完成哪些转换才能将其放入数据中心。
数据中心是一种不同的存储架构思考方式。我敢打赌,它在未来会引起一些关注——所有的支持部件今天都可用。
5、数据采集
要创建数据存储,您需要将来自各种来源的数据采集到数据层中,无论是数据湖还是数据仓库,或者只是 HDFS。数据源可以是诸如 Salesforce 之类的 CRM、SAP 之类的企业资源规划系统、PostgreSQL 之类的 RDBMS 或任何日志文件、文档、社交网络图等系统。数据可以通过批处理作业或通过实时流上传.
数据采集的工具有很多,最常见的一种是Sqoop。它提供了一个可扩展的基于 Java 的框架,可用于开发用于将数据导入 Hadoop 的驱动程序。Sqoop 在 Hadoop 中的 MapReduce 框架上运行,也可用于将数据从 Hadoop 导出到 RDBMS。
另一种常用工具是Flume。当输入数据流的速度比使用速度快时使用它。通常,Flume 用于采集 HDFS 或 Kafka 中的数据流,它可以充当 Kafka 生产者。多个 Flume 代理也可用于将来自多个来源的数据收集到 Flume 收集器中。
另一个流行的工具是Nifi。Nifi 处理器是面向文件的,没有模式。这意味着某些数据表示为 FlowFile(它可以是磁盘上的实际文件或在其他地方获得的某些数据块)。每个处理器负责了解数据内容以使用它们。因此,如果一个处理器理解格式 A,而另一个处理器只理解格式 B,则您可能必须在两个处理器之间转换数据格式。
消息总线世界中事实上的标准之一是Kafka——一种开源的流式消息传递总线,可以从您的数据源创建提要,对数据进行分区,并将其流式传输给消费者。Apache Kafka 是一种成熟且强大的解决方案,可大规模用于生产。
6、数据处理
根据数据采集管道,数据被传输到数据层。现在,您需要能够处理大量数据的技术来促进分析和处理这些数据。数据分析师和工程师希望针对需要巨大计算能力的大数据运行查询。数据处理层必须优化数据以促进高效分析,并提供计算引擎来执行查询。
计算机集群更适合满足大数据管道的高计算需求。使用集群需要一个解决方案来管理集群成员、协调资源共享和调度工作节点上的实际工作。它可以由 Hadoop 的 YARN、Apache Mesos 或 Kubernetes 等软件处理。
这一层最流行的模式是 ETL(Extract Transform Load)—— 一种流行的数据处理范式。本质上,我们从源中提取数据,对其进行清理,并将其转换为我们上传到目标数据库、数据仓库或数据湖的结构化信息。
成功实现此模式的工具之一是Apache Spark。这是最重要的大数据多功能工具之一,任何处理大量数据的人都应该掌握它。它对大型集群上的结构化或非结构化数据执行并行查询和转换。Spark 还提供了一个 SQL 接口,并具有良好的流式处理和内置的 ML 功能。
7、ETL 到 ELT
目前,当转换发生在数据仓库内部而不是预先进行时,从 ETL 到 ELT 的转变。在我看来,这是由于缺乏对数据的了解,因为传统上对于必须进入数据仓库以使其稳定并可供用户访问的内容有很多计划和严格要求。然后是输入数据格式、输出结构格式等的变化。
Snowflake、AWS Redshift等工具允许在加载的数据(甚至是非结构化数据)上创建一个抽象层,从而在数据上提供一个简单的 SQL API,而无需考虑字母 T。另一个支持所有 SQL 相关工作流的工具是dbt。
8、批量到实时
现在很明显,实时数据收集系统正在迅速取代批量 ETL,使流数据成为现实。越来越多的摄取和处理层都转向实时,这反过来又促使我们学习新概念,使用可以进行批处理和实时处理的多功能工具,例如Spark和Flink。
9、内存数据计算
由于内存变得更便宜并且企业依赖于实时结果,内存计算使他们能够拥有更丰富、更具交互性的仪表板,这些仪表板可提供最新数据并几乎可以立即进行报告。通过分析内存而不是硬盘驱动器中的数据,他们可以即时查看数据并迅速采取行动。
在大多数情况下,所有已知的解决方案都已经使用或尝试使用这种方法。同样,最容易理解的例子是Spark和Apache Ignite等数据网格的实现。
Apache Arrow将列式数据结构的优势与内存计算相结合。它提供了这些现代技术的性能优势,同时还提供了复杂数据和动态模式的灵活性。我实际上不知道任何其他这样的格式。
二、大数据中的管理挑战
另一个知识领域,基本上位于稍微不同的平面上,但与数据直接相关。管理挑战涉及隐私、安全、治理和数据/元数据管理。
1、数据检索
数据检索系统是一个算法网络,有助于根据用户需求搜索相关数据/文档。
为了对大量数据执行有效的搜索,不建议执行简单的扫描 - 然后会出现各种工具和解决方案。我看到的最常见的工具之一是ElasticSearch。它用于互联网搜索、日志分析和大数据分析。ElasticSearch 更受欢迎,因为它易于安装,无需任何额外软件即可扩展到数百个节点,并且由于其内置的 REST API 易于使用。
此外,著名的工具还有Solr、Sphinx和Lucene。
2、数据治理
数据治理是一种总称,用于表示“我想控制我的数据”。这可能是大数据的重要领域之一,在我看来仍然被低估并且没有好的解决方案。数据治理的目标是建立标准化、集成、保护和存储数据的方法、职责和流程。如果没有有效的数据治理,组织不同系统中的数据不一致将无法消除。这会使数据集成复杂化,并产生影响商业智能、企业报告和分析应用程序准确性的数据完整性问题。
我当然不是这个领域的专家,但我在这里看到的工具是Informatica、Talend、Semarchy。
3、数据安全
由于数据保护水平跟不上数据、供应商和人员的增长,不断增加的数据量给他们的入侵、泄漏和网络攻击防护带来了额外的挑战。全面的端到端保护不仅涉及在数据的整个生命周期(静态和传输中)加密数据,还包括从项目一开始就对其进行保护。正如您所看到的,这会影响我们在本文中讨论的所有方面,并且就像有关信息安全的所有内容一样,很难做到正确。
GDPR、CCPA、LGPD 等隐私法的出现对不合规造成了严重后果。企业必须考虑数据的机密性。这些领域的专家的存在成为必要。
4、数据目录
通常,在公司内部,我们拥有大量不同形式、存储方式、格式的数据,并具有不同程度的访问权限。要查找数据,您需要确切地知道在哪里找到它或知道从哪里开始查找(如果有这样的地方)。这就是所谓的数据目录或数据目录发挥作用的地方。
公司数据源的管理是一个基本过程,它基于公司内各种有限群体已知的信息。但是,收集有关存储在组织内部的数据的所有元数据并进行管理并不容易——人们来来去去,数据被删除和添加。因此,构建数据目录是一项重要但复杂的任务。
三、大数据中的分析挑战
分析和商业智能是一种用于制定数据驱动决策并提供可以帮助企业的信息的方法。使用此级别的技术,您可以启动查询以回答企业提出的问题、切片数据、构建仪表板并创建清晰的可视化。
有了更多数据,您就可以做出更准确的预测和更可靠的解决方案,并构建新的解决方案,在 ML 阶梯上越爬越高。
1、机器学习
机器学习,一种特定的分析方法,允许您创建可以分析大型复杂数据并做出预测或决策的模型,而无需明确编程。越来越多的组织使用 ML 方法来补充他们的日常运营分析和正常的业务运营。
过去,ML 在一定程度上受到数据科学家无法在数据工程师团队将解决方案部署到生产环境之前对其进行评估和测试这一事实的限制。事实上,大多数组织都有一个传统的 BI/分析团队,其次是独立的数据科学团队和数据工程师团队。这些技能组合现在已经开始重叠,随着大数据缓慢地向分析和构建基于大数据的知识,这些团队更加周到地合作。因为没有机器学习的帮助,大数据太大了。因此,至少需要理解我认为的 ML 的基本概念。当然,应该特别注意它所依赖的东西,如统计、ML 方法优化方法、偏差/方差、要理解的不同指标(这实际上很重要)等。在应用机器学习中,你需要了解为什么一切正常,公式并不重要,但通常,那些不懂模型背后的语言的人会犯非常愚蠢的错误。
还有很多要说的,我下次再说。ML 里面有很多领域——NLP、CV、推荐系统、知识表示等,但是通常,当你至少理解了开始时,你已经理解了你不理解的东西,所以当然,你可以尽可能深入想。
如果您想成为一名机器学习工程师,请确保您了解Python。这是机器学习的通用语。然后值得学习了解用于处理数据的不同类型的框架,例如NumPy、Pandas、Dask和已经提到的Apache Spark。当然,还有最流行的 ML 库:Scikit-Learn和XGBoost。
我认为每个人都明白,ML 中真正重要的方向长期以来一直与深度学习相关。经典算法当然不会去任何地方。在大多数情况下,它们足以制作一个好的模型,但未来当然在于神经网络。深度学习的魔力在于它会随着更多的数据而变得更好。另外,值得一提的是,可以在此处添加迁移学习、1cycle 策略、Cuda 和 GPU 优化等词。
2、分布式机器学习
另一件值得一提的是分布式机器学习。正如我所说,大数据正在慢慢走向更复杂的大数据分析。存储在中央存储库中的大型数据集需要巨大的处理和计算需求,因此分布式 ML 是正确的方向,尽管它存在很多问题。
我个人对这种方法很感兴趣,但除了大公司之外,它对任何人都无关紧要。模型的准确性对他们来说非常重要,这只能通过创建具有数百万个参数和大量数据的巨大模型来获得。对于所有其他人,正如我所说,关于子集或预聚合数据的经典算法非常适合实际应用。
3、实时分析
虽然组织通常重视实时数据管理,但并非所有公司都对大数据进行实时分析。原因可能会有所不同——缺乏经验或资金不足、担心相关问题或管理层普遍不愿。然而,那些实施实时分析的公司将获得竞争优势。
这里的工具是Apache Spark Streaming、Apache Ignite Streaming、Apache Flink、AWS Kinesis。
4、数据科学自动化
为了以某种方式自动化数据预处理、特征工程、模型选择和配置以及结果评估,发明了 AutoML。AutoML 可以自动执行这些任务,并且可以了解在哪里继续研究。
当然,这听起来很棒,但它的效果如何?这个问题的答案取决于你如何使用它。这是关于了解人们擅长的领域以及机器擅长的领域。人们善于将现有数据与现实世界联系起来——他们了解业务领域,他们了解特定数据的含义。机器擅长计算统计数据、存储和更新状态,以及做重复的过程。探索性数据分析、数据预处理、超参数调整、模型选择和将模型投入生产等任务可以通过自动化机器学习框架在一定程度上自动化,但良好的特征工程和得出可操作的见解可以通过人类数据来完成了解商业环境的科学家。通过分离这些活动,我们现在可以轻松地从 AutoML 中受益,
5、可视化和商业智能
由于大数据系统中处理的信息类型,识别数据随时间的趋势或变化通常比值本身更重要。数据可视化是理解大量数据点的最有用的方法之一。它通过以易于理解的形式引导数据、突出趋势和偏差来帮助讲述故事。
通过 BI 将来自各种来源的未处理信息转换为方便且易于理解的分析。BI 系统可以应用于任何行业或活动领域——在公司整体层面以及部门或单个产品层面。
最流行的可视化和 BI 工具,在我看来,除了上面描述的所有其他技术堆栈之外,还有Tableau、Looker、Microsoft Power BI、Qlik 。
Tableau 是一款功能强大的表格 BI 和数据可视化工具,可连接到数据并允许您执行详细、全面的分析以及绘制图表和仪表板。
Looker 是一个基于云的 BI 平台,允许您在配置讲述数据故事的可视化后,使用 SQL 定义的指标查询和分析大量数据。
另一种常用于数据交互工作的可视化技术是“笔记本”。它们允许以促进共享、演示或协作的格式进行交互式研究和数据可视化。这种可视化界面的流行示例是Jupyter notebook、Apache Zeppelin和Polynote。
四、大数据中的运营挑战
要解决其他帖子中描述的所有挑战,您需要一个具有正确架构的基础架构以及该基础架构的正确管理、监控和供应环境。这不是我在本节中包含的全部内容——还包括管道编排和在数据管理的各个领域引入 DevOps 实践。
1、微服务管理
微服务的建设早已成为一个解决的问题。一种或另一种方式,所有严肃的解决方案都建立在微服务架构上。这里有Docker容器、Kubernetes、Helm、Terraform、Vault、Consul以及它周围的一切。这一切都成为了一个标准而没有被注意到。
2、监控
实时数据通常用于可视化应用程序和服务器指标。数据经常更改,指标中的大增量往往表明对系统或组织的健康状况产生重大影响。在这些情况下,Prometheus等项目可用于处理数据流和时间序列数据可视化。
3、日志管理
日志管理是处理由不同软件应用程序及其运行的基础设施生成的日志事件的过程。它可以包括日志的收集、分析、存储和搜索,最终目标是使用数据进行故障排除和获取业务、应用程序和基础架构信息。
这里的重要工具之一是ELK,它由以下组件组成——Elasticsearch(文本搜索工具)、Logstash 和 Beats(数据发送工具)和 Kibana(数据可视化工具)。它们共同为实时数据分析提供了一个完整的工作工具。虽然它们都旨在协同工作,但它们每个都是一个单独的项目。ELK 提供了报表创建、告警、日志搜索等在线分析功能。这使得它不仅是 DevOps 的通用工具,也是上述领域的通用工具。
另一种工具Splunk是一种机器数据工具,它使用户、管理员和开发人员能够立即接收和分析由应用程序、IT 基础设施中的网络设备以及任何其他机器数据创建的所有数据。Splunk 可以通过图表、警报、报告等方式提供实时信息,从而接收机器数据并将其转化为实时分析。
4、管道编排
大多数大数据解决方案都包含封装在工作流中的重复数据处理操作。管道编排工具有助于自动化这些工作流程。他们可以以容错的方式计划作业、执行工作流和协调任务之间的依赖关系。
我以前听过 Oozie,现在主要是Airflow、Dagster、Prefect或AWS Step Functions。
5、云
在大数据中,很明显,未来在于云,任何对数据管理感兴趣的人都最好了解它的概念。除了在云级别应用的编程模式(Gateway API、Pub/Sub、Sidecars 等)之外,您还会遇到不同的概念,例如基础架构即代码、无服务器,当然还有架构概念(N 层、微服务、松散耦合等)。就个人而言,它让我对更高层次的工程方法原理有了更深入的理解,并(一点)提升了架构方法。有GCP、AWS和Azure等云。我想没有人会争辩说没有其他选择。例如,您决定选择 AWS,但所有云的设计方式都相同,尽管它们都有自己的特点,而且并非所有 CSP 服务都相互匹配。
6、数据/解决方案迁移
从本地解决方案到云的数据迁移的集成和准备过程既复杂又耗时。除了迁移大量现有数据外,公司还必须在迁移完成前的几周或几个月内同步其数据源和平台。除了迁移之外,企业正在准备灾难恢复计划,以便在不牺牲业务的情况下为任何事情做好准备,这里显而易见的解决方案也是迁移到云。
7、MLOps
我们的机器学习算法很好,但要取得好的结果确实需要一个由数据专家、数据工程师、现场专家和更多支持人员组成的庞大团队。虽然专家的成本不够约束,但我们的理解仍然很原始。最后,将模型投入生产并使其保持最新是最后一个障碍,因为模型创建的结果通常只能通过使用相同的用于学习的昂贵且复杂的架构来实现。应该理解,转向生产是一个过程,而不是一个步骤,它在模型开发之前很久就开始了。它的第一步是定义业务目标、可以从数据中提取的价值假设以及应用的业务理念。
MLOps 是技术和 ML 流程以及在业务流程中实施已开发模型的方法的组合。这个概念是作为与 ML 模型和 ML 方法相关的 DevOps 的类比而出现的。通常,MLOps 系统包括用于收集和聚合数据、分析和准备用于 ML 建模的平台、用于执行计算和分析的工具,以及用于在不同生命周期过程之间自动传输 ML 模型、数据和衍生软件产品的工具。这种统一的管道部分或完全自动化了数据科学家、数据工程师、ML 工程师或大数据开发人员的工作任务。
我认为以下是最流行的 MLOps 工具:
- AWS SageMaker是一个基于云的机器学习平台,允许开发人员在 AWS 云中创建、训练和部署 ML 模型;
- Google 的Kubeflow for Kubernetes 是一个免费的开源机器学习平台,用于在 Kubernetes 容器虚拟化环境中使用机器学习管道;
- MLFlow是一个开源平台,用于管理机器学习的生命周期,包括实验、复制、部署和 ML 模型的中央注册表;
- Sacred是一个用于自动化 ML 实验的工具,从跟踪参数到保存配置和再现结果;
- DVC是一个类似于 Git 的开源版本控制系统,用于本地使用的 ML 项目。
除此之外,还有很多工具可以将 ML 模型投入生产,除了已经说过的之外,最受欢迎的工具我认为是TensorFlow Serving和Vowpal Wabbit。
结论
结果很多,似乎我什么也没说。另请查看Tobias Macey 对 2021 年数据工程前景的采访。
可用的产品太多。他们中的大多数声称可以解决您公司遇到的所有数据问题。但事实并非如此。
我不认为自己是所有方面的专家,只是在这里推测技术。但正如您从我的文章中所看到的那样,许多技能在大数据的几个领域重叠,并不止于此。有了他们,你就不会害怕找不到工作。
不要追逐趋势——培养与时俱进的技能。最相关的技能可能是软技能。
与大量数据工程活动相关的陡峭学习曲线变成了悬崖。开发人员的手工编码项目需要对组织的许多方面以及大量工具和现有解决方案有深入的了解。
在数据管理方面,我们仍然处于狂野的西部,尤其是在 ML ...