大数据到底应该如何学?大数据生态圈技术组件解析

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云解析 DNS,旗舰版 1个月
简介: 大数据到底应该如何学?大数据生态圈技术组件解析

这是一篇技术杂谈类的文章。

下面是食用须知:
本文适合还不十分了解大数据的你,同样适合不确定要不要学习大数据的你,将带你了解行业的需求以及与之相关的岗位,也同样适合刚刚踏入大数据领域工作的你,欢迎收藏并将文章分享给身边的朋友。
笔者从事大数据开发和培训多年,曾为多家机构优化完整大数据课程体系,也为多所高校设计并实施大数据专业培养方案,并进行过多次大数据师资培训、高校骨干教师学习交流,希望自己的一点粗浅认识能够帮助到大家。
本文并不是要将大数据描述成一个万能的、可以解决所有问题的东西,而是客观的阐述其作用,能够解决的一些问题。希望将这一领域尽可能完整的介绍给你,至于如何选择需要根据自己的实际情况来决定。

大数据的基本概念

什么是大数据

要说什么是大数据我想大家多少已经有所了解了,很多落地的案例已经深入到了我们的生活中。大数据具有数据量大、数据类型丰富复杂、数据增长速度快等特点,一切的数据分析必须建立在真实的数据集上才会有意义,而数据质量本身也是影响大数据分析结果的重要因素之一。

作为学习者,我们关心的应该是大数据能够解决什么样的问题,能够应用在哪些领域,应该学习哪些内容,侧重哪一方面。

简单来说,我们需要学习的就是一系列的大数据生态圈技术组件,以及贯穿整个数据分析流程的分析方法和思维,并且思路更加重要一些!只有明确了数据分析场景与流程,我们才能够确定需要整合哪些大数据组件来解决这一问题。

下面我们将一起推开这一领域的大门~

数据是如何采集的

大数据分析的第一步就是对数据的收集和管理,我们需要先来了解一下数据是如何产生的?又是被如何捕获的?那些看似杂乱的数据真的能被分析吗?

主动的数据产生与用户行为数据收集

主动产生的数据比较好理解,在我们使用互联网或者各种应用的过程中,通过填写提交表单就会产生数据。类似的,我们在线下环境中,比如银行开卡、纸质表格的填写,最终都会变成电子数据流入到系统中。通常,我们会将这一类行为归为用户注册,通常会是产生数据的起点。(当然,有些时候我们分析的数据也可能并不关心用户自身的信息。)除此之外,通过使用一些平台的功能,用户会上传和发布各种类型的数据,如文本类信息、音频、视频等,这都是数据产生和积累的方式。

对于用户行为数据更多的来自于应用埋点和捕获,因为用户使用应用必须通过鼠标点击或者手指触碰来和用户界面进行交互。以网页应用(网站)为例,对于鼠标的所有行为基本上都可以通过事件监听的方式来捕获,鼠标在某个区域停留的时间、是否进行点击,我们甚至可以根据用户的行为数据刻画出整个页面的热力图。

在不同的应用场景中,我们可以对行为类型、功能模块、用户信息等维度进一步的划分,做更加深入的分析。

结构化数据与非结构化数据

最常见的结构化数据就是存储在关系型数据库中的数据,如MySQL、Oracle等,这些数据都具备一个特点,就是十分规范。因为关系型数据库属于写时模式,也就是说不符合预先设定的数据类型和规范的数据不会通过校验,存不到数据库中。除数据库中的数据以外,那些能直接导入到数据库中的数据文件我们也可以把它们视为结构化的数据,如:CSV格式。这些数据通常需要具备统一的列分隔符、行分隔符,统一的日期格式等等。

对于非机构化的数据指的就是除结构化数据以外的另一大类数据,通常没有预期的数据机构,存储在非关系型数据库中,如:Redis、MongoDB,使用NoSQL来进行操作。也可能是非文本类型的数据,需要特别对应的手段来处理和分析。

大数据真的能预测吗

问起大数据到底能不能预测,倒不如来说一说大数据是如何预测的。如果结合人工智能领域来说的话就比较复杂了,就说比较简单的场景:用统计分析的方法进行辅助决策,或者用经典数据挖掘算法进行模型的训练。既然是预测,那就有可能准确,也有可能不准确,分析者需要做的就是合理的使用各种数据维度,结合相应的算法或统计分析方法,去训练或拟合出一个潜在的规律。这个过程就好比,给了我们三个点(1,1)、(2,2)、(3,3),我们可以大概猜到它的函数式有可能为y=x一样。当然,实际的分析过程要比这复杂的多得多,毕竟有很多函数式都可以满足这三个点,但到底哪一个是我想要的规律呢?这就需要理论知识与行业经验并重,不断的打磨和优化才能够得到一个可靠的模型。

但是我们可以明确的一点是,大数据的预测也好、推荐也好,都是基于算法的,是数学的,也是科学的,但并不会百分之百的准确。

什么是大数据开发

了解了什么是大数据,接下来介绍一下大数据开发这一岗位,先直接上岗位描述(JD:Job Description)给大家感受一下。然后来说明一下大数据开发工程师的主要工作,最后再来总结一下需要掌握的技能。

主要工作

从上面的岗位描述中我们可以发现大数据开发工程师一般会与业务进行对接,要么是基于某一个场景进行有针对性的数据处理,要么是打造一个大数据产品。在这里我们也需要纠正一个小小的概念,可能有些小伙伴认为有大数据岗位需求的公司一定是一个自身具备大量数据、有着大量用户积淀的公司,其实不然。

除了分析公司自身业务数据以外,同样可以打造一款通用的大数据产品,大家可以参考我的另一篇文章:如何用开源组件“攒”出一个大数据建模平台。所以大数据的岗位虽然不像普通的开发工程师那么多,但是需求依然存在。

如果是分析公司自身的业务数据,一般会更偏重于使用大数据组件和算法库,构建出一个可行的数据分析方案。大家可以看出,现在完全不涉及算法的大数据岗位已经比较少了。这里的算法指的并不是数据结构,而是指机器学习库,与数据挖掘相关的算法,至少要知道如何控制算法的输入与输出,算法能够解决的问题,可能不会涉及到亲自建模,在大数据分析的小节中会详细介绍。

如果是开发一个大数据产品,比如建模平台,或者是致力于解决数据采集、数据可视化的解决方案。那么这比较适合从开发工程师转行大数据开发工程师的小伙伴,相当于在开发一个应用的基础上又增加了底层的大数据组件。这就要求我们既需要懂得原始的服务端框架的那一套,又能够驾驭大数据开发API。

掌握技能

从事大数据开发需要掌握的技能可以概括为以下几个方面:
操作系统:Linux(基本操作、软件维护、权限管理、定时任务、简单Shell等)
编程语言:Java(主要)、Scala、Python等
数据采集组件及中间件:Flume、Sqoop、Kafka、Logstash、Splunk等
大数据集群核心组件:Hadoop、Hive、Impala、HBase、Spark(Core、SQL、Streaming、MLlib)、Flink、Zookeeper等
素养要求:计算机或大数据相关专业

什么是大数据分析

说到数据分析师,这不是本文的重点,因为门槛相对较高,另一方面更偏数学、统计学方向,更多的是与数据、算法打交道,编程的产物通常不是应用,而是一个算法模型。我们还是先来看一看相关的JD:

小红书数据分析师JD

京东数据分析师JD

新浪微博数据分析师

主要工作

如果说大数据开发的岗位需求是一条一条的话。。。那么数据分析师的岗位需求大概率是一篇一篇的。。。

从上面的要求的中可以看到,每一个岗位都讲业务场景介绍的很详细,毕竟,数据分析师的主要工作之一是建立算法模型,这是垂直领域的深耕。通常我们无法直接使用那些已经存在的算法,必须要进行评估、优化、或是组合使用。除此之外,你还必须拥有这一领域的业务经验,才能够很好的胜任。

掌握技能

算法工程师需要掌握的技能可以概括为以下几个方面:
编程语言:Python、R、SQL等
建模工具:MATLAB、Mathematica等
熟悉机器学习库及数据挖掘经典算法
数学、统计学、计算机相关专业,对数据敏感

应如何学习大数据

上面介绍了和大数据相关的两个主要工作岗位,其实与大数据相关的岗位还有很多,真正归纳起来,ETL工程师也可以说擦边,因为随着数据量的不断增大,无论是银行内部还是大数据服务公司都在从传统ETL工具向大数据集群进行过渡。

涉及到了这么多的技术点,如何学习才更加高效呢?首先好入门的自然是大数据开发,对于Linux的操作系统和编程语言的部分没什么过多说明的,不要觉得有些东西没用就跳过,有些时候编程思想和解决问题的方法同样很重要,课本上有的一定要扎实。对于和大数据相关的组件,看上去十分的繁杂,很多小伙伴可能都是钻研于每个组件的用法、算子、函数、API,这当然没有错,但是同时一定不要忘记埋在其中的主线,那就是:完整的数据分析流程。在学习的过程中一定要了解各组件的特点、区别和应用的数据场景。

离线计算

在离线计算场景下,使用的都是历史数据,也就是不会再发生改变的数据。在数据源确定以后,这些数据不会再增加、也不会再更新,比较适合对实时性要求不高的场景。大多数情况下是周期性的计算某一个指标或执行一个Job,运算耗时基本上可以控制在分钟级。
数据源:数据文件、数据库中的数据等
数据采集:Sqoop、HDFS数据上传、Hive数据导入等
数据存储:HDFS
数据分析:MapReduce、Hive QL
计算结果:Hive结果表(HiveJDBC查询)、导出至关系型数据库

实时计算

实时计算所面对的数据是不断的流入的,要能够使用合适的组件处理实时流入的数据。有些时候单位时间内的数据流入会比较多,消费的比较慢。有些时候单位时间内的数据流入会比较少,消费的会比较快。所以在采集数据时一方面要保证数据不丢失,同时还需要有中间件来管理好数据。在进行实时计算时可以使用微批次的方式也可以使用其他方式,同时要处理好计算结果合并的问题,实时展示最新的结果。
数据源:日志文件增量监听等
数据采集:Flume
中间件:Kafka
数据分析:Spark-Streaming,Flink等
计算结果:HBase

以上只是简单的列举了一些实现不同场景数据流程的组件整合方案,诣在告诉大家一定要善于发现和总结不同组件的特点,把合适的组件放在合适的位置,这也是面试官经常喜欢问的场景题目。

其实每个组件的使用方法和调用API并没有很复杂,重点还是在于流程化、一体化、把组件之间连接起来,不断的渗透和强化数据分析和处理的思路,能够把一个需求直接翻译成数据分析方案,这才是学习的重点。

作者介绍:资深开发者,全栈开发工程师,大数据高级开发工程师。具有多年开发及培训经验,实施过多次面向学生、企业、高校骨干教师等各种形式的培训。

个人主页:
https://sandtower.blog.csdn.net/

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
秒级响应 + 99.9%准确率:法律行业文本比对技术解析
本工具基于先进AI技术,采用自然语言处理和语义匹配算法,支持PDF、Word等格式,实现法律文本的智能化比对。具备高精度语义匹配、多格式兼容、高性能架构及智能化标注与可视化等特点,有效解决文本复杂性和法规更新难题,提升法律行业工作效率。
|
6天前
|
前端开发 UED
React 文本区域组件 Textarea:深入解析与优化
本文介绍了 React 中 Textarea 组件的基础用法、常见问题及优化方法,包括状态绑定、初始值设置、样式自定义、性能优化和跨浏览器兼容性处理,并提供了代码案例。
25 8
|
6天前
|
机器学习/深度学习 自然语言处理 监控
智能客服系统集成技术解析和价值点梳理
在 2024 年的智能客服系统领域,合力亿捷等服务商凭借其卓越的技术实力引领潮流,它们均积极应用最新的大模型技术,推动智能客服的进步。
38 7
|
7天前
|
SQL 运维 大数据
轻量级的大数据处理技术
现代大数据应用架构中,数据中心作为核心,连接数据源与应用,承担着数据处理与服务的重要角色。然而,随着数据量的激增,数据中心面临运维复杂、体系封闭及应用间耦合性高等挑战。为缓解这些问题,一种轻量级的解决方案——esProc SPL应运而生。esProc SPL通过集成性、开放性、高性能、数据路由和敏捷性等特性,有效解决了现有架构的不足,实现了灵活高效的数据处理,特别适用于应用端的前置计算,降低了整体成本和复杂度。
|
11天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
31 3
|
14天前
|
网络协议 网络性能优化 数据处理
深入解析:TCP与UDP的核心技术差异
在网络通信的世界里,TCP(传输控制协议)和UDP(用户数据报协议)是两种核心的传输层协议,它们在确保数据传输的可靠性、效率和实时性方面扮演着不同的角色。本文将深入探讨这两种协议的技术差异,并探讨它们在不同应用场景下的适用性。
48 4
|
15天前
|
Kubernetes Java 微服务
微服务上下线动态感知实现的技术解析
随着微服务架构的广泛应用,服务的动态管理和监控变得尤为重要。在微服务架构中,服务的上下线是一个常见的操作,如何实时感知这些变化,确保系统的稳定性和可靠性,成为了一个关键技术挑战。本文将深入探讨微服务上下线动态感知的实现方式,从技术基础、场景案例、解决思路和底层原理等多个维度进行阐述,并分别使用Java和Python进行演示介绍。
35 4
|
14天前
|
安全 持续交付 Docker
深入理解并实践容器化技术——Docker 深度解析
深入理解并实践容器化技术——Docker 深度解析
31 2
|
14天前
|
存储 供应链 算法
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景
39 0
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习与自然语言处理的前沿技术:Transformer模型的深度解析
探索深度学习与自然语言处理的前沿技术:Transformer模型的深度解析
44 0

推荐镜像

更多