大数据框架原来可以这么学,领教了~(内含福利)

2024-06-09 21:58

本文主要是介绍大数据框架原来可以这么学,领教了~(内含福利),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

导语

如果你会做饭,那么就自带的50%的学习buffer————开玩笑的,其实大数据流程处理跟做饭一个道理,搞懂弄了流程,再来看看我们怎样学习它,这样学习大数据就事半功倍啦。

如果你已经对大数据的各个框架有所了解,想要福利资料,可以直接跳到3.2 或 3.3 章节获取领取福利。

目录

  1. 美食与大数据

  2. 大数据处理流程

    1.1 数据收集

    1.2 数据存储

    1.3 数据分析

    1.4 数据应用

    1.5 其他框架

  3. 学习路线

    3.1 框架学习

    3.2 资料领取

    3.3 福利

1 美食与大数据

想象一下,大数据的处理流程好比你做一道美食,需要经历以下几个步骤:

1、食材采购————菜市场去批量采购不同类型的食材:猪肉、蔬菜、干货等

2、食材收藏————采购后将这些菜按照类型放到不同区域:冰箱冷藏区、冰箱冷冻区、干货区

3、食材预处理————不同食材需要进行处理:蔬菜清洗、猪肉切丝切片、调料剁碎

4、食材加工————爆炒猪肝、清蒸鲈鱼、红烧五花肉…

美食是对食材的处理,那么大数据这些框架就是对数据的处理:

采购食材——数据收集、

分批收藏——数据存储、

食材预处理——数据预处理、

加工食材——数据应用。

2 大数据处理流程

在这里插入图片描述

2.1、数据收集(食材采购)

就像菜市场上有不同的食材,我们会到不同的区域进行采购:

在这里插入图片描述

那么数据的收集也一样,一般采集服务器上的日志,你可以用最笨的办法就是将服务器上的全部的日志全部导出,但一般大型项目中都是分布式部署的,并且不能因为你导出行为而干扰了服务器的正常运行,所以基于这样的需求,

诞生了一些日志收集工具:「Flume 、Logstash、Kibana」,通过简单配置对复杂数据进行收集处理。

2.2、数据存储(食材收藏)

就像我们会存储不同的食材一样,会将根据食材属性、大小把它放在冰箱冷藏、冷冻区 或者 干货区:

在这里插入图片描述

数据存储同样的道理,我们知道数据分为结构化数据、半结构化数据、非结构化数据:

2.2.1、结构化数据它长这样:

在这里插入图片描述

解释:结构化数据就关系型数据库表示和存储的,像我们存储到mysql、Oracle表里面的数据就是结构化数据,

2.2.2、半结构化数据它长这样:

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201022233654178.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE0OTM0NjI=,size_16,color_FFFFFF,t_70#pic_center)

解释:半结构化数据就是结构化数据的一种形式,像我们平时用到的XML、JSON属于常见半结构化数据,

2.2.3、非结构化数据就是各种文档、图片、视频/音频,不过它以二进制存储的,它长这样:

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201022233707862.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE0OTM0NjI=,size_16,color_FFFFFF,t_70#pic_center)

解释:非结构化数据就是各种文档、图片、视频/音频。

结构化数据通常通过关系型数据库存储,例:「MySQL、Oracle」,他们的优点在于快速存储,并且达到快速访问的目的。

为了处理半结构化(日志数据)、非结构化(音频、图片、视频数据)数据而诞生了:「GFS、HDFS」文件处理系统,它的优点在于处理:能处理海量的结构化、半结构、非结构化的数据,在由于它不能随机对数据进行访问,照成访问速度慢的问题,为了「继承关系型数据库随机访问快优点 + 以及保留海量处理非结构化数据,最终诞生了Hbase 、MongoDB」

2.3、数据处理(食材预处理)

食材收藏后,我们分批对食材进行预处理:土豆切块、肉切片/切丝、姜蒜切片:

在这里插入图片描述

大数据也会对数据进行预处理,预先对数据进行etl(清洗、转换、加载),针对应用场景不同,分为「批处理与流处理」

2.3.1、批处理:对离线数据进行处理,例:我们输出用户1年前的购买商品数据的报表,此时「对数据的时效性要求不高」所以对应的就是批处理,处理框架有 「Hadoop MapReduce、Spark、Flink」

2.3.2、流处理:对实时数据进行处理,例:查询当前时刻商品库存数据,此时「对数据的时效性非常高」所以对应的就是流处理,即在接收数据的同时就对其进行处理,处理框架有 「Storm、Spark Streaming、Flink Streaming」 等。

在这里插入图片描述

如果懂一些编程的同学可以通过以上的框架对数据进行预处理,

那么假如不懂编程的同学就必须学习以上的框架吗?————答案是否定的,为了能让熟悉sql的人员同样能分析数据,查询框架应运而生———— 「Hive 、Spark SQL 、Flink SQL、 Pig、Phoenix」 等框架。

在这里插入图片描述

这些查询框架支持使用标准的sql语法 或 类sql语法对数据进行查询,经过sql解析后转换成对应的作业, Hive 本质上就是将 SQL 转换为 MapReduce 作业, Spark SQL 将 SQL 转换为一系列的 RDDs 和转换关系(transformations)

2.4、数据应用(食材加工)

经过处理的食材,我们开加工,红烧、清蒸、油炸,然后放上我们的喜好的盐味,最终出锅,上菜:

在这里插入图片描述

对于大数据的最后加工,我们可以将预处理的数据最终变成我们想要的产品,将数据用于优化你的推荐算法,

例:短视频个性化推荐、电商商品推荐、头条新闻推荐

这里面就会用到一些算法来实现,电商领域常用的2种算法如下:

2.4.1、「内容的推荐算法」

原理:用户喜欢和自己关注过的Item在内容上类似的Item

举例:比如你看了哈利波特1,基于内容的推荐算法发现哈利波特2,与你以前观看的在内容上面(共有很多关键词)有很大关联性,就把后者推荐给你。

在这里插入图片描述

2.4.2、「协同过滤推荐算法」

原理:用户喜欢那些具有相似兴趣的用户喜欢过的商品,

举例:你的朋友喜欢电影哈利波特2,那么就会推荐给你,这是最简单的基于用户的协同过滤算法

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201022234136682.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE0OTM0NjI=,size_16,color_FFFFFF,t_70#pic_center)
2.5. 其他框架

前面的是对大数据处理流程所用到的技术框架,实际上大数据集群化(安装 & 监控)、数据迁移、高并发场景的消峰会用到以下框架:

2.5.1 大数据平台集群化:

1 安装

为了更方便的进行集群的部署、监控和管理,衍生了 「Ambari、Cloudera Manager」 等集群管理工具

2 资源分配

保证集群高可用,需要用到 「ZooKeeper」 ,ZooKeeper 是最常用的分布式协调服务,它能够解决大多数集群问题,包括首领选举、失败恢复、元数据存储及其一致性保证。同时针对集群资源管理的需求,又衍生了 「Hadoop YARN」 ;

3 任务调度

多个复杂的并且彼此之间存在依赖关系的作业:基于这种需求,产生了 「Azkaban 和 Oozie」 等工作流调度框架

2.5.2 数据迁移:

有时需要将数据从关系型数据库迁入到 HDFS 中,或者从 HDFS 迁出到关系型数据库中,需要使用到 「Sqoop」 框架

2.5.3 并发性问题:

当并发非常高的情况下,数据无法直接写入到HDFS中时,需要用到 「Kafka」 框架,将数据以队列的方式存储,然后慢慢消费它。

3 学习线路

当我们摸清了每个框架解决什么问题,它位于大数据处理的那个部分,这时候我们再来去学习这个框架,就会事半功倍。

3.1. 框架分类

日志收集框架:Flume、Logstash、Filebeat

分布式文件存储系统:Hadoop HDFS

数据库系统:Mongodb、HBase

分布式计算框架:

批处理框架:Hadoop MapReduce

流处理框架:Storm

混合处理框架:Spark、Flink

查询分析框架:Hive 、Spark SQL 、Flink SQL、 Pig、Phoenix

集群资源管理器:Hadoop YARN

分布式协调服务:Zookeeper

数据迁移工具:Sqoop

任务调度框架:Azkaban、Oozie

集群部署和监控:Ambari、Cloudera Manager

他们的层级结构如下:

在这里插入图片描述

最底层通过 flume + sqoop 结构化 与 非结构化数据进行收集,然后存储到hdfs上,在通过zookeeper(yarn)进行集群化资源管理,决定不同的任务分配资源的大小,上层应用可以通过 hadoop、Storm、spark、Flink等框架对数据进行计算与访问,也可以通过类sql语言:hive、pig、spark sql等语言对数据进行计算与访问,不同任务之间在通过Oozie进行调度。

3.2 学习资源

大数据最权威和最全面的学习资料就是官方文档:

《hadoop 权威指南 (第四版).pdf》
《Kafka 权威指南.pdf》
《Zookeeper 分布式一致性原理与实践.pdf》
《Spark 内核架构设计与实现原理.pdf》 
《HBase 权威指南.pdf》 
《Hive 编程指南.pdf》 
《Flume 构建高可用、可扩展的海量日志采集系统.pdf》
《数据挖掘导论_完整版.pdf》

对应关键词:

- Hadoop
- Kafka
- Zookeeper
- Spark
- HBase
- Hive
- Flume
- 挖掘

「微信 后台回复关键字获取:Hadoop、Kafka、Zookeeper、Spark、HBase、Hive、Flume、挖掘 进行获取」

3.3 福利

如果你由于工作太忙想快速入门,那么下面是我之前对部分技术的讲解链接,希望可以帮助你快速理解或掌握它:

hive函数:

一篇搞定hive函数,建议收藏

pandas函数:

一篇搞定Pandas函数,建议收藏!

hadoop-MapReduce原理:

再也不用怕面试官问你 MapRedue了

hadoop-HDFS原理:

HDFS!一家分布式图书馆...

絮叨

在刚开始学习大数据的第一年里,总觉得大数据框架面前我还是一个小学生,通常是因为工作需才去学习它,对大数据没有系统的一些认识,后面工作中自己会如果接触到大数据中一个知识点,自己会有意识的先弄清楚它能「解决什么问题」「为什么它能解决」这些问题,以及跟它「相关的大数据知识点」是哪些,这样学习才能事半功倍。欢迎朋友们关注我~

在这里插入图片描述

这篇关于大数据框架原来可以这么学,领教了~(内含福利)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1046404

相关文章

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

SpringBoot整合jasypt实现重要数据加密

《SpringBoot整合jasypt实现重要数据加密》Jasypt是一个专注于简化Java加密操作的开源工具,:本文主要介绍详细介绍了如何使用jasypt实现重要数据加密,感兴趣的小伙伴可... 目录jasypt简介 jasypt的优点SpringBoot使用jasypt创建mapper接口配置文件加密

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解