Leo赠书活动-21期 《一篇讲明白 Hadoop 生态的三大部件》

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉
🍎个人主页:Leo的博客
💞当前专栏: 赠书活动专栏
✨特色专栏: MySQL学习
🥭本文内容:Leo赠书活动-21期 《一篇讲明白 Hadoop 生态的三大部件》
📚个人知识库: Leo知识库,欢迎大家访问

目录

    • 1.前言
    • 2.HDFS
    • 3.Yarn
    • 4.Hive
    • 5.HBase
    • 6.Spark及Spark Streaming
    • 7.总结
    • 8.🥇赠书活动规则

1.前言

进入大数据阶段就意味着进入NoSQL阶段,更多的是面向OLAP场景,即数据仓库、BI应用等。

大数据技术的发展并不是偶然的,它的背后是对于成本的考量。集中式数据库或者基于MPP架构的分布数据库往往采用的都是性能稳定但价格较为昂贵的小型机、一体机或者PC服务器等,扩展性相对较差;而大数据计算框架可以基于价格低廉的普通的硬件服务器构建,并且理论上支持无限扩展以支撑应用服务。

在大数据领域中最有名的就是 Hadoop 生态,总体来看,它主要由三部分构成:底层文件存储系统 HDFS(Hadoop Distributed File System,Hadoop 分布式文件系统)、资源调度计算框架 Yarn(Yet Another Resource Negotiator,又一个资源协调者)以及基于 HDFS 与 Yarn的上层应用组件,例如 H****Base、Hive 。一个典型的基于 Hadoop 的应用如下图所示。

图片

2.HDFS

HDFS 被设计成适合运行在通用硬件(Commodity Hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点,例如典型的 Master-Slave 架构(这里不准备展开介绍),也有不同点,**HDFS 是一个具有高度容错性的系统,适合部署在廉价的机器上。**关于HDFS 这里主要想说两点,默认副本数的设置以及机架感知(Rack Awareness)。

HDFS 默认副本数是 3,这是因为 Hadoop 有着高度的容错性,从数据冗余以及分布的角度来看,需要在同一机房不同机柜以及跨数据中心进行数据存储以保证数据最大可用。因此,为了达到上述目的,数据块需要至少存放在同一机房的不同机架(2 份)以及跨数据中心的某一机架(1 份)中,共 3 份数据。

机架感知的目的是在计算中尽量让不同节点之间的通信能够发生在同一个机架之 内,而不是跨机架,进而减少分布式计算中数据在不同的网络之间的传输,减少网络带 宽资源的消耗。例如当集群发生数据读取的时候,客户端按照由近到远的优先次序决定 哪个数据节点向客户端发送数据,因为在分布式框架中,网络 I/O 已经成为主要的性能瓶颈。

只有深刻理解了这两点,才能理解为什么 Hadoop 有着高度的容错性。高度容错性是Hadoop 可以在通用硬件上运行的基础。

3.Yarn

Yarn 是继 Common、HDFS、MapReduce 之 后 Hadoop 的又一个子项目, 它是在MapReduceV2 中提出的。

在 Hadoop1.0 中,JobTracker 由资源管理器(由 TaskScheduler 模块实现)和作业控制 (由 JobTracker 中多个模块共同实现)两部分组成。

在 Hadoop1.0 中,JobTracker 没有将资源管理相关功能与应用程序相关功能拆分开,逐 渐成为集群的瓶颈,进而导致集群出现可扩展性变差、资源利用率下降以及多框架支持不 足等多方面的问题。

在 MapReduceV2 中,Yarn 负责管理 MapReduce 中的资源(内存、CPU 等)并且将其 打包成 Container。这样可以使 MapReduce 专注于它擅长的数据处理任务,而不需要考虑资源调度。这种松耦合的架构方式实现了 Hadoop 整体框架的灵活性。

4.Hive

Hive 是基于Hadoop 的数据仓库基础构架,它利用简单的 SQL 语句(简称 HQL)来查询、分析存储在 HDFS 中的数据,并把 SQL 语句转换成 MapReduce 程序来进行数据的处理。Hive与传统的关系型数据库的主要区别体现在以下几点。

1)存储的位置, Hive 的数据存储在 HDFS 或者 HBase 中,而后者的数据一般存储在裸设备或者本地的文件系统中,由于 Hive 是基于 HDFS 构建的,那么依赖 HDFS 的容错特性,Hive 中的数据表天然具有冗余的特点。

2)数据库更新, Hive 是不支持更新的,一般是一次写入多次读写(这部分从 Hive 0.14之后开始支持事务操作,但是约束比较多),但是由于 Hive 是基于 HDFS 作为底层存储的, 而 HDFS 的读写不支持事务特性,因此 Hive 的事务支持必然需要拆分数据文件以及日志文 件才能支持事务的特性。

3)执行 SQL 的延迟,Hive 的延迟相对较高,因为每次执行都需要将 SQL 语句解析成MapReduce 程序。

4)数据的规模上,Hive 一般是 TB 级别,而后者规模相对较小。

5)可扩展性上,Hive 支持 UDF、UDAF、UDTF,后者相对来说可扩展性较差。

5.HBase

HBase(Hadoop Database)是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。它底层的文件系统使用 HDFS, 使用ZooKeeper 来管理集群的 HMaster 和各RegionServer 之间的通信,监控各RegionServer 的状态,存储各 Region 的入口地址等。

1.特点

HBase 是 Key-Value 形式的数据库(类比 Java 中的 Map)。既然是数据库那肯定就有 表,HBase 中的表大概有以下几个特点。

1)大:一个表可以有上亿行,上百万列(列多时,插入变慢)。

2)面向列:面向列(族)的存储和权限控制,列(族)独立检索。

3)稀疏:对于空(null)的列,并不占用存储空间,因此,表可以设计得非常稀疏。

4)每个单元格中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入 时的时间戳。

5)HBase 中的数据都是字节,没有类型定义具体的数据对象(因为系统需要适应不同 类型的数据格式和数据源,不能预先严格定义模式)。

这里需要注意的是,HBase 也是基于 HDFS,所以也具有默认 3 个副本、数据冗余的特 点。此外 HBase 也是利用 WAL 的特点来保证数据读写的一致性。

2.存储

HBase 采用列式存储方式进行数据的存储。传统的关系型数据库主要是采用行式存储 的方式进行数据的存储,数据读取的特点是按照行的粒度从磁盘上读取数据记录,然后根 据实际需要的字段数据进行处理,如果表的字段数量较多,但是需要处理的字段较少(特 别是聚合场景),由于行式存储的底层原理,仍然需要以行(全字段)的方式进行数据的查 询。在这个过程中,应用程序所产生的磁盘 I/O、内存要求以及网络 I/O 等都会造成一定的 浪费;而列式存储的数据读取方式主要是按照列的粒度进行数据的读取,这种按需读取的 方式减少了应用程序在数据查询时所产生的磁盘 I/O、内存要求以及网络 I/O。

此外,由于相同类型的数据被统一存储,因此在数据压缩的过程中压缩算法的选用以 及效率将会进一步加强,这也进一步降低了分布式计算中对于资源的要求。

列式存储的方式更适合 OLAP 型的应用场景,因为这类场景具有数据量较大以及查询字段较少(往往都是聚合类函数)的特点。例如最近比较火的 ClickHouse 也是使用列式存储的方式进行数据的存储。

6.Spark及Spark Streaming

Spark 由 Twitter 公司开发并开源,解决了海量数据流式分析的问题。Spark 首先将数据 导入 Spark 集群,然后通过基于内存的管理方式对数据进行快速扫描,通过迭代算法实现 全局 I/O 操作的最小化,达到提升整体处理性能的目的。这与 Hadoop 从“计算”找“数据” 的实现思路是类似的,通常适用于一次写入多次查询分析的场景。

Spark Streaming 是基于 Spark 的一个流式计算框架,它针对实时数据进行处理和控制, 并可以将计算之后的结果写入 HDFS。它与当下比较火的实时计算框架 Flink 类似,但是二者在本质上是有区别的,因为 Spark Streaming 是基于微批量(Micro-Batch)的方式进行数据处理,而非一行一行地进行数据处理。

关于作者:

李杨,资深数据架构师,在数据相关领域有10年以上工作经验。头部保险资管公司科技平台交易系统团队开发组负责人,负责多个应用以及数据平台的建设、优化以及迁移工作。曾担任某数据公司技术合伙人,负责多个金融机构的数据仓库或数据平台相关的工作。《企业级数据架构:核心要素、架构模型、数据管理与平台搭建》作者。

作者直播推荐:

图片

7.总结

以上便是本文的全部内容,本人才疏学浅,文章有什么错误的地方,欢迎大佬们批评指正!我是Leo,一个在互联网行业的小白,立志成为更好的自己。

如果你想了解更多关于Leo,可以关注公众号-程序员Leo,后面文章会首先同步至公众号。
公众号封面

8.🥇赠书活动规则

🌟关注我的博客:关注我的博客,所有新鲜的博客文章和活动信息都不会错过。
📲添加博主wx:添加Leocisyam,如果添加不了,请私信博主。
💬参与方式:关注公众号程序员Leo或者文末扫码关注,回复抽奖,即可参与抽奖,记住要加Leo哥微信哈,方便通知,记得备注抽奖,否则抽奖无效
🎁公布结果:2024年4月03日晚,我会亲自抽取2名幸运读者,并在微信私信通知,请大家注意查收哈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/495499.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【OpenAI援引马斯克评价中国】小米汽车 SU7 顶配版或超 30 万/OpenAI 加持机器人亮相/荣耀已投入 100 亿研发 AI

雷军:共建一个更良性包容的汽车市场舆论环境 Figure 与 OpenAI 联手推出新机器人 亚马逊和 Google 悄悄降低对生成式 AI 的预期 小米生态链模式大改革,将进行分级管理 掌阅科技:致力打造国内首款真正 AI 阅读应用 荣耀称已投入 100 亿用于 AI…

Ipython与Jupyter之间的关系

IPython 和 Jupyter 之间的关系可以从它们的历史和目标中得到很好的解释。IPython(Interactive Python)最初是由 Fernando Prez 于 2001 年创建的,旨在提升 Python 的交互式计算体验。它提供了一个强大的交互式 Python shell 和一个面向高效计…

C语言例4-27:计算1+2+...+100之和(利用while语句实现)。

代码如下&#xff1a; //计算12...100之和&#xff08;利用while语句实现&#xff09;。 #include<stdio.h> int main(void) {int n1, sum0;while(n<100){ //复合语句作为当型循环结构的循环体sumsumn;n;}printf("sum %d\n",sum);retu…

Phoenix伪分布安装

引言 Phoenix是构建在HBase上的一个SQL层&#xff0c;能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表&#xff0c;插入数据和对HBase数据进行查询。Phoenix完全使用Java编写&#xff0c;作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫…

国赛大纲解读

1. 第一部分,是针对5G基础知识的掌握,第二部分是人工智能基本算法的掌握,就是人工智能的应用,用5G+人工智能(AI算法)进行网络优化的问题,要有网络优化的基础知识,比如说:某个区域的覆盖问题,覆盖特别差,但有数据,覆盖电频,srp值这些数据给你,根据数据来判断是…

Rabbitmq消息顺序的问题以及解决方案

1.1消息顺序的场景 场景1&#xff1a;一个queue&#xff0c;多个consumer 一个queue&#xff0c;有多个consumer去消费&#xff0c;这样就会造成顺序的错误&#xff0c;consumer从MQ里面读取数据是有序的&#xff0c;但是每个consumer的执行时间是不固定的&#xff0c;无法保…

1-28 核心类库(四)

一 BigDecimal类(会用) 1.作用:用来进行金融类项目中的数据的精确计算 2. import java.math.BigDecimal; import java.math.RoundingMode;public class BigDecimalTest {public static void main(String[] args) {//一定要字符串 int类型的答案不一定准BigDecimal bd1new B…

专题二_滑动窗口(1)

目录 209. 长度最小的子数组 解析 题解 3. 无重复字符的最长子串 解析 题解 1004. 最大连续1的个数 III 解析 题解 209. 长度最小的子数组 209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; 解析 题解 class Solution { public:int minSubArrayLen(int…

JAVA WEB 能够实现整个文件夹的上传下载吗?

导入项目&#xff1a; 导入到Eclipse&#xff1a;导入项目 导入到IDEA&#xff1a;导入项目 springboot统一配置&#xff1a;springboot-配置 下载示例&#xff1a; https://gitee.com/xproer/up6-jsp-eclipse/tree/6.5.40/ 工程 NOSQL NOSQL示例不需要任何配置&#xff0c;可…

【Java程序员福音】国外Java 程序员开发常用的工具(全)

Java是一门开源语言&#xff0c;所以可以选择的开发环境很多&#xff0c;你适合哪一个呢&#xff1f;整理了一些Java程序员开发常用的工具&#xff0c;需要的同学可以收藏。 1、免费开源Eclipse Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环…

深入浅出:探索Hadoop生态系统的核心组件与技术架构

目录 前言 HDFS Yarn Hive HBase Spark及Spark Streaming 书本与课程推荐 关于作者&#xff1a; 推荐理由&#xff1a; 作者直播推荐&#xff1a; 前言 进入大数据阶段就意味着 进入NoSQL阶段&#xff0c;更多的是面向OLAP场景&#xff0c;即数据仓库、BI应用等。 …

【Ubuntu】Ubuntu LTS 稳定版更新策略

1、确保下载环境 sudo apt update && sudo apt upgrade -y sudo apt autoremove 2、安装更新管理器 sudo apt install update-manager-core -y 3、设置只更新稳定版 sudo vim /etc/update-manager/release-upgrades 4、开始更新&#xff0c;耐心等待 sudo do-re…

iOS开发进阶(十):viewController生命周期讲解

文章目录 一、生命周期二、注意事项案例讲解 一、生命周期 viewController有自己的生命周期&#xff0c;其生命周期如下图&#xff1a; init - 初始化程序&#xff1b;loadView - 在UIViewController对象的view被访问且为空的时候调用&#xff1b;viewDidLoad - 视图加载完成后…

C语言例4-28:求两个正整数的最大公约数。

算法分析&#xff1a; 输入两个正整数m和nm%n 的余数 r&#xff0c;然后 mn;nr;当 n0, 则m是最大公约数&#xff0c;算法结束&#xff1b;否则转至执行2&#xff0c;重复上述过程&#xff0c;直到n0为止 代码如下&#xff1a; //求两个正整数的最大公约数。 #include<std…

语落AI论文助手-轻松降重加素材,让论文写作更加简单高效

今天给大家推荐一款AI论文写作工具&#xff1a;语落AI论文助手。 语落AI论文助手是一款专业的AI论文写作工具&#xff0c;它最大的特色是支持论文素材查询&#xff0c;论文内容改写&#xff0c;可以高效生成论文内容&#xff0c;轻松给论文降重。 它的网址是&#xff1a;语落-…

LeetCode hot100-20

48. 旋转图像给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。这题说了不能用辅助矩阵&#xff0c;但是不辅助我做不出来。还是暴力解…

如何借用 NTFS 交换数据流 实现隐藏文件?如何使用【文件包含】PHP伪协议?不同操作系统如何实现文件隐藏和木马伪装?

如何借用 NTFS 交换数据流 实现隐藏文件?如何使用【文件包含】PHP伪协议?不同操作系统如何实现文件隐藏和木马伪装? NTFS交换数据流(Alternate Data Streams, ADS)是NTFS文件系统特有的一种功能,它允许在同一个文件名下存储多个数据流。除了默认的数据流(通常用于存储文…

Wi-Fi 标准的演进

在数字时代的今天&#xff0c;Wi-Fi已经成为了我们生活中不可或缺的一部分&#xff0c;但这一无线通信技术的演进却是一个精彩而丰富的历程。从最初迈出的第一步&#xff0c;到如今的Wi-Fi 7高速数据传输&#xff0c;每一个Wi-Fi标准的诞生都伴随着无数创新和技术的突破。 802.…

Web漏洞--WAF绕过+堆叠查询

Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql语句(多条)一起执行。而在真实的运用中也是这样的&#xff0c;我们知道在mysql 中&#xff0c;主要是命令行中&#xff0c;每一条语句结尾加;表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做…

Cornflakes: Zero-Copy Serialization for Microsecond-Scale Networking——论文泛读

SOSP 2023 Paper 论文阅读笔记整理 问题 数据序列化对于许多数据中心应用程序来说至关重要&#xff0c;序列化的主要开销在于数据移动&#xff0c;将应用程序数据移动到数据包中所需的内存拷贝成本高昂。最近的零拷贝API暴露了NIC分散收集功能&#xff0c;增加了将数据移动卸…