程序员必备的「大数据入门」知识

大数据从业者必备的基础知识 大数据的发展历程总体上可以划分为三个重要阶段,萌芽期、成熟期和大规模应用期,20世纪90年至21世纪初,为萌芽期,随着,一批商业智能工具和知识管理技术的开始和应用,度过了数据萌芽。 21世纪前十年则为成熟期,主要标志为,大数据解决方案逐渐走向成熟,形成了并行计算与分布式系统两大核心技,谷歌的GFS和MapReduce等大数据技术受到追捧,Hadoop平台开始大行期道,2010年以后,为大规模... 阅读详情

前言

只有光头才能变强。

文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y

这篇文章主要是入门大数据,不涉及到高深的知识点和理论,我相信每个人都看得懂。如果文章有错误的地方,不妨在评论区友善指出~

一、什么是大数据?

1.1 前置知识

我有的时候给外行人讲解什么是数据库,就常常用Excel来举例子(因为大多数人认识什么是Excel)。在知乎有一个类似的题目《有excel了要数据库干啥?》,大家可以去看看:

其实很大一部分原因就是:Excel能处理的数据量远远没有数据库得多。由于我们互联网产生的数据是非常非常多的,所以我们一般选择数据库来存储数据。

Excel只有104w行,多了加载不进去的 ---- @知乎 EamonLiao

众所周知,我们能存多少数据,是取决于我们硬盘的大小的。比如,我的磁盘的大小就256GB(实际能存储的大小是没有256GB的,但这里我就不展开了),这意味着我这电脑只能存储比256GB要小的数据。

硬盘的大小

为了能够更好地管理计算机的数据(访问和查找变得更加简单),我们就有了文件系统。

文件系统

有了文件系统,已经可以存储数据了(很方便我们去获取),那为什么还会有数据库呢?

文件系统存在以下缺点: 数据共享性差,冗余度大; 数据独立性差

数据库系统实现整体结构化,这是数据库系统与文件系统的本质区别。 -----《数据库系统概论》


数据库其实就是为了针对特定类型数据处理而设计的系统,而文件系统则可看作通用型的数据存储系统 @知乎 吴穗荣

再回到大数据上,大数据就看名字我们就知道:数据量很大。大到什么程度呢?一块普通的硬盘不能将一个文件存储下来。

那我还想将这个文件存下来,怎么办呢?方案其实很简单(说白了一个是垂直伸缩,一个是水平伸缩):

  • 多买几块硬盘,组成一个更大的“硬盘”,希望能容纳更多的数据。

    • RAID(独立磁盘冗余阵列)技术是将多块普通磁盘组成一个阵列,共同对外提供服务。
    • 比如,我现在觉得我的电脑16GB不够用了,而我的主板有两个内存槽,我多买一条16GB的内存条插入。那我就可以说,我的电脑是32GB内存的。
  • 把这个文件切开几份,存到不同的硬盘中

    • 比如我有1个TB的文件,我把它切分成5份,每份200G,存到不同的服务器中。

如果是普通的用户,肯定选择的是多买一块硬盘,升级硬件啊。但是互联网公司就不这样干,他们就选择将一个文件切分成几份,放到不同的服务器中。为什么?

  1. 顶级的电脑硬件成本很大。(单台计算机性能到一定的量上,再升级的成本就非常高)
  2. 单单一台顶级的电脑可能也无法处理掉这么大量的数据

垂直伸缩和水平伸缩

综上所述,目前互联网企业中都是选择水平伸缩在一个系统中添加计算机来满足不断增长的用户量和支撑数据的平稳运行。

1.2 解决存储问题

随着数据量越来越大,在一台机器上已经无法存储所有的数据了,那我们会将这些数据分配到不同的机器来进行存储,但是这就带来一个问题:不方便管理和维护

所以,我们就希望有一个系统可以将这些分布在不同操作服务器上的数据进行统一管理,这就有了分布式文件系统

  • HDFS是分布式文件系统的其中一种(目前用得最广泛的一种)

在使用HDFS的时候是非常简单的:虽然HDFS是将文件存储到不同的机器上,但是我去使用的时候是把这些文件当做是存储在一台机器的方式去使用(背后却是多台机器在执行):

  • 好比:我调用了一个RPC接口,我给他参数,他返回一个response给我。RPC接口做了什么事其实我都不知道的(可能这个RPC接口又调了其他的RPC接口)-----屏蔽掉实现细节,对用户友好

HDFS使用

1.3 解决计算问题

上面我们使用HDFS作为分布式文件系统,已经可以把数据存到不同的机器上(或者在不同的机器上读取到数据)。可以通过简单命令行的方式对文件的简单的存取。

现在呢,由于数据量是非常大的,分散到不同的机器上。我们想要对数据进行处理,我们肯定会有一段写好的程序。处理的方式有两种:

  • 将数据传递给程序(机器A/B/C的数据传给机器D程序来执行)
  • 程序到数据所在的地方执行(将程序分别到机器A/B/C上执行)

选哪个?我们一般会采用”程序到数据所在的地方执行“,因为在大数据里边我们的数据量很大,如果要把机器A/B/C的数据输入到机器D上,这样不划算。

  • 数据量很大,通过网络传输大数据到某一台机器上做操作,不合适。
  • 机器D只有一台机器,处理的效率低下。

所以我们会将程序分别放到机器A/B/C上处理,本来程序就非常小,放到别的机器上是轻轻松松的。还可以使用机器A/B/C的资源做运算,这就很合适了。

「将数据传递给程序」这种就是所谓的“移动存储到计算”,而「程序到数据所在的地方执行」这种就是所谓的“移动计算到存储的观念”。

在大数据的领域里, 移动计算比移动数据更划算。MapReduce就是这样干的:

  • 每台机器执行任务的时候去检查自己有没有相应的程序,如果没有则通过网络下载程序包,然后通过反射来加载程序

二、大数据没有想象中神秘

在刚听到「大数据」这个词的时候,可能有的人会想问:所谓大数据,那数据是从哪里来的呢?

简单来说可以归类为三类:

  • 日志
  • 数据库
  • 爬虫

1、 爬虫应该很好理解,就是通过网络爬虫获取外部数据,将这些数据自己存储起来。很多的比价网站就是爬取各种电商网站的数据,然后比较各个网站的数据后得到结果。本身它们网站本身是没有这个数据的,这个数据是从别人那爬过来的。

2、数据库本来就已经存储了我们的数据,而我们要做的只是把数据库的数据导入我们的大数据平台那儿,让数据能够得到更好的分析。

3、日志这块其实我更多想说的是打点(埋点)这块。有的人会把这埋点和日志的概念分开,只是我把它给合在一起叫「日志」。日志有用户行为日志(埋点),也有系统的运行产生的日志。用户行为日志这块说白了就是:从你进去某个APP的一刻开启。几乎你所有的操作都会被记录下来(点了某个tag、在某个tag停顿了多少秒)。猜你喜欢这类的系统就是根据你以往行为来对进行推荐。

好了,现在我们有不同的地方收集到数据,我们要最终要做的就是把这个数据汇总到一起来进行存储和分析。

于是我们就需要将日志、数据库、爬虫这些不同数据源的数据导入到我们的集群中(这个集群就是上面提到的,分布式文件系统(HDFS),分布式计算系统)。

由于数据源的不同,所以会有多种的工具对数据进行导入。比如将日志的数据收集我们会有Flume,从数据库同步我们会有Sqoop。这也就是所谓的ETL(萃取「extract」、转置「transform」、加载「load」)

ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。

(注:不要被上面的Sqoop、Flume 这样的名词给吓着了,其实就是现有的成熟的框架技术)

我们把所有的数据收集起来,把这个存储数据的地方叫做数据仓库。基于数据仓库我们统计能各种的指标,基于这些指标可以指导我们是否要做一个需求或决策。

比如说:现在我们要对APP的首页改版了,但不知道用户是否能接受这次的改版。于是我们就可以先对一少部分的用户做实验(这一部分的用户看到的是改版后的首页),我们根据这一部分用户的行为来判断这一次的改版是否有比较好的效果。

  • 用户的行为我们都有收集起来。只要将实验用户关联到对应的指标,与现有的指标做一次对比,我们大概就知道这次改版是否真的合理。

这种拿一部分流量做实验,我们也称这种做法为「ABTest」,如果对ABTest感兴趣的同学可以在我的GitHub下搜索关键字「ABTest」来阅读具体的文章哦~

最后

这篇文章简单的说了一下所谓的「大数据」中的数据是从哪里来的,由于数据量很大,所以我们要解决数据的存储和计算的问题。

基于存储和计算问题我们业内就提供了很多现成的技术实现了,下面图中的技术每一种类型我后续都会讲解到,可以关注我,不迷路哦。

参考资料:《从0开始学大数据》–李智慧

一文看懂分布式存储架构 目录一、集中存储结构二、分布式存储1 、分布式存储的兴起2 、分布式存储的重要性3 、分布式存储的种类和比较三、分布式理论浅析1 、一致性和可用性2 、数据分布3 、复制4 、分布式协议5、跨机房部署四、分布式文件系统1、 Google 文件系统( GFS )2、 Taobao 文件系统( TFS )3、 Fackbook Haystack 文件系统4、 CDN 内容分发网络五、分布式键值系统1、 Amazon Dynamo2、 Taobao Tiar3、 ETCD4 、产品选型比较( Etcd , Zoo 阅读详情

相关推荐

qt使用qxlsx实现xlsx、xls表格文件快速写入和读取

新年第二篇文章,收尾一个去年计划中发表文章和实现功能。

kbq的博客 1万+

大数据超全面入门干货知识,看这一篇就够了!

它是一个开源的分布式计算框架,让数据分散储存在多台计算机上,然后使用 MapReduce 的方法,将数据分成小块一块一块地处理,最后把结果汇总起来。有了 Hive,我们不需要学习新的编程语言,只需使用熟悉的 SQL,就能轻松地查询和分析海量的数据。大数据是当今社会的瑰宝,它让我们能够洞悉未知世界,做出更明智的决策。就像一个默契的团队一样,大数据组件们一起工作,使得数据处理变得更加高效、可靠,帮助我们揭开数据的神秘面纱。在大数据的世界里,有许多神奇的组,它们像齐心协力的小伙伴,一起为我们揭开数据的奥秘。

xiaobaiyanghaowa的博客 8521

NotebookLM平替实测:用Open Notebook+Ollama零成本搭建私有AI知识库

本文提供了一份详细的实战指南,教你如何利用Open Notebook与Ollama,在本地零成本搭建一个功能强大且完全私有的AI知识库。通过Docker容器化部署,实现数据绝对安全、模型自由选择与离线运行,是NotebookLM等云端工具的绝佳平替方案,尤其适合注重数据隐私的教育工作者、研究者及小团队。

weixin_29052717的博客 514

大数据学习(Hadoop、Hive)

黑马程序员的大数据学习笔记~

2302_80256936的博客 1533

【STM32CubeIDE入门】(一)工程创建&工程配置

​写在前面:如果是刚接触stm32cubeide的同学推荐与这一篇文章共同阅读,能够更加快速认识上手stm32cubeide。 1、打开stm32cubeide,选择好工作目录进入主界面后,点击创建工程。

涛涛子的博客 1万+

手把手教你用Qt5打造二次元游戏启动器(附鸣潮同款UI源码)

本文详细介绍了如何使用Qt5框架从零开始构建一个功能完整、UI风格贴近《鸣潮》的二次元游戏启动器。教程涵盖无边框窗口、动态背景、自定义控件绘制、多线程资源加载以及下载管理等核心模块的实现,并提供了可运行的源码参考,帮助C++开发者和Qt爱好者深入掌握现代桌面应用开发技术。

weixin_29291863的博客 265

大数据基础知识

大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。灵活的可扩展性灵活的数据模型与云计算紧密融合现在已经有很多公司使用了NoSQL数据库:GoogleFacebookMozillaAdobeFoursquareLinkedInDigg百度、腾讯、阿里、新浪、华为……Spark的特点运行速度快:使用DAG执行引擎以支持循环数据流与内存计算容易使用:支持使用Scala、Java、Python和R语言进行编程,可以通过Spark Shell进行交互式编程。

星球奋斗者 1万+

SATA硬件电路设计实战:从接口规范到高速布线技巧

本文深入探讨了SATA硬件电路设计的核心要点与实战技巧。从接口物理电气规范、AC耦合电容与阻抗控制等基础,到FPGA/SoC高速收发器选型配置,再到应对6Gbps高速信号的PCB布局布线艺术,系统性地解析了SATA电路设计中的关键挑战与解决方案,助力工程师规避常见陷阱,实现稳定可靠的存储接口设计。

tech5的博客 531

大数据程序员的工作职责是什么?

大数据开发要负责公司大数据平台产品的技术工作,如需求分析、架构设计、研发、以及性能分析工作;提升Hadoop集群的高可用性、高性能、高扩展特性;海量数据的导入优化工作;理和完善各类文档等工作。大数据工程师需要具有良好的沟通能力、优秀的分析问题和问题解决能力;具备强烈的进取心和团队合作精神;具备数据库系统的基本理论知识。数据工程是一项战略性工作,其职责包括构建高性能算法、预测模型和概念证明,以及开发数据建模和挖掘所需的数据集流程。成为大数据工程师可以拥有一个与跨学科团队合作的机会,与数据架构师、建模师和 IT

weixin_51689029的博客 2207

【数据集3】高分辨率统计降尺度日值数据集NEX-GDDP的介绍与下载方法

对NEX-GDDP数据集进行介绍和下载说明

WW、forever的博客 2393

使用 Python 和蒙特卡罗计算未来股价走势以及历史波动率和隐含波动率

蒙特卡罗模拟等工具使投资者能够洞察一系列潜在的未来。这远离了单纯的猜测,迈向了明智的、数据驱动的决策。

探索人工智能领域 707

2017年度程序员数据大揭秘:大数据就业前景广阔!

在互联网行业,程序员一直是很受关注的人群。特别对准备步入社会的大学生们来说,从事哪方面的职业是一个很重要的问题,而程序员就是一个非常热门的选择。 根据2017年中国程序员调查的数据,今天,数据妹就给大家好好介绍一下程序员的编程语言、薪酬范围等信息,让大家对程序员有个准确的认知。 通过对北京、广东、浙江、上海等全国28个省的优秀开发者的调查信息,我们可以对程序

程序员之家 5511

嵌入式工程师必学(9):USB 3.0协议理解

USB3.0和USB2.0相比,在线缆上从4根线(Vbus、GND、D+、D-)变为了8根线(Vbus、GND、D+、D-、SSRX+\SSRX-\SSTX+\SSTX-),可见增加的4根线都是和超速相关的,新增加的超速有两类,分别为:超速Gen1(5.0Gbps),超速+Gen2(10Gbps),还兼容USB2.0的3类速率:low-speed(1.5Mbps),full-speed(12Mbps),andhigh-speed(480Mbps)。从设计可以看出,USB3....

码农17年的博客 1万+

大数据学习必备 | 推荐几个牛X 的 github 项目,助你事半功倍

花了5个小时,为你整理出了这几个牛X 的 github大数据项目

大数据梦想家 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

成为一名厉害的程序员,需要哪些必备知识

成为一名厉害的程序员必备知识,看看你都掌握了吗?

m0_69234258的博客 8554

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

问我大数据怎么入门,我总结了亲身体验的学习路线推荐给她【推荐收藏】

前两天有学妹私信我说,她已经上完大一,大数据专业的,只学过大数据导论,问我大数据该如何入门?我不禁感慨普通高校擅长培养算法人才,但在工程人才的培养上存在很多的问题。

Maynor的博客 5687

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IT 程序员必备的核心基础知识是什么?

IT程序员必备的核心基础知识涵盖了广泛的领域,包括计算机科学、编程语言、数据结构与算法、操作系统、计算机网络、数据库等。这些知识是程序员在进行软件开发和系统设计时所必须具备的基础,下面对每个领域进行详细的讲解。

Itmastergo的博客 2656

程序员转型指南:从“造Bug”到“灭Bug”的逆袭之路

这种转型不仅意味着技能的提升和转变,更是思维方式的重大突破。它要求程序员从单纯的代码生产者,转变为软件质量的守护者。通过深入学习和掌握软件测试、调试、性能优化等相关技术和工具,程序员能够在程序的江湖里大显身手,成为真正的 “纠错大侠”。在这个充满挑战与机遇的转型之路上,程序员们将不断探索和创新,为自己的职业生涯书写更加精彩的篇章。

宝码香车的博客 2349

程序员必备的网站推荐

程序员必备的网站推荐 注:我收集的网站很有限,可能有很多网站没有列出,希望大家可以通过评论告知我,我会尽快添加。 一、开源代码托管平台 1. GitHub(https://github.com) gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。 gitHub于2008年4月10日正式上线,除了git代码仓库托管...

CHK的博客 6万+

java转大数据方向学习路线

申明: 本文旨在为普通程序员(Java程序员最佳)提供一个入门级别的大数据技术学习路径,不适用于大数据工程师的进阶学习,也不适用于零编程基础的同学。 目录 前言 一、背景介绍 二、大数据介绍 正文 一、大数据相关工作介绍 二、大数据工程师的技能要求 必须掌握的技能11条 高阶技能6条 三、大数据学习规划 第一阶段(基础阶段) 第二阶段(攻坚阶段) 第三阶段(辅助工具工学...

一念永恒 2万+

为什么很多Java程序员都转行做大数据了?

如今大数据发展的越来越成熟。各大企业纷纷成立大数据部门。尤其BAT等一线互联网公司每天处理的数据量都是TB级别。大数据部门已成为这些企业的核心部门,数据已成为企业最核心的资产。 但是大数据人才缺口巨大,据统计目前全国的大数据人才仅46万,未来3-5年内大数据人才的缺口将高达150万。 因此大数据工程师薪资也比其他职位高出不少。以北京为例。1-3年的大数据工程师平均年薪30-50万,3-5年经验...

jiawoxuexiqq30294961的博客 3849

程序员必备的 IT 技术知识图谱

【 精彩阅读 】程序员如何规划自己的职业生涯?人人都是项目经理,但不是每个人都能管好项目...笔者多年来积累和收集的知识技能图谱,小编极力推荐分享给身边的技术人儿,希望这...

JackTian 1442

【程序员必备的面试技巧】大数据工程师面试必备技能

大数据工程师可以从事对大量数据的采集、清洗、分析、治理、挖掘,并对这些数据加以利用、管理、维护和服务的相关技术工作。本文讲述大数据工程师的面试技巧和必备技能。

Morse_Chen的博客 2369

程序员必备预科知识

程序员必备预科知识 计算机硬件和冯·诺依曼结构 计算机硬件是指一些物理装置按照系统结构的要求构成一个有机的整体为计算机软件运行提供物质基础。 计算机硬件主要包括CPU,内存,主板,显示器,硬盘,主机箱,鼠标,显卡等等。 被称为计算机之父的冯·诺依曼提出了冯·诺伊曼结构 软件 计算机软件按照其功能划分为系统软件与应用软件。 系统软件:DOS(Disk Operating System)、Window、Linux、Mac、Android、iOS、Unix; 应用软件:qq,微信,WPS等等。 程序猿常用快捷键

qq_45858191的博客 443

大数据如何入门学习

我们都知道现在大数据很火,很多小伙伴也在跟容大老师咨询学习大数据的方法,比如说:大数据入门应该如何学习? 对于大数据的入门学习,基础不一样,起点就会不一样,今天先来说说,对于零基础的同学想要学习大数据的方式方法吧!很多人可能感到不可思议,零基础怎么可能学习大数据,没有编程基础怎么能入门呢?其实这个观点是很正确的,对于大数据的开发而言,是需要一定的编程基础的,所以我们的大数据入门级课程就落在了编程...

sparklk的博客 1454

程序员怎么转到大数据方向

本文旨在为普通程序员(Java程序员最佳)提供一个入门级别的大数据技术学习路径,不适用于大数据工程师的进阶学习,也不适用于零编程基础的同学。前言:一、背景介绍二、大数据介绍正文:一、大数据相关的工作介绍二、大数据工程师的技能要求三、大数据学习规划四、持续学习很多初学者,对大数据的概念都是模糊不清的,大数据是什么,能做什么,学的时候,该按照什么线路去学习,学完往哪方面发展,想深...

weixin_34101229的博客 338
上一篇: 看完这篇JVM,阿里面试官都不怕!看完就能拿offer
下一篇: 面试官:什么是责任链模式?
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值