大数据从入门到精通
文章平均质量分 79
详细介绍大数据技术中的各个方面,包括Hadoop、Spark、Flink计算引擎,Hive、ClickHouse数据仓库和Kafka、DataX、Flume、Maxwell等数据传输技术以及数据仓库建设理论。
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
shangjg3
这个作者很懒,什么都没留下…
展开
-
Hadoop从入门到精通(1)—— Hadoop 3.3.2 离线安装
2.6 配置etc/hadoop/mapred-site.xml。2.3 配置etc/hadoop/hadoop-env.sh。2.4 配置etc/hadoop/core-site.xml。2.5 配置etc/hadoop/hdfs-site.xml。2.7 配置etc/hadoop/yarn-site.xml。安装目录/data/cmpt/hadoop-3.3.2。1.1 安装jdk,配置jdk环境变量。2.2 配置hadoop环境变量。2.8格式化namenode。1.4 设置hosts。原创 2023-08-02 09:44:56 · 338 阅读 · 1 评论 -
Hadoop从入门到精通(2)—— Hadoop分布式文件系统-HDFS
为了避免这个问题,可以配置 NameNode 使其支持 `FsImage` 和 `EditLog` 多副本同步,这样 `FsImage` 或 `EditLog` 的任何改变都会引起每个副本 `FsImage` 和 `EditLog` 的同步更新。如果复制因子大于 3,则随机确定第 4 个和之后副本的放置位置,同时保持每个机架的副本数量低于上限,上限值通常为 `(复制系数 - 1)/机架数量 + 2`,需要注意的是不允许同一个 `dataNode` 上具有同一个块的多个副本。原创 2023-10-16 21:44:37 · 553 阅读 · 0 评论 -
Hadoop从入门到精通(3)—— HDFS Java API
FsPermission(FsAction u, FsAction g, FsAction o)` 的三个参数分别对应:创建者权限,同组其他用户权限,其他用户权限,权限值定义在 `FsAction` 枚举类中。块输出信息有三个值,分别是文件的起始偏移量 (offset),文件大小 (length),块所在的主机名 (hosts)。这里我上传的文件只有 57M(小于 128M),且程序中设置了副本系数为 1,所有只有一个块信息。和上面输出类似,只是多了文本大小,副本系数,块大小信息。2.6 查看文件内容。原创 2023-10-17 10:01:08 · 181 阅读 · 0 评论 -
Hadoop从入门到精通(4)—— Hadoop集群资源管理器-YARN
1.YARN简介Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.0 引入的集群资源管理系统。用户可以将各种服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配。原创 2023-10-17 09:43:25 · 201 阅读 · 0 评论 -
Hadoop从入门到精通(5)—— Hadoop分布式计算框架-MapReduce
4. shuffling:由于 `Mapping` 操作可能是在不同的机器上并行处理的,所以需要通过 `shuffling` 将相同 `key` 值的数据分发到同一个节点上去合并,这样才能统计出最终的结果,此时得到 `K2` 为每一个单词,`List(V2)` 为可迭代集合,`V2` 就是 Mapping 中的 V2;`combiner` 是 `map` 运算后的可选操作,它实际上是一个本地化的 `reduce` 操作,它主要是在 `map` 计算出中间文件后做一个简单的合并重复 `key` 值的操作。原创 2023-10-17 09:32:22 · 626 阅读 · 0 评论 -
Hadoop从入门到精通(6)—— MapReduce案例-电影网站数据统计分析
本文适合大数据初学者学习MapReduce统计分析业务问题的步骤和基础的MapReduce编程方法,初步掌握Hadoop对计算任务的管理。本文末尾有全部数据集和完整代码连接。1.准备工作按照好Hadoop之后要检查一下datanode运行情况,Hadoop3.x的默认端口是98702.上传数据文件到HDFS准备数据集将数据上传到HDFS3.编写统计分析代码3.1 Windows系统配置Hadoop开发环境在windows上开发和调试Hadoop代码需要。原创 2024-04-19 20:08:15 · 1696 阅读 · 0 评论 -
Hive从入门到精通(1)—— Hive 3.1.3 离线安装
将驱动放到/data/olap/hive-3.1.3/lib 目录。原创 2023-08-02 19:05:02 · 244 阅读 · 0 评论 -
Hive从入门到精通(2)—— Hive sql 基础操作
【代码】Hive sql 基础操作。原创 2023-08-03 11:38:41 · 78 阅读 · 0 评论 -
Hive从入门到精通(3)—— Hive 3.1.3客户端打印大量日志问题解决
在hive的conf目录下新建。原创 2023-08-04 17:47:42 · 670 阅读 · 0 评论 -
Hive从入门到精通(4)—— Hive分析英国房产价格数据
由于数据中有部分字段包含逗号‘,’,所以数据要预处理一下。该数据集包含有关英格兰和威尔士自1995年。4GB,在ClickHouse中需要约3。5.3伦敦房产每年的平均价格。5.2 统计每年的平均价格。超过2800王条记录,未压缩形式的数据集大小。5.1 统计数据总量。原创 2023-09-01 16:26:07 · 440 阅读 · 0 评论 -
Hive从入门到精通(5)—— Hive客户端和Beeline命令行的基本使用
由于 HiveServer2 是 Hive 开发维护的重点 (Hive0.15 后就不再支持 hiveserver),所以 Hive CLI 已经不推荐使用了,官方更加推荐使用 Beeline。方式二为在启动命令行 (Hive CLI / Beeline) 的时候使用 `--hiveconf` 指定配置,这种方式指定的配置作用于整个 Session。在不进入交互式命令行的情况下,可以使用 `hive -e ` 执行 SQL 命令。在 Hive CLI 中支持的参数,Beeline 都支持,常用的参数如下。原创 2023-10-26 17:22:55 · 1366 阅读 · 0 评论 -
Hive从入门到精通(6)—— Hive简介及核心概念
Hive 进行的是统一的元数据管理,就是说你在 Hive 上创建了一张表,然后在 presto/impala/sparksql 中都是可以直接使用的,它们会从 Metastore 中获取统一的元数据信息,同样的你在 presto/impala/sparksql 中创建一张表,在 Hive 中也可以直接使用。它的主要特点有:支持二进制序列化方式,可以便捷,快速地处理大量数据;Hive 会在 HDFS 为每个数据库上创建一个目录,数据库中的表是该目录的子目录,表中的数据会以文件的形式存储在对应的表目录下。原创 2023-10-26 17:53:59 · 661 阅读 · 0 评论 -
Hive从入门到精通(7)—— Hive分区表和分桶表
1.分区表1.1 概念Hive 中的表对应为 HDFS 上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大。分区为 HDFS 上表目录的子目录,数据按照分区存储在子目录中。如果查询的 `where` 字句的中包含分区条件,则直接从该分区去查找,而不是扫描整个表目录,合理的分区设计可以极大提高查询速度和性能。>这里说明一下分区表并 Hive 独有的概念,实际上这个概念非常常见。原创 2023-10-27 22:38:15 · 520 阅读 · 0 评论 -
Hive从入门到精通(8)—— Hive 视图和索引
视图是纯粹的逻辑对象,没有关联的存储 (Hive 3.0.0 引入的物化视图除外),当查询引用视图时,Hive 可以将视图的定义与查询结合起来,例如将查询中的过滤器推送到视图中。在指定列上建立索引,会产生一张索引表(表结构如下),里面的字段包括:索引列的值、该值对应的 HDFS 文件路径、该值在文件中的偏移量。删除视图时,如果被删除的视图被其他视图所引用,这时候程序不会发出警告,但是引用该视图其他视图已经失效,需要进行重建或者删除。被更改的视图必须存在,且视图不能具有分区,如果视图具有分区,则修改失败。原创 2023-10-27 22:47:34 · 744 阅读 · 0 评论 -
Hive从入门到精通(9)—— Hive常用DDL操作
LIKE 子句允许使用正则表达式进行过滤,但是 SHOW 语句当中的 LIKE 子句只支持 `*`(通配符)和 `|`(条件或)两个符号。例如 `employees`,`emp *`,`emp * | * ees`,所有这些都将匹配名为 `employees` 的数据库。临时表仅对当前 session 可见,临时表的数据将存储在用户的暂存目录中,并在会话结束后删除。内部表:不仅会删除表的元数据,同时会删除 HDFS 上的数据;外部表:只会删除表的元数据,不会删除 HDFS 上的数据;1. 查看数据库列表。原创 2023-10-28 22:54:12 · 732 阅读 · 0 评论 -
Hive从入门到精通(10)—— Hive 常用DML操作
1.加载文件数据到表1.1 语法LOCAL 关键字代表从本地文件系统加载文件,省略则代表从 HDFS 上加载文件:从本地文件系统加载文件时, `filepath` 可以是绝对路径也可以是相对路径 (建议使用绝对路径);从 HDFS 加载文件时候,`filepath` 为文件完整的 URL 地址:如 `hdfs://namenode:port/user/hive/project/ data1`原创 2023-10-28 23:09:38 · 1414 阅读 · 0 评论 -
Hive从入门到精通(11)—— Hive数据查询详解
本专栏案例数据集链接: https://download.csdn.net/download/shangjg03/88478038为了演示查询操作,这里需要预先创建三张表,并加载测试数据。1.2 部门表1.3 分区表这里需要额外创建一张分区表,主要是为了演示分区查询:2.单表查询2.1 SELECT2.2 WHERE2.3 DISTINCTHive 支持使用 DISTINCT 关键字去重。2.4 分区查询分区查询 (Partition B原创 2023-10-29 11:09:07 · 736 阅读 · 0 评论 -
Hive从入门到精通(12)—— Hive SQL的编译过程
1.MapReduce实现基本SQL操作的原理详细讲解SQL编译为MapReduce之前,我们先来看看MapReduce框架实现SQL基本操作的原理1.1。原创 2023-10-29 11:32:53 · 857 阅读 · 0 评论 -
Spark系列(1)—— Spark 3.3.2 离线安装
2.1. 下载spark 和scala 已编译tar包。2.3修改 spark-defaults.conf配置。2.4修改spark-env.sh配置。原创 2023-08-03 16:21:54 · 202 阅读 · 0 评论 -
Spark系列(2)—— Spark部署模式与作业提交
这时候可以查看 Web UI,我这里是内存空间不足:提交命令中要求作业的 `executor-memory` 是 2G,但是实际的工作节点的 `Memory` 只有 1G,这时候你可以修改 `--executor-memory`,也可以修改 Woker 的 `Memory`,其默认值为主机所有可用内存值减去 1G。需要注意的是:在集群环境下,`application-jar` 必须能被集群中所有节点都能访问,可以是 HDFS 上的路径;首先需要保证 Spark 已经解压在两台主机的相同路径上。原创 2023-10-05 04:00:00 · 328 阅读 · 0 评论 -
Spark系列(3)—— SparkSQL DataFrame、Dataset和RDD
DataFrame 的 `Untyped` 是相对于语言或 API 层面而言,它确实有明确的 Scheme 结构,即列名,列类型都是确定的,但这些信息完全由 Spark 来维护,Spark 只会在运行时检查这些类型和指定类型是否一致。在 Spark 2.0 后,为了方便开发者,Spark 将 DataFrame 和 Dataset 的 API 融合到一起,提供了结构化的 API(Structured API),即用户可以通过一套标准的 API 就能完成对两者的操作。原创 2023-10-06 10:30:00 · 122 阅读 · 0 评论 -
Spark系列(4)—— SparkSQL常用聚合函数
通常在使用大型数据集时,你可能关注的只是近似值而不是准确值,这时可以使用 approx_count_distinct 函数,并可以使用第二个参数指定最大允许误差。以下分别使用两种方式来自定义一个求平均值的聚合函数,这里以计算员工平均工资为例。- 无类型的自定义聚合函数,主要适用于 DataFrame。- 有类型的自定义聚合函数,主要适用于 DataSet;求和以及求指定列所有不相同的值的和。3.2 无类型的自定义聚合函数。3.1 有类型的自定义函数。1.10 聚合数据到集合。内置的求平均数的函数。原创 2023-10-06 10:45:00 · 216 阅读 · 0 评论 -
Spark系列(5)—— SparkSQL 查询连接操作
而对于大表和小表的连接操作,Spark 会在一定程度上进行优化,如果小表的数据量小于 Worker Node 的内存空间,Spark 会考虑将小表的数据广播到每一个 Worker Node,在每个工作节点内部执行连接计算,这可以降低网络的 IO,但会加大每个 Worker Node 的 CPU 负担。在对大表与大表之间进行连接操作时,通常都会触发 `Shuffle Join`,两表的所有分区节点会进行 `All-to-All` 的通讯,这种查询通常比较昂贵,会对网络 IO 会造成比较大的负担。原创 2023-10-07 07:58:09 · 293 阅读 · 0 评论 -
Spark系列(6)—— SparkSQL外部数据源
执行结果如下:`help_keyword` 这张表只有 600 条左右的数据,本来数据应该均匀分布在 10 个分区,但是 0 分区里面却有 319 条数据,这是因为设置了下限,所有小于 300 的数据都会被限制在第一个分区,即 0 分区。同时数据文件也不能过大,否则在查询时会有不必要的性能开销,因此要把文件大小控制在一个合理的范围内。Parquet 是一个开源的面向列的数据存储,它提供了多种存储优化,允许读取单独的列非整个文件,这不仅节省了存储空间而且提升了读取效率,它是 Spark 是默认的文件格式。原创 2023-10-07 07:58:52 · 1020 阅读 · 0 评论 -
Spark系列(7)—— Spark 弹性分布式数据集 RDD
RDD(s) 及其之间的依赖关系组成了 DAG(有向无环图),DAG 定义了这些 RDD(s) 之间的 Lineage(血统) 关系,通过血统关系,如果一个 RDD 的部分或者全部计算结果丢失了,也可以重新进行计算。对于一个 HDFS 文件来说,这个列表保存的就是每个分区所在的块的位置,按照“移动数据不如移动计算“的理念,Spark 在进行任务调度的时候,会尽可能的将计算任务分配到其所要处理数据块的存储位置。如果内存空间不够,将未缓存的分区数据存储到磁盘,在需要使用这些分区时从磁盘读取。原创 2023-10-08 07:00:00 · 364 阅读 · 0 评论 -
Spark系列(8)—— Spark Streaming 基本操作
在内部,DStream 由一系列连续的 RDD 表示。这里可以看到一共使用了三次循环,分别是循环 RDD,循环分区,循环每条记录,上面我们的代码是在循环分区的时候获取连接,也就是为每一个分区获取一个连接。使用 `updateStateByKey` 算子,你必须使用 `ssc.checkpoint()` 设置检查点,这样当使用 `updateStateByKey` 算子时,它会去检查点中取出上一次保存的信息,并使用自定义的 `updateFunction` 函数将上一次的数据和本次数据进行相加,然后返回。原创 2023-10-08 07:30:00 · 124 阅读 · 0 评论 -
Spark系列(9)—— Spark Streaming与流处理
流处理更贴近现实的数据模型:在实际的环境中,一切数据都是持续变化的,要想能够通过过去的数据推断未来的趋势,必须保证数据的不断输入和模型的不断修正,典型的就是金融市场、股票市场,流处理能更好的应对这些数据的连续性的特征和及时性的需求;流处理可以处理更大的数据量:直接处理数据流,并且只保留数据中有意义的子集,并将其传送到下一个处理单元,逐级过滤数据,降低需要处理的数据量,从而能够承受更大的数据量;大多数数据都是连续的流:传感器事件,网站上的用户活动,金融交易等等 ,所有这些数据都是随着时间的推移而创建的。原创 2023-10-09 01:00:00 · 100 阅读 · 0 评论 -
Spark系列(10)—— Spark Streaming 整合 Flume
因为 Spark 安装目录下是不含有 `spark-streaming-flume` 依赖包的,所以在提交到集群运行时候必须提供该依赖包,你可以在提交命令中使用 `--jar` 指定上传到服务器的该依赖包,或者使用 `--packages org.apache.spark:spark-streaming-flume_2.12:2.4.3` 指定依赖包的完整名称,这样程序在启动时会先去中央仓库进行下载。这种方式是基于事务的,即只有在 Spark Streaming 接收和复制数据完成后,才会删除缓存的数据。原创 2023-10-18 17:41:46 · 747 阅读 · 0 评论 -
Spark系列(11)—— Spark Streaming 整合 Kafka
同时从输出中也可以看到在程序中指定的 `groupId` 和程序自动分配的 `clientId`。在示例代码中 `kafkaParams` 封装了 Kafka 消费者的属性,这些属性和 Spark Streaming 无关,是 Kafka 原生 API 中就有定义的。在示例代码中,我们实际上并没有指定第三个参数 `offsets`,所以程序默认采用的是配置的 `auto.offset.reset` 属性的值 latest,即在偏移量无效的情况下,消费者将从其启动之后生成的最新的记录开始读取数据。原创 2023-10-19 10:10:00 · 891 阅读 · 0 评论 -
Spark系列(12)—— Spark Structured API基本使用
Spark 中所有功能的入口点是 `SparkSession`,可以使用 `SparkSession.builder()` 创建。上面使用 `createOrReplaceTempView` 创建的是会话临时视图,它的生命周期仅限于会话范围,会随会话的结束而结束。Spark 支持多种方法来构造和引用列,最简单的是使用 `col() ` 或 `column() ` 函数。需要说明的是新增,删除,重命名列都会产生新的 DataFrame,原来的 DataFrame 不会被改变。1.1 创建DataFrame。原创 2023-10-19 10:22:54 · 244 阅读 · 0 评论 -
Spark系列(13)—— Spark的转换算子和操作算子
当某个RDD执行map方法时,会遍历该RDD中的每一个数据项,并依次应用f函数,从而产生一个新的RDD。当某个RDD调用filter方法时,会对该RDD中每一个元素应用f函数,如果返回值类型为true,则该元素会被添加到新的RDD中。排序后新产生的RDD的分区数与原RDD的分区数一致。区别:在flatMap操作中,f函数的返回值是一个集合,并且会将每一个该集合中的元素拆分出来放到新的RDD中。在一个(K,V)的RDD上调用,K必须实现Ordered接口,返回一个按照key进行排序的(K,V)的RDD。原创 2023-11-11 17:44:52 · 939 阅读 · 0 评论 -
Spark系列(14)—— Spark的执行计划
Spark SQL 取代 Spark Core,成为新一代的引擎内核,所有其他子框架如 Mllib、Streaming 和 Graph,都可以共享 Spark SQL 的性能优化,都能从 Spark 社区对于 Spark SQL 的投入中受益。发现SQL执行慢的根本原因,才能知道应该在哪儿进行优化,是调整SQL的编写方式、还是用Hint、还是调参,而不是把优化方案拿来试一遍。explain(mode="formatted"):以分隔的方式输出,它会输出更易读的物理执行计划,并展示每个节点的详细信息。原创 2023-11-12 03:15:00 · 525 阅读 · 0 评论 -
Spark系列(15)—— SparkSQL语法优化
SparkSQL在整个执行计划处理的过程中使用了Catalyst优化器。1。原创 2023-11-12 04:00:00 · 910 阅读 · 0 评论 -
Spark系列(16)—— Spark Job优化
map-side预聚合,就是在每个节点本地对相同的key进行一次聚合操作,类似于MapReduce中的本地combiner。map-side预聚合之后,每个节点本地就只会有一条相同的key,因为多条相同的key都被聚合起来了。其他节点在拉取所有节点上的相同key时,就会大大减少需要拉取的数据数量,从而也就减少了磁盘IO以及网络传输开销。原创 2023-11-13 03:15:00 · 192 阅读 · 0 评论 -
Spark系列(17)—— Spark 资源调优
以单台服务器128G内存,32线程为例。先设定单个Executor核数,根据Yarn配置得出每个节点最多的Executor数量,每个节点的yarn内存/每个节点数量=单个节点的数量总的executor数=单节点数量*节点数。原创 2023-11-13 04:00:00 · 309 阅读 · 0 评论 -
Spark系列(18)—— Spark数据倾斜优化
数据倾斜一般是发生在shuffle类的算子,比如distinct、groupByKey、reduceByKey、aggregateByKey、join、cogroup等,涉及到数据重分区,如果其中某一个key数量特别大,就发生了数据倾斜。原创 2023-11-14 03:15:00 · 549 阅读 · 0 评论 -
Spark系列(19)—— Spark3.0中的AOE、DPP和Hint增强
AQE 是 Spark SQL 的一种动态优化机制,在运行时,每当 Shuffle Map 阶段执行完毕,AQE 都会结合这个阶段的统计信息,基于既定的规则动态地调整、修正尚未执行的逻辑计划和物理计划,来完成对原始查询语句的运行时优化。(2)如果分区太多,则每个分区的数据量大小可能很小,读取大量小的网络数据块,这也会导致I/O效率低而降低了查询速度。(1)如果分区太少,则每个分区的数据量可能会很大,处理这些数据量非常大的分区,可能需要将数据溢写到磁盘(例如,排序和聚合),降低了查询。原创 2023-11-14 04:00:00 · 629 阅读 · 0 评论 -
Spark系列(20)—— Spark SQL编程
1.Spark SQL概述1.1 什么是Spark SQLSpark SQL是用于结构化数据处理的Spark模块。与基本的Spark RDD API不同,Spark SQL提供的接口为Spark提供了有关数据结构和正在执行的计算的更多信息。在内部,Spark SQL使用这些额外的信息来执行额外的优化。与Spark SQL交互的方式有多种,包括SQL和Dataset API。计算结果时,使用相同的执行引擎,与您用于表达计算的API/语言无关。1.2 为什么要有Spark SQL1.3 Spark。原创 2023-11-15 03:00:00 · 494 阅读 · 0 评论 -
Spark系列(21)—— SparkSQL数据的加载与保存
SparkSQL读取和保存的文件一般为三种,JSON文件、CSV文件和列式存储的文件,同时可以通过添加参数,来识别不同的存储和压缩格式。原创 2023-11-15 04:00:00 · 667 阅读 · 0 评论 -
Spark系列(22)—— SparkSQL项目实战
我们这次Spark-sql操作所有的数据均来自Hive,首先在Hive中创建表,并导入数据。一共有3张表:1张用户行为表,1张城市表,1张产品表。查询出来所有的点击记录,并与city_info表连接,得到每个城市所在的地区,与 Product_info表连接得到。的维度来看的,计算各个区域前三大热门商品,并备注上每个商品在主要城市中的分布比例,超过两个城市用其他显示。北京21.2%,天津13.2%,其他65.6%北京63.0%,太原10%,其他27.0%北京63.0%,太原10%,其他27.0%原创 2023-11-16 03:45:00 · 451 阅读 · 0 评论
分享