
大数据技术
文章平均质量分 79
分享大数据技术相关知识
赵渝强老师
20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大数据、数据库、中间件技术和Java技术。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【赵渝强老师】阿里云大数据存储计算服务:MaxCompute
随着数据收集手段不断丰富,行业数据大量积累,数据规模已增长到了传统软件行业无法承载的海量数据(TB、PB、EB)级别。MaxCompute致力于批量结构化数据的存储和计算,提供海量数据仓库的解决方案及分析建模服务。云原生大数据计算服务(MaxCompute)是一种快速、完全托管的TB/PB级数据仓库解决方案。MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。下图展示了MaxCompute的项目空间。原创 2025-07-28 08:04:19 · 888 阅读 · 0 评论 -
【赵渝强老师】大数据交换引擎Sqoop
Sqoop是SQL To Hadoop的简称,它是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(Oracle、MySQL等)间进行数据的传递。通过使用Sqoop可以将一个关系型数据库中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。Sqoop是基于MapReduce完成数据的交换,因此在使用Sqoop之前需要部署Hadoop环境;另一方面,由于Sqoop交换的是关系型数据库中的数据,因此底层需要JDBC驱动的支持。原创 2025-07-15 15:00:44 · 861 阅读 · 0 评论 -
【赵渝强老师】HBase的逻辑存储结构
HBase的逻辑存储结构主要包括:命名空间(NameSpace)、表(Table)和列族(Column Family)。【赵渝强老师】HBase的存储结构下面分别进行介绍。原创 2025-05-29 10:17:04 · 818 阅读 · 0 评论 -
【赵渝强老师】Scala编程语言
Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机)之上,并兼容现有的Java程序。因此,要安装Scala环境之前,首先需要安装Java的JDK。学习Scala编程语言,将为后续学习Spark和Flink奠定基础。在Flink中也可以使用Scala编程语言,下面的代码也将在Flink中执行一个WordCount程序。下面的代码展示了在Spark中如何使用Scala开发一个WordCount程序。原创 2025-05-21 08:05:49 · 262 阅读 · 0 评论 -
【赵渝强老师】史上最详细:Hadoop HDFS的体系架构
在Hadoop HDFS的体系架构中,包含了三个组成部分。它们分别是:NameNode、DataNode和SecondaryNameNode。下图摘至Hadoop官方的网站,它说明了HDFS的体系架构。【赵渝强老师】HDFS的体系架构。原创 2025-03-02 11:01:37 · 1088 阅读 · 0 评论 -
【赵渝强老师】Kafka消息的消费模式
Kafka消费者组中的消息消费模型有两种,即:推送模式(push)和拉取模式(pull)。【赵渝强老师】Kafka消息的消费模式。原创 2025-03-01 11:14:19 · 558 阅读 · 0 评论 -
【赵渝强老师】Kafka的消费者与消费者组
消费者是以消费者组(Consumer Group)的方式工作,即一个消费者组由一个或者多个消费者组成,它们共同消费一个主题中的消息。在同一个时间点上,主题中分区的消息只能由一个消费者组中的一个消费者进行消费,而同一个分区的消息可以被不同消费者组中的消费者进行消费,如下图所示。其中消费者A消费读取一个分区的数据,消费者B消费读取两个分区的数据,而消费者C也消费读取一个分区的数据。同样,如果分组中加入了新的消费者,也将触发整个分区的重新分配,每个消费者将尽可能的分配到相同数目的分区以达到新的均衡状态。原创 2025-02-26 09:46:08 · 395 阅读 · 0 评论 -
【赵渝强老师】Kafka生产者的消息发送方式
Kafka生产者有三种方式进行消息的发送,这三种方式区别在于对于消息是否正常到达的处理。【赵渝强老师】Kafka生产者的消息发送方式下面分别介绍生产者的这三种消息发送方式。原创 2025-02-23 11:43:00 · 944 阅读 · 0 评论 -
【赵渝强老师】Kafka生产者的执行过程
Kafka的生产者Producer将消息序列化之后,发送到对应主题的指定分区上。下图为展示了生产者的执行过程。整个生产者客户端由两个线程协调运行,这两个线程分别为主线程和Sender线程。【赵渝强老师】Kafka生产者的执行过程。原创 2025-02-22 10:29:54 · 274 阅读 · 0 评论 -
【赵渝强老师】Spark RDD的缓存机制
Spark RDD通过persist方法或cache方法可以将计算结果的缓存,但是并不是这两个方法被调用时立即缓存,而是触发后面的action时,该RDD才会被缓存在计算节点的内存中并供后面重用。通过函数的定义发现,cache最终也是调用了persist方法,默认的存储级别都是仅在内存存储一份,Spark在object StorageLevel中定义了缓存的存储级别。需要说明的是,使用RDD的缓存机制,数据可能丢失;可以通过使用RDD的检查点机制了保证缓存的容错,即使缓存丢失了也能保证计算的正确执行。原创 2025-02-19 14:33:09 · 537 阅读 · 0 评论 -
【赵渝强老师】Spark的容错机制:检查点
由于Spark的计算是在内存中完成,因此任务执行的生命周期lineage(血统)越长,执行出错的概念就会越大。Spark通过检查点Checkpoint的方式,将RDD的状态写入磁盘进行持久化的保存从而支持容错。如果在检查点之后有节点出现了问题,Spark只需要从检查点的位置开始重新执行lineage就可以了,这样就减少了开销。设置checkpoint的目录,可以是本地的文件夹,也可以是HDFS。【赵渝强老师】Spark的容错机制:检查点。原创 2025-02-13 19:16:39 · 581 阅读 · 0 评论 -
【赵渝强老师】Spark RDD的依赖关系和任务阶段
有了RDD之间不同的依赖关系,就可以划分任务执行的阶段,从而构建任务执行的DAG(Directed Acyclic Graph,有向无环图)图。对于宽依赖,由于有Shuffle的存在,只能在父 RDD处理完成后,子RDD才能开始计算,因此宽依赖是划分任务阶段的标准。通过借助Spark Web Console可以很方便的查看到任务被划分的阶段以及DAG图。通过观察发现,每一个父RDD的分区都只被一个子RDD的分区使用。但有些情况的join是宽依赖操作。这里父RDD的每一个分区都被多个子RDD的分区使用。原创 2025-02-01 20:11:52 · 681 阅读 · 0 评论 -
【赵渝强老师】Hive的分区表
Hive的分区表跟Oracle、MySQL中分区表的概念是一样的。当表上建立了分区,就会根据分区的条件从物理存储上将表中的数据进行分隔存储。而当执行查询语句时候,也会根据分区的条件扫描特定分区中的数据,从而避免全表扫描以提高查询的效率。Hive分区表中的每个分区将会在HDFS上创建一个目录,分区中的数据则是该目录下的文件。在执行查询语句时,可以通过SQL的执行计划了解到是否在查询的时候扫描的特定的分区。【赵渝强老师】Hive的分区表注意:Hive的分区表具体又可以分为:静态分区表和动态分区表。原创 2024-10-28 09:14:40 · 957 阅读 · 0 评论 -
【赵渝强老师】Hive的内部表与外部表
Hive是基于HDFS之上的数据仓库,它把所有的数据存储在HDFS中,Hive并没有专门的数据存储格式。当在Hive中创建了表,可以使用load语句将本地或者HDFS上的数据加载到表中,从而使用SQL语句进行分析和处理。Hive的数据模型主要是指Hive的表结构,可以分为:内部表、外部表、分区表、临时表和桶表,同时Hive也支持视图。【赵渝强老师】Hive的数据模型。原创 2024-10-25 08:48:20 · 543 阅读 · 0 评论 -
【赵渝强老师】基于ZooKeeper实现Hadoop HA
图14.9一共使用了4个节点来部署HDFS HA,它们分别是:bigdata112、bigdata113、bigdata114和bigdata115。(12)将bigdata112上$HADOOP_HOME/tmp拷贝到bigdata113的对应目录下。(9)在bigdata112、bigdata113和bigdata114上启动Zookeeper集群。(10)在bigdata112和bigdata113上启动JournalNode。(6)修改bigdata112节点上的yarn-site.xml文件。原创 2024-09-18 17:35:02 · 1294 阅读 · 0 评论 -
【赵渝强老师】大数据主从架构的单点故障
从上图可以看出大数据的核心组件都是一种主从架构,而只要是主从架构就存在单点故障的问题。HA的思想其实非常简单:既然整个集群中只有一个主节点存在单点故障的问题,那么只需要搭建多个主节点就可以解决这样的问题了,这就是HA的核心思想。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是大数据体系中的重要组件。大数据体系架构中的核心组件都是主从架构,即:存在一个主节点和多个从节点,从而组成一个分布式环境。下图为展示了大数据体系中主从架构的相关组件。原创 2024-09-05 22:05:28 · 397 阅读 · 0 评论 -
【赵渝强老师】大数据生态圈中的组件
大数据体系架构中的组件非常多,每个组件又属于不同的生态圈系统。从最早的Hadoop生态圈体系开始,逐步有了Spark生态圈体系和Flink生态圈体系。因此在学习大数据之前有必要了解一下每一个生态圈体系中具体包含哪些组件,以及它们的作用又是什么。【赵渝强老师】大数据生态圈中的组件。原创 2024-09-04 21:35:18 · 1360 阅读 · 0 评论 -
【赵渝强老师】大数据技术的理论基础
大数据平台所要解决的问题是数据的存储和数据的计算,其核心思想采用的是分布式集群的思想。另一方面,分布式集群的思想在Google的技术系统中得到了很好的应用。因此Google将其核心技术的思想以论文的形式公开发表出来,这就是"Google的三驾马车",即:Google的文件系统、MapReduce分布式计算模型和BigTable大表。这三篇论文奠定了大数据生态圈体系中的技术核心,从而有了基于Java的实现框架------Hadoop生态圈体系。进一步发展起来了后续的Spark生态圈体系和Flink生态圈体系。原创 2024-09-03 14:58:23 · 1177 阅读 · 0 评论 -
【赵渝强老师】Spark中的RDD
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,它是Spark中最基本、也是最重要的的数据模型。它由分区组成,每个分区被一个Spark的Worker从节点处理,从而支持分布式的并行计算。RDD通过检查点Checkpoint的方式提供自动容错的功能,并且具有位置感知性调度和可伸缩的特性。通过RDD也提供缓存的机制,可以极大地提高数据处理的速度。【赵渝强老师】Spark中的RDD。原创 2024-08-21 10:32:40 · 1507 阅读 · 0 评论 -
【赵渝强老师】基于RBF的HDFS联邦架构
在最新的Hadoop版本中又实现了基于Router的联盟架构,并且在这个架构之上还实现了许多增强集群管理能力的特性。Router将挂载表从客户端中抽离了出来,解决了ViewFS存在的问题。【赵渝强老师】基于RBF的HDFS联邦架构为了对用户屏蔽联盟的实现细节,将ViewFS的配置和实现从客户端中剥离出来,一个自然的想法引入新的代理服务,客户端直接请求代理服务,再由其解析ViewFS后将请求转发给正确的子集群。这个代理服务叫做Router。原创 2024-08-18 10:56:49 · 672 阅读 · 0 评论 -
【赵渝强老师】Spark Streaming中的DStream
因此DStream对象就是Spark Streaming中最核心的对象。DStream的核心是通过时间的采用间隔将连续的数据流转换成是一系列不连续的RDD,在由Transformation进行转换,从而达到处理流式数据的目的。通过上图中可以看出DStream的表现形式其实就是RDD,因此操作DStream和操作RDD的本质其实是一样的。由于DStream是由一系列离散的RDD组成,因此Spark Streaming的其实是一个小批的处理模型,本质上依然还是一个批处理的离线计算。原创 2024-08-17 11:34:40 · 424 阅读 · 0 评论 -
【赵渝强老师】Spark SQL的数据模型:DataFrame
Scala中提供了一种特殊的类,用case class进行声明,中文也可以称作“样本类”。样本类是一种特殊的类,经过优化以用于模式匹配。样本类类似于常规类,带有一个case 修饰符的类,在构建不可变类时,样本类非常有用,特别是在并发性和数据传输对象的上下文中。在Spark SQL中也可以使用样本类来创建DataFrame的表结构。(1)定义员工表的结构Schema。(2)将员工数据读入RDD。(3)关联RDD和Schema。(4)生成DataFrame。(5)查询员工表中的数据,结果如下图所示。原创 2024-08-15 10:00:02 · 1204 阅读 · 0 评论 -
【赵渝强老师】Kafka分区的副本机制
在Kafka中每个主题可以有多个分区,每个分区又可以有多个副本。在这多个副本中,只有一个副本的角色是Leader,而其他副本的角色都是Follower。Follower副本通常不会存放在Leader副本所在的Kafka Broker上。通过这样的机制实现了高可用,当Leader副本所在的Kafka Broker宕机后,其他Follower副本所在的Kafka Broker就能够被选举成为新的Leader。从图中可以看出,每个分区的副本为3,即每个分区有三个副本。下图为展示了Kafka分区的副本机制。原创 2024-08-04 11:30:32 · 328 阅读 · 0 评论 -
【赵渝强老师】Kafka的主题与分区
在这个例子中,Topic A有3个分区。消息由生产者顺序追加到每个分区日志文件的尾部。Kafka中的分区可以分布在不同的Kafka Broker上,从而支持负载均衡和容错的功能。也就是说,Topic是一个逻辑单位,它可以横跨在多个Broker上。Kafka中的消息以主题为单位进行归类,生产者负责将消息发送到特定的主题,而消费者负责订阅主题进行消费。主题可以分为多个分区,一个分区只属于某一个主题。【赵渝强老师】Kafka的主题与分区。下图展示了主题与分区之间的关系。原创 2024-08-03 09:01:44 · 206 阅读 · 0 评论 -
【赵渝强老师】阿里云大数据生态圈体系
基于开源的大数据技术,阿里云开发了自己的大数据计算服务,即:MaxCompute大数据计算服务。MaxCompute原名为ODPS(Open Data Processing Service),它是阿里云提供的数据仓库解决方案,并提供大数据量(百TB、PB、EB)的结构化数据的存储和计算服务。由于MaxCompute适用于离线计算的批处理场景,因此阿里云进一步开发了实时计算Flink版用于支持大数据的实时处理与计算。下图展示了阿里云大数据的生态圈体系。原创 2024-08-02 10:11:18 · 1320 阅读 · 0 评论 -
【赵渝强老师】Hive的体系架构
Hive支持的语言是HQL语言,即:Hive Query Language,它是SQL语言的一个子集。从另一个方面来看,可以把Hive理解为一个翻译器,默认的行为是Hive on MapReduce,也是在Hive中执行的HQL语句会被转换成一个MapReduce任务运行在Yarn之上,从而处理HDFS中的数据。由于Hive需要将数据模型的元信息保存下来,因此Hive需要一个关系型数据库的支持,官方推荐使用MySQL来存储Hive的元信息。元信息指的是:表名、列名、列的类型、分区、桶的信息等等。原创 2024-08-01 11:01:12 · 249 阅读 · 0 评论 -
【赵渝强老师】Kafka的体系架构
Kafka消息系统是一个典型的分布式系统,其组成部分包括:消息生产者(Producer)、消息消费者(Consumer)、消息服务器(Broker)以及分布式协调服务ZooKeeper。一个典型的Kafka消息系统的集群架构如下图所示。【赵渝强老师】Kafka的体系架构下表列举了Kafka中的一些术语,这些术语对于掌握Kafka的内容非常重要。原创 2024-08-01 10:07:57 · 293 阅读 · 0 评论 -
【赵渝强老师】基于Flink的流批一体架构
由于Flink集成了批计算和流计算,因此可以使用Flink构建流批一体的系统架构,主要包含数据集成的流批一体架构、数仓架构的流批一体架构和数据湖的流批一体。原创 2024-08-01 09:15:38 · 602 阅读 · 0 评论 -
【赵渝强老师】HDFS数据上传和下载的过程
元信息包含了以下的内容:数据块的个数、存储的位置,以及冗余的位置。例如:数据块1将保存到了DataNode1上,同时,对应的两份冗余存储在DataNode2和DataNode3上。例如图中的第7步所示,客户端会将数据块1上传到了DataNode1上,并通过水平复制将其复制到其他的冗余节点上,最终保证数据块冗余度的要求。在Hadoop的HDFS中客户端的操作请求,无论是上传数据或者下载数据都是由NameNode负责接收和处理。了解到了HDFS数据上传的过程,下图说明了HDFS数据下载的过程。原创 2024-08-01 08:56:08 · 250 阅读 · 0 评论 -
【赵渝强老师】部署Hadoop本地模式
因此,Hadoop本地模式只能测试MapReduce任务,并把MapReduce任务运行本地,与运行一个普通的Java程序完全一样。为了方便操作Hadoop,需要设置HADOOP_HOME的环境变量,并把bin和sbin目录加入系统的PATH路径中。(5)进入Hadoop MapReduce的Example目录,并执行WordCount程序。先执行下面的语句将Hadoop的安装介质解压的/root/training目录。(6)最后的结果将输出到/root/output/wc下,如下图所示。原创 2024-08-01 08:50:34 · 454 阅读 · 0 评论 -
【赵渝强老师】Flink生态圈组件
Flink与Spark一样也是大数据计算引擎,可以完成离线的批处理计算和流处理计算。Flink的优势在它的流处理引擎DataStream。下图展示了Flink的生态圈体系架构。【赵渝强老师】Flink生态圈组件从下往上可以将Flink的生态圈体系划分成三层,分别是:平台部署层、核心引擎层和API&Library层。下面分别进行介绍。原创 2024-07-31 19:09:33 · 265 阅读 · 0 评论 -
【赵渝强老师】Spark生态圈组件
Spark的生态圈体系架构与Hadoop略有不同。因为在Spark中只有数据的计算部分,没有数据的存储部分,因为Spark的核心就是它的执行引擎。下图展示了Spark的生态圈体系,以及访问每个模块的访问接口。【赵渝强老师】Spark生态圈。原创 2024-07-31 18:47:30 · 412 阅读 · 0 评论 -
【赵渝强老师】Hadoop生态圈组件
下图为大家展示了Hadoop生态圈体系中的主要组件以及它们彼此之间的关系。【赵渝强老师】Hadoop生态圈组件这里先简单说明每一个组件的作用功能。原创 2024-07-31 18:33:02 · 768 阅读 · 0 评论 -
【赵渝强老师】Yarn的资源调度策略
Yarn作为一个资源和任务调度的平台,在实际应用中往往不止一个应用程序运行在Yarn之上,例如:在Yarn上同时运着MapReduce任务、Spark任务和Flink任务等等。这时候Yarn就需要有一种机制进行调度去分配资源给这些应用程序。【赵渝强老师】Yarn的资源调度策略。原创 2024-07-31 17:42:20 · 389 阅读 · 0 评论 -
【赵渝强老师】基于大数据组件的平台架构
在了解了大数据各个生态圈所包含的组件及其功能特性后,就可以利用这些组件来搭建一个大数据平台从而实现数据的存储和数据的计算。下图展示了大数据平台的整体架构。【赵渝强老师】大数据平台的Lambda架构【赵渝强老师】大数据平台的Kappa架构大数据平台的总体架构可以分为五层,分别是:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。原创 2024-07-31 11:18:13 · 1596 阅读 · 0 评论