软件开发是当前一个很热门的话题,可是你知道软件开发岗位都有哪些吗?其中又有什么联系呢?本文以软件开发的大数据方向,来聊聊这个问题。

大数据开发流程图
B站大佬TALKDATA的大数据神图

        如果说互联网系统像一个以服务器为中心的星型,那么大数据系统更像一个流水线。既然称为大数据,肯定是非常庞大的数据量,有的甚至已达到PB(1PB=1024TB)级别。从数据获取到最后产出价值,通常历经以下流程:数据采集、数据传输、数据清洗、数据存储、数据挖掘与模型训练、数据可视化、数据与模型应用。Hadoop家族主要包含HDFS(分布式文件存储)、HBase(分布式数据库)和MapReduce(海量数据批处理计算框架),分别对应Google提出大数据之初的三篇论文GFS、Bigtable、MapReduce。MapReduce本质是批处理,难以满足海量数据的实时性计算,于是出现了流运算,代表框架为Spark/Storm/Flink。此外Hadoop生态中还包含资源调度框架YARN、数据仓库框架Hive、分布式管理软件zookeeper、任务调度ooize、数据采集sqoop等。

        数据采集:数据的采集有很多渠道,对于自己研发的系统,可以通过在应用中埋点的方式获取到一定的数据。如手机端的用户常打开的功能、点击次数、页面停留时长等信息都可以做埋点处理,时间久了就会累积下来该用户的使用习惯数据。如需要外部数据,可以使用网络爬虫从其他网站或系统中抓取公开的数据资源,以及向有关机构购买批量数据。人工偶尔也会搜集到一些可用的数据,手动录入到系统中。爬虫工程师负责使用网络爬虫获取外部资源,常用开发语言为Python。

        数据传输:本质上就是利用消息中间件(如kafka等)对采集数据进行传递。为什么要使用消息中间件,不能直接采集后就进行计算吗?主要是通过消息中间件防止流量突增,对流量进行缓冲,防止数据计算框架压力过大。

        数据清洗/计算/预处理:本质上就是把数据处理成我们想要的样子。在大数据分析过程中,由于数据来源复杂、质量不一、格式不规范等问题,需要对原始数据进行清洗。数据清洗是指将数据集中的不准确、不完整、不一致、重复或无效的数据清除或修正,以便于后续数据分析和处理。通常包括数据筛选、数据去重、数据标准化、数据缺失值处理、数据验证几个步骤。数据清洗对于大数据分析来说是至关重要的一环,它可以提高数据质量和可信度,减少数据分析中的噪音和干扰,提高数据分析的准确性和效率。涉及Flume、Logstash、Sqoop等技术,对应的岗位为数据开发工程师

        数据存储:处理大量数据时,需要使用特殊的存储系统和技术。通常,大数据存储系统需要能够高效地存储和管理大量的结构化和非结构化数据,以便能够快速地进行数据处理和分析。常见的大数据存储技术有分布式文件系统 、NoSQL 数据库、Hadoop HDFS、数据仓库(这种存储系统通常用于存储和管理结构化数据,例如企业资源计划(ERP)系统和关系型数据库等) 、内存数据库等。涉及HBase、Cassandra、Apache Spark等技术,对应的开发岗位为大数据工程师数据仓库工程师

        数据挖掘/检索/分析:数据挖掘是从大量数据中自动或半自动地提取出有用信息的过程。它是一种多学科交叉领域,涵盖了计算机科学、统计学、人工智能、模式识别、机器学习等多个学科。通常包括以下步骤:1、将清洗后的数据进行预处理,包括数据集成、数据转换和数据规约。2、选择或构造出与问题相关的特征,进行特征提取。3、选择一个合适的数据挖掘算法,用于发现数据中的模式或规律。4、使用所选算法对数据进行建模,生成预测模型或分类模型等。5、对构建的模型进行评估和调整,确保模型的可靠性和有效性。涉及Python、R、Apache Mahout等技术,对应的岗位为数据挖掘工程师

        模型建立与训练:在准备好数据后,接下来就要进行模型训练了。就是将大量的数据喂给模型,让模型渐渐地有一定的判断力和预知力。举个例子,很多局外人或初学算法模型的同学会问到,能不能为彩票建立一个模型,将历史彩票中奖数据都输入进去,然后判断未来的中奖趋势呢?可以肯定的回答:不能!为什么呢?假如有大量姓名和性别的对照数据喂给模型,模型学习久了就能对给出的姓名判断出性别,准确率将很高。那是因为姓名和性别之间是有一定联系的。可是如果只有姓氏和性别的对照数据,则再多的数据喂给模型,模型也无法对给出的姓氏判断出性别,因为两者之间没有某种特征关联,一点都找不到。而彩票就是如此,每天的彩票中奖和什么东西有关联关系呢?根本就找不到这种关联,所以再多的彩票数据也无法训练出可以预测中奖趋势的模型。建立与训练模型通常使用Python编程语言及其大量的数学库,对应的岗位为算法工程师

        数据可视化:将数据归类后在前端显示为各类图表,以便数据分析师和业务人员更好地理解和利用数据。这个过程称为数据可视化。涉及Tableau、QlikView、PowerBI等技术,对应的开发岗位为数据可视化工程师

        模型应用:大数据的根本用途在于从过往的大量数据中找出规律,训练模型让其懂得这种规律,在以后的发展中遇到类似的场景或情形时,模型对其下一步发展能够给出较为准确的判断,起到“料敌先机”的作用。常用于商业智能和数据分析,通过收集和分析大量数据,企业可以更好地了解市场趋势、客户行为和竞争对手的活动,从而制定更好的商业策略。如:金融服务、健康医疗、交通和物流、政府服务等行业。大数据系统将数据和模型都处理好后,就又回到了互联网系统中。大数据系统默默在后面运行,处理分析大量的数据并做预判,互联网系统则直接与人打交道。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐