作者 | 熊猫教授 编辑 | Emma
来源 | 熊猫教授(ID:IT_ProfPanda)
前两期我分别介绍了数据分析师和数据科学家的主要技能栈,今天我接着说说数据架构和工程师的常见技能。
首先,咱们回忆一下之前关于数据架构和工程师职责的讨论。如果你对软件研发行业内的架构师和开发工程师职责很熟悉的话,那么理解数据架构师和工程师的职责所在就不难了。
不同之处在于,数据相关的架构师和工程师,他们更侧重的是数据相关的内容。从前几期的内容,我们可看到数据分析师、数据科学家或者其他使用数据的岗位,需要海量的、准确的、及时的数据。
数据架构和工程师的职责,简单的说就是打造一个稳定可靠的环境,让数据分析师和科学家们可以专注于数据的分析和建模,而不用担心数据是怎么来的,质量是否合格等等。
由此,我认为数据架构和工程师主要负责的是数据的基础建设,包括分布式集群的搭建及维护,以及基本的数据仓库建设任务。
1
分布式集群的搭建和维护
在如今这个“大数据”和“人工智能”的时代,面对动辄每天几百G甚至上T的数据规模,传统的数据架构和平台往往力不从心。所以,数据架构师需要负责搭建并设置分布式的集群,让我们可以把数据存放在分布式的存储上,并通过分布式的计算资源来处理这些数据。
现在用得最广泛的就是Hadoop和Spark技术。Hadoop的历史比较悠久,MapReduce的理念可谓深入人心,其生态系统包含很多组件和应用工具,例如分布式文件系统HDFS,分布式SQL工具Hive,流处理工具Storm,消息分发工具Kafka,系统资源管理工具Yarn等等。
不过受限于其设计框架和文件系统的性能,Hadoop的生态系统在处理的实时性方面,正在被Spark、Flink等一批新生代所赶超。不同与Hadoop的批量处理方式,Spark采用的是微批处理,先收集再处理,相对于MapReduce,减少了大部分的延迟时间。
而Flink采用连续流式流传输模型,不会在收集数据或处理数据时出现过多延迟,可以说是实现了更为实时的在线数据处理。作为数据架构师,需要深入了解这些数据存储和处理平台的优缺点,以及适用何种场景。
2
数据仓库的设计和实现
数据架构和工程师的职责,并不局限于搭建稳定的数据环境,他们还需要考虑数据仓库。这是因为从业务和生产环境得到的原始数据,通常并不能直接用于数据分析和数据科学的任务,或者换个角度来说,某些科学分析所需的数据并不存在于原始数据中。
举个例子,数据科学家可能需要很多用户行为相关的数据,作为某个机器学习模型中的特征。这些数据包括用户查询中的高频词、浏览记录中的高频商品、购物车中的被反复添加的商品等等。
这些数据并不能直接从原始的日志记录中获得,而是需要分析过往一段时间内的所有记录,甚至是进行一些简单的自然语言处理。这个时候,数据工程师就需要对数据进行必要的ETL处理,并将结果保存到数据仓库。
这里的ETL是提取、转换和载入的英文简称,是数据工程师构建数据管道所遵循的步骤。而设计和构建数据仓库是数据工程中最受欢迎的技能之一是。
数据仓库是收集、存储和检索所有原始数据的地方,如果没有数据仓库,一个数据科学家的效率就会大大降低,其模型也很可能无法大规模的应用。
传统的数据工程师会使用基于SQL的工具,包括MySQL,Oracle SQL等来协助完成这项任务。而在大数据时代,他们还需要掌握很多分布式数据处理的工具。
不过好在很多分布系统,都有对应的类SQL语言。例如Hive有HiveQL,而Spark有SPARQL。虽然这些类SQL语言并不一定和传统的SQL语言完全一致,但是如果你精通了传统SQL,这些语言还是很好上手的。
此外,Python的生态系统提供了很多有力的工具包,例如用于科学计算的Numpy和Scipy,用于数据可视化的matplotlib和Seaborn, 用于大规模数据管道构建的PySpark等等。
于此同时,一些像Airflow和Azkaban的调度工具,也可以帮助数据工程师合理的安排数据清洗任务。
小结
小结一下,和数据分析师以及数据科学家相比,数据架构和工程师这个角色不需要太多的学术和科学知识,但是通常需要具备一定的计算机和编程背景。此外,对大规模体系架构和数据处理的理解,也是相当必要的。
如果你对这类岗位有兴趣,就要先从计算机编程入手,了解分布式数据架构以及对应的数据操作,并多多使用开源软件进行实践,最终一定会有所收获。
作者简介,熊猫教授,一位定居美国的计算机科学家,交大计算机博士,发表过20多篇国际论文和30项国际专利。曾任职于微软、IBM、eBay,出版过四本技术畅销书,极客时间3万畅销专栏作者。
END