大数据工程师的必备技能

Mar 24, 2024 by Zhang in  Blog

大数据是在谷歌等公司开始积累大量数据之后出现的,这些数据远远超过了前几代软件所能容纳的范围。谷歌的工程师们需要开拓管理这些数据的新方法,这是一个被称为大数据工程的新职业的开始。

大数据工程师负责设计和构建人们通常称之为“大数据”的大规模数据系统。成为一名大数据工程师是一个漫长的过程,回报丰厚。如果你对这个行业感兴趣,你需要学习基本的数据库技能,包括关系数据库和SQL,以及如何在分布式软件系统(如Hadoop)中管理大量数据,让我们具体看看这些技能。

这里有一些可以开始研究的技术。阅读相关文档,尽可能下载软件,或者在云环境中使用它们,例如在亚马逊网络服务(AWS)中:

Hadoop

[链接:https://hadoop.apache.org/]:

这是Apache基金会最初的大数据项目之一。它内部的技术相当复杂(它是一个分布在多个系统上的文件系统)。但是Hadoop非常简单易用,而且作为大数据工程师,你很可能会在Hadoop之上构建系统。

Spark

[链接:https://spark.apache.org/]:

该系统与Hadoop紧密合作,对分布在多个服务器上的数据进行数据分析。与Hadoop一样,它由Apache基金会管理,这意味着该软件是免费的。

Kafka

[链接:https://kafka.apache.org/]:

这个软件,同样来自Apache,与Hadoop和Spark紧密合作,用于构建数据管道。数据从多个来源流化,应用程序可以接收这些流化数据。大数据工程师可能会设置Kafka,然后软件开发人员将编写使用流数据的应用程序。或者,大数据工程师也可能编写这样的应用程序。

HBase和Cassandra

[链接:https://hbase.apache.org/]

[链接:https://cassandra.apache.org/_/index.html]:

这两种都是“NoSQL”数据库系统,它们放弃了传统的关系数据库架构,允许更灵活的数据存储。它们还可以与Hadoop一起工作。

  • 专业提示:创建上述软件是为了管理大型系统,这些系统的数据分布在数百甚至数千台计算机中(我们将在稍后讨论)。不过,这个软件可以安装在你自己的电脑上。但你更好的选择是使用不同云平台(如AWS)的一些“免费层”产品。即使你超过了免费级别,你通常也可以每月花费不超过50美元来获得足够练习的最小设置。这是你可能想要走的路线,并将费用视为你教育的一部分。

与大数据工程相关的一般技术概念

除了上述内容之外,你还需要了解有关计算和数据的一些一般技术概念,以下是其中的一些。

  • 分布式计算和数据仓库:曾经有一段时间,公司的数据库位于一台计算机上,检索数据很容易。而现在,数据分布在许多计算机上,较小的组织可能有两三个,大型组织可能有几十个,像谷歌这样的地方有成千上万个这样的服务器。更复杂的是,这些服务器通常运行在遍布全球的数据中心。这些服务器一起操作,相互通信,并共享工作负载。它们一起运行软件的概念被称为分布式计算。此外,数据存储在这些服务器上,这个概念称为数据仓库。大数据工程师必须是数据仓库方面的专家,并且对分布式计算系统足够熟悉,才能充分利用它们。

以下是一些你需要学习的系统:

Redshift是亚马逊网络服务公司的数据仓库服务。

[链接:https://aws.amazon.com/redshift/]

BigQuery是谷歌的数据仓库服务,也是该行业最早的服务之一。

[链接:https://cloud.google.com/bigquery]

Snowflake:一个独立的数据仓库平台

[链接:https://docs.snowflake.com/en/user-guide-getting-started]

ETL(提取、转换、加载)这是一个行业流行语,今天渗透到所有数据分析、数据科学和数据工程中。这个想法本身看起来很简单:从多个来源提取数据,将数据转化为有用的东西,将转换后的数据加载到另一个数据库系统中。这就是所谓的管道。但就像大多数听起来简单的事情一样,细节实际上相当复杂。大数据工程师通常负责检索和存储数据的技术方面,以便数据分析师和数据科学家可以使用这些数据。这意味着理解执行ETL任务的软件。这里有一些你需要知道的,从一个(如AWS Glue ETL或Google Cloud Dataflow)开始,尽可能多地学习,然后学习其他的来熟悉它们:

Apache NiFi和Apache Beam

[链接:https://nifi.apache.org/]

[链接:https://beam.apache.org/]

它们是由Apache基金会管理的开源ETL系统。NiFi是一个用于构建管道的GUI工具,Bean是一个用于创建管道的编程系统,它运行在分布式系统上。

Talend

[链接:https://www.talend.com/]

是一个专有的数据管理软件系统。

Informatica PowerCenter

[链接:https://www.informatica.com/]

是一个用于组合大量数据源的专有系统。

AWS Glue ETL

[链接:https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/aws-glue-etl.html]:

这是AWS Glue服务的一个子集。Glue本身是一个系统,开发人员可以通过它编写响应不同事件的代码,Glue ETL处理ETL方面。

Google Cloud Dataflow

[链接:https://cloud.google.com/dataflow/]:这是前面提到的Google的Apache Beam的云托管实现。

Azure数据工厂

[链接:https://azure.microsoft.com/en-us/products/data-factory]

是微软基于云的ETL产品。

  • 数据可视化:虽然这通常与数据分析技能相关,但作为数据工程师,你可能在没有预算雇用多个数据人员的小型组织中工作。这意味着除了你的技能之外,你还需要做数据分析和可视化。或者,你可能在一家拥有数据分析师的大型组织工作,但作为数据工程师,你可能需要培训分析师,因此,学习数据可视化技能非常重要。
  • 数据分析:数据分析也是如此,你可能需要承担这些任务或培训分析师。以下是你需要掌握的技术。
  • 数据建模:这就是数据人员如何采用现实世界的概念(例如客户订单系统)并创建数据库表来对现实世界的数据进行建模。数据建模可能是任何数据专业最基本的技能。
  • 关系数据库概念:数据通常以“关系”方式建模,这意味着一组数据(例如单个客户的几个客户订单)与另一组数据(例如该客户的详细信息,如公司名称、联系人和电话号码)相关。MySQL和SQL Server等数据库是关系数据库系统。MySQL是一个免费的开源数据库系统,易于安装和使用。你可以从这个开始,然后学习其他关系数据库系统。
  • SQL:这是用于在关系数据库中对数据建模的语言。现在所有的关系数据库都使用这种语言。
  • NoSQL数据库概念:2010年左右,人们开始创建一种新型的非关系型数据库。这些数据库以不同的格式存储数据,通常作为“对象”(基本上只是名称、地址、电话号码等数据项的集合)。但他们对这些细节并不严格。如果有一项需要稍微有所不同,那也没关系。由于非关系方面,这些数据库系统被称为NoSQL。这样的系统越来越受欢迎,现在最受欢迎的是MongoDB。你可以在这里免费安装并练习使用它[链接:https://www.mongodb.com/try/download/community]。(他们还提供名为Atlas的免费云托管版本,附带可选的付费计划。)
  • 数据清理:这是指查找和修复不正确的数据项。
  • 统计:每个数据分析师都需要知道统计公式,以及如何使用它们来运行数据报告。你会想要学习基础知识,然后尽你所能去学习。

其他技术技能

除了所有的数据,你还需要其他的技术技能来完成你的技能组合。

  • Python编程:Python是数据专业人员使用的语言。你会想要学习并掌握它。在python中,你将需要学习如何使用应用于数据的工具(称为包),包括numpy和pandas。
  • 容器化:这是一种在另一台计算机服务器上运行非常小的虚拟操作系统(通常是Linux)的方法(同样通常是Linux,但“三大”都可以:Linux、Windows、Mac)。容器非常适合在云中运行,因为它们使用的资源很少。
  • 通用云平台:以下是“三大”云平台:亚马逊AWS、谷歌、微软Azure。你需要对云有一个很好的了解。选一个,哪个都无所谓,然后开始尽可能多地学习。学习诸如配置服务器、管理容器、运行无服务器代码、存储数据对象、管理用户和权限、网络和虚拟私有云、负载平衡和自动扩展等概念。然后开始查看不同的托管数据库选项,例如,Amazon web Services有一个名为RDS的服务,用于管理托管的MySQL、SQL Server和其他服务。

支持你的数据工程职业目标的软技能

任何技术职业都不仅仅与技术有关。所有的技术工作都需要和其他人一起工作,需要其他软技能。以下是作为大数据工程师需要具备的一些技能。

  • 解决问题的能力:大数据工程师不仅仅是管理数据。他们解决问题。业务管理经常会遇到需要深入数据挖掘的问题,比如关于客户的数据,但可能并不真正理解问题本身。他们可能会问一个模糊的问题。数据分析师很可能会被要求为这些模糊的问题找到答案,但是数据分析师会求助于你,大数据工程师,帮助你将所有数据拼凑在一起,并帮助识别数据本身的模式和趋势。

因为大数据工程师也涉及数据的工程方面,他们是必须追踪问题的人。例如,某些数据系统可能在检索数据时遇到瓶颈,在处理大型数据系统时,这是一个非常常见的问题。大数据工程师需要追踪导致瓶颈的原因并加以解决。其他问题也可能发生,比如系统故障,或者分散的数据集没有正确集成。

  • 沟通:当数据库术语对你来说变得很自然时,你会发现在非技术领域工作的同事可能不会像你那样思考数据及其组织。这意味着你必须接受他们的要求,并将其转化为更多的技术方面。例如,如果两个大公司合并,它们的数据将开始存储在不同的系统中,很可能使用不同的技术,具有非常不同的数据格式。对合并后的数据进行分析可能相当具有挑战性。但有商业头脑的人可能不明白为什么合并数据如此困难。这需要以简单的、非技术的方式解释复杂的技术信息。
  • 协作:通常你将与技术人员和非技术人员一起工作,并且你需要适应协作和团队合作。软件开发人员将需要你的帮助来检索在他们的软件中使用的数据。业务人员和管理人员需要有关数据的信息。这就要求你能够和不同类型的人一起工作。

大数据工程是一项高级职业,包括许多不同的技术和概念。它可能需要几年的时间来学习和掌握。

随着你在培训和教育方面的进步,你可能会发现自己特别喜欢某一部分,例如云计算。如果是这样,那就去做吧!你不需要成为大数据工程师。相反,你可以成为云计算工程师。或者,你可能会发现大数据工程正适合你。

无论如何,继续学习,继续学习。并计划在你的职业生涯中不断学习。新技术一直在出现,你会想要确保自己走在它们的前面。

作者:Jeff Cogswell

甲骨文裁员传闻凸显云计算之争

Aug 05, 2022

甲骨文(Oracle)会解雇数千名员工吗?《信息报》(the Information) 7月份的一篇文章暗示,这家IT巨头最早可能在8月份削减数千个岗位,这次裁员可能会影响到多个部门。

如何提前应对裁员危机?

Dec 20, 2022

裁员似乎占据了头条,Meta和亚马逊等科技巨头削减了数千个工作岗位。与此同时,大型和小型企业的高管预测,可能会导致进一步的裁员。无论你是否感到无奈,现在都是准备裁员的好时机。

快速发展的公司最想招聘的两类软件工程师

Jul 13, 2021

提到软件开发,你会想到什么?

除了《星球大战》以外,电子游戏也在潜移默化中影响大家对编程的理解。

Leave a Comment

Your email address will not be published. Required fields are marked *

Comment *