自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 Spark算子总结

前言 在 Spark 中共有四种 RDD 算子:创建算子、转换算子、缓存算子、行动算子,而大部分情况下我们使用得都是转换算子和行动算子,由此本文主要对这俩类算子进行一个总结。转换算子一元 value 类型map:返回一个新的 RDD,其中的元素由原 RDD 经过 function 的转换,map 算子在数据的粒度上进行遍历val listRDD: RDD[Int] = sc.makeRDD(1 to 10, 2)val mapRDD: RDD[Int] = listRDD.map(x =&g

2021-01-07 16:12:14 224

原创 从源码角度看 Spark 任务提交流程(下)

前言 本文接续上篇接着从源码的角度来分析 Spark 中提交任务到执行计算的流程,推荐如果没有阅读上篇可以从上篇开始阅读不然会觉得本文有些云里雾里。Application Master  上篇的最后我们说了再我们提交任务后 Spark 会启动一个yarn client 并向 RM 发送一条类似于 command = bin/java org.apache.spark.deploy.yarn.ApplicationMaster 的指令从而启动 Application Master , 此时在启

2020-12-07 20:49:46 176

原创 从源码角度看 Spark 任务提交流程(上)

前言 最近阅读一下 Spark 的部分源码,在这一过程中通过源码结合之前所了解的相关内容,能够对之前知识进行完整的梳理也能更一进步了解 Spark 运行的底层逻辑,由于阅读源码是一个较为艰深的过程遂将其记录下来方便日后回顾,本篇我们来讲一下我们的 Spark on Yarn 在提交一个任务后俩个框架为我们做了些什么。Spark 向 Yarn 提交任务的流程 在 Linux 上安装完 Spark 后都会用一个官方提供的 example 来测一测我们的 Spark 安装成功了,比如下面这段命令:bin/

2020-11-27 12:22:03 192

原创 红黑树 (三) : 终章 --- 红黑树

前言 在作为铺垫的第一篇与第二篇中我们分别介绍了 BST 和 2-3 查找树,本篇我们就要来介绍我们的主角红黑树了,如果你能够理解前两篇所说的内容,那么在这里你只需要在多花一点点的时间就能理解红黑树了,那么就让我们开始把。 文中所涉及的代码均可在 Github 找到,笔者水平有限,如有纰漏请不吝指出。2-3 查找树与红黑树定义红黑树 与网络上所查阅的大部分资料不同 (至少是我查阅的),本文中的红与黑指的并不是节点的颜色,而是链接的颜色,具体来说我们在红黑树中有两类链接:红链接将两个 2-结点连起来

2020-11-23 22:35:39 161

原创 红黑树 (二): 过渡 ---- 2-3 查找树

前言 上一篇中我们着重介绍了二叉查找树 (BST),其是一种较为简单的符号表同时也是红黑树的基础,因此理解其特性与基本操作是非常有必要的。这一篇我们来讲一下从 BST 到 红黑树当中的一种过渡结构 2-3 查找树理解它能够极大的减小我们理解红黑树的难度,但要实现 2-3 查找树比起红黑树而言却更麻烦一下,因此本篇不会涉及代码我们从图文的角度出发来讲解这种过渡的数据结构。 笔者水平有限,文中如有错误请不吝指出。BST 的问题 BST 虽然能够提供非常良好的查询性能,但前提是 key 值的插入是随机的,

2020-11-18 15:30:04 83

原创 红黑树 (一): 基础----二叉查找树

前言 红黑树是一种非常优秀的数据结构,通过一系列的机制其能达到自平衡的效果从而提供非常高效的查询与修改操作,而笔者在网上查询相关资料想了解红黑树的过程中发现大部分的说明都不是很好理解(可能是我比较菜),而后将目光转向书籍遂查看了《算法导论》中对于红黑树的说明感到依然比较晦涩,最终是在《算法》第三章中阅读相关内容后觉得豁然开朗,于是想将书中内容结合一些自己的理解形成文字记录下来。 系列文章预计三篇,第一篇即本篇准备从较为基础的二叉查找树入手,可将红黑树视为其的一个升级版本理解二叉查找树的各种操作对理解红黑

2020-11-16 23:38:17 153

转载 Java并发编程:volatile关键字解析

  本想查阅资料对 Java 中 volatile 关键字相关内容进行整理,在查阅的过程中发现了一篇写的非常详尽的文章,已无再整理的必要于是将其转载于此。 原文连接: https://www.cnblogs.com/dolphin0520/p/3920373.html 作者: Matrix海子...

2020-11-02 17:33:09 102

原创 JAVA I/O 之对象序列化

前言​ 最近在看 《JAVA 编程思想》看到 I/O 这一章中有关对象序列化相关的内容之前不熟悉,于是借本文做一个整理与记录。Serializable 接口​ 在 Java 中要序列化一个对象非常简单,只需要该类实现了 Serializable 接口我们便能通过 I/O 流的方式来序列化与反序列化对象。// 一个简单的 Person 类public class Person implements Serializable { private String name; private

2020-11-01 20:51:46 82

原创 Kafka 数据一致与可靠性保证 (下篇)

前言​ 在上篇中着重讲了 ACK,ISR,Exactly Once 和 事务性等机制来保证 producer 端发送至 broker 的数据不丢失不重复,而本篇会介绍 broker 端和 consumer 端保证数据一致性与可靠性的一些机制,文中如有纰漏请不吝指正,共同进步!HW & LEO​ HW(High Watermark) 和 LEO(Log End Offset) 是 Kafka 中保证分区数据对消费者而言始终一直的特性,我们先不管这俩个名词,先来看看去除这俩个机制的情况下 c

2020-10-28 16:16:34 160

原创 Kafka 数据一致与可靠性保证 (上篇)

文章目录前言ACK 与 ISRACK 应答机制ISRExactly-once三种语义kafka 实现 exactly-once事务性结语参考前言​ 作为消息队列能够保证消息的不重复,不丢失,有序性是非常重要的,而 Kafka 就通过一系列机制很好的保证了数据的一致与可靠性,接下来会用两篇博客来整理一下相关内容,本篇主要内容为: ACK应答机制、ISR 以及 producer 端的Exactly-once 语义ACK 与 ISRACK 应答机制​ 在 TCP/IP 协议中,如果接收方成功的接收到数据

2020-10-19 17:06:03 325

原创 Kafka 学习笔记之 数据存储与高效读写

前言​ 上一篇笔记中概述了一下什么是消息队列以及 kafka 的组织架构,这篇笔记就来整理一下 kafka 是如何存储数据,以及其怎么保证了大数据场景下的高效读写,文中如有错误与纰漏欢迎指正,共同进步!kafka 数据存储结构topic 与 partition​ 在 kafka 的架构中有讲到作为基于订阅/发布模式的消息队列 kafka 的所有操作都是面向 topic 的,而为了水平扩展的弹性和增大吞吐量在 kafka 中又可以将一个 topic 分成多个 partition 分布在不同的机

2020-10-14 17:11:50 391

原创 Kafka 学习笔记之 Kafka 概述

写在前面kafka 作为一种基于发布/订阅模式的消息队列在大数据领域尤其是实时领域被广泛使用,其分布式的特点能让其达到每秒百万级的大吞吐量,本篇笔记作为 kafka 系列的开篇准备从消息队列入手然后介绍 kafka 的整体组织架构,文中如有错误欢迎指正,共同进步!消息队列何为消息队列​ 消息队列这个词在各种场景下都会听到,知道其可以将生产者与消费者之间解耦从而实现异步处理,但是这样的表述也许不是很好理解,在这里举个现在生活中的大家都会遇到的例子来帮助理解消息队列的作用。​ 一天小明在上班时

2020-10-12 16:47:47 112

原创 Hbase 之六 预分区与 rowKey 设计

前言​ 之前有讲到过 compaction 和 split 是 Hbase 在使用过程中维持查询效率的手段,那理所当然我们可以在使用前或者说表创建之时就用良好的设计来让 Hbase 保持好的性能,本篇就来浅谈一下 Hbase 表设计的两个点 预分区及 rowKey 设计。预分区预分区的作用​ 在 Hbase 中如果一个 region 的大小超过一定的阈值就会发生 split 的操作,这个过程会消耗大量的磁盘及网络 I/O,因此我们虽然需要 split 带来的稳定的查询性能但是又不希望花费 sp

2020-09-27 21:17:14 642

原创 HBase 之五 Coprocessor 协处理器及实现案例

背景​ HBase 在作为大数据生态中的 Nosql 数据库有用非常多的优点,但是其也存在一定的缺陷例如无法简单的维护二级索引(本文会介绍及实现),求和、排序、计数等简单操作需要通过 Client 走速度较慢的 MapReduce,为了解决这些问题 HBase 提供了 Coprocessor 协处理器来让用户可以在 server 端运行自己的代码,从而可以在让用户轻松的维护二级索引,在server 端实现聚合操作等。本文基于 1.3.1 版本Hbase。协处理器分类Observer​ 这

2020-09-27 15:59:15 502

原创 Hbase 之四 Compaction & Split

前言​ 本篇是 HBase 相关内容的第四篇,上一篇我们整理了一下 HBase 的读写过程,这一篇继续来略微的探究一下 HBase 保存性能的关键 HFile Compaction 和 Region Split,文中如有错误欢迎指正,共同进步!HFile CompactionHFile Compaction 的作用​ 上一篇博客中有提到,HBase 的 MemStore 在满足一定的条件下会将内存中的数据刷写成 HFile,而一个 MemStore 刷写就会形成一个 HFile,随着时间

2020-09-26 22:28:21 436

原创 HBase 之三 HBase 的读写流程

前言​ 上一篇详细讲述了 HBase 的数据模型以及组织架构,这一篇就来讲讲 HBase 的读写流程,由于其依托于 Zookeeper 与 HDFS 因此其读写流程较为复杂,推荐先阅读HBase的数据模型与架构熟悉 HBase 的组织架构,然后再阅读本文会有更好的理解,如果文中有不正确的地方欢迎指出,一同进步!HBase 写流程​ 相比于读流程写流程更加复杂一些,因此我们先来讲解写流程。HBase 写流程总览​ 话不多说直接上图,HBase 总体写流程如下:​ 从图上可以看到

2020-09-25 17:01:10 268

原创 HBase 学习笔记之二 HBase的数据模型与架构

前言​ 上一篇讲述了 HBase 与 RDBMS 的区别,以及其解决了 RDBMS 的那些问题,这一篇详细讲述一下 HBase 的数据结构以及其组织架构HBase 数据模型Namespcae: 命名空间 ,类似于关系型数据库的 DatabBase 概念,每个命名空间下有多个表。 HBase 有两个自带的命名空间,分别是 hbase 和 default, hbase 中存放的是 HBase 内置的表,default 表是用户默认使用的命名空间。Region:RDBMS 中表的概念,或可进一步

2020-09-24 17:21:16 330

原创 HBase 学习笔记之一

写在前面​ 本系列是本人学习大数据生态中 HBase 相关内容的学习笔记会以实战和感想或者是理解的方式来整体相关内容,作为开篇我像先介绍一下 HBase 相关的背景以及其能够解决那些问题。HBase VS RDBMS​ HBase 全称 Hadoop Database,同样是 database 那不免就会将其和传统的 RDBMS 如 Mysql、Oracle 进行比较,两者的显著区别当然是 HBase 以 HDFS 为基础,而 RDBMS 则以计算器的文件系统为基础。除此之外更关键的是 HBas

2020-09-19 23:04:47 105

原创 JAVA 集合之 PriorityQueue

写在开头​ 本文作为我学习 Java 集合 PriorityQueue 的一个记录与总结,如果文中有纰漏或者错误,请不吝赐教,共同进步!PriorityQueue一、PriorityQueue 介绍1.1 PriorityQueue 概述PriorityQueue(优先队列) , 其底层的实现是**堆(heap)**这一数据结构PriorityQueue 维护底层数组长度的方式与 ArrayList 相同PriorityQueue 中元素默认按照元素的自然顺序排序,也可指定自定义的 Comp

2020-09-15 19:57:36 212

原创 Kafka 学习笔记(一)—— Kafka 安装

前言​ 本系列为我学习 kafka 过程中的一些整理与记录,本篇主要记录 kafka 集群的安装。环境及机器:节点:三台虚拟机配置:内存 16G、硬盘 100G系统:Centos 7.7一、 Zookeeper 安装​ Kafka 集群的运行依赖于 Zookeeper 因此在安装 Kafka 之前需要先按照 Zookeeper1.1 JDK 安装​ JDK 的安装可以直接参照 Hadoop 完全分布式安装 此篇博客中有详细的步骤。1.2 Zookeeper 安装Zook

2020-08-30 18:59:42 153

原创 JAVA 集合之 HashSet

前言​ 之前一篇文章写了 HashMap,那本篇就来写与其十分相关的 HashSet,阅读本篇之前需要阅读 Java集合之 HashMap ,因为 HashSet 的背后就是 HashMap。一、HashSet 简介​ HashSet 是 Set 接口的一种实现,其存储有一个特点就是其中的值都不重复,当然因为其值是经过 hash 操作的 HashSet 内部的元素都是无序的,对于一个值是否存在于 Set 中 HashSet 能够提供优异的查询性能。HashSet 的特殊之处在于其完全是由 HashMa

2020-08-25 16:03:47 126

原创 JAVA集合之 HashMap

前言本文作为我学习 Java 集合 HashMap 的一个记录与总结,如有疏漏或不足之处欢迎指出共同进步!一、HashMap 简介1.1 HashMap 概述​ HashMap 是 Map 接口的一种实现,其用于存储形如 <K, V> 这类值映射的数据,一般情况下 HashMap 的基本操作 (put 和 get) 的时间复杂度为 O(1+α)O(1+\alpha)O(1+α) (α\alphaα 为负载因子) ,因此其具有优异的性能,需要注意的时 HashMap 中的元素是无序的甚至连

2020-08-22 16:10:51 167

原创 Hadoop完全分布式安装

Hadoop 完全分布式安装前言​ 之前有搭建过一次 Hadoop 完全分布式集群但是没有记录,最近开始着手自己搭个模拟数仓需要搭建集群,趁此机会记录一下搭建的过程。环境及机器:节点:三台虚拟机配置:内存 16G、硬盘 100G系统:Centos 7.7Hadoop版本:2.7.71、安装JDK1.81.1 下载 JDK​ 推荐安装 Oracle 官方提供的 JDK 版本,可以在 Oracle 官网下载得到,下载 Linux 系统的版本即可1.2 解压 JDK​ 将下载的 JDK

2020-08-16 15:52:14 957

原创 Flume学习笔记(三)Flume 内部机制

Flume学习笔记(三)Flume 内部机制前言​ 本篇是 Flume 学习笔记的第三篇,主要整理 Flume 的事务机制以及 Event 如何在 Agent 中流转的整个过程。Flume 事务机制​ 为了保证数据的不丢失,Flume 框架在 Agent 进程中加入了俩个事物机制,分布为 Source --> Channel 和 Channel --> Sink,示意图如下:Put 事务上图中 Source 将数据推送至 Channel 的过程即 Put 事务,其分为三个阶段

2020-08-09 14:20:18 261

原创 Flume学习笔记(二)Flume 常用组件

Flume学习笔记(二)Flume 常用组件前言​ 上一篇介绍了 Flume 整体的组成架构,这一篇来整理一下一些较为常用的 Source,Sink,ChannelSource网络流 Source​ Flume 可以通过监听特定的端口来获取数据,以下三个是较为常用的网络流 SrouceAvro SourceAvro Source 监听指定端口,通过 RPC 的方式来获取数据,Avro 本身在大批量的数据传输过程中有良好的表现。在实际应用中可以使用 Avro Source 和 Avro Si

2020-08-08 14:47:04 192

原创 Flume学习笔记(一)Flume 组成架构

Flume学习笔记(一)Flume 组成架构前言​ 本文主要记录我在学习 Flume 过程中的一些知识的整理与记录,预计会做成一个系列来梳理一下 Flume 中的知识,本篇的主要内容为 Flume 的组成架构,文中如有疏漏与不足欢迎指正!一、Flume 是什么​ Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume 基于流式架构,灵活简单。其可以不断的监听数据源来将新产生的数据搬迁至目标,如将新产生的log 日志数据写入 HDFS。二、

2020-08-08 11:06:04 2684

原创 JAVA 集合之 LinkedList

LinkedList前言本文作为我学习 Java 集合 LinkedList 的一个记录与总结,如有疏漏或不足之处欢迎指出共同进步!一、LinkedList 简介1.1 LinkedList 概述LinkedList 是可以动态增长或缩减的索引序列,其底层是基于双向链表实现的LinkedList 类内部维护了一个双向链表,因此可以完成高效的的插入和删除,但由于顺序存取的原因其查询效率不如 ArrayList ,后者可以通过 index 直接取得相应的值。LinkedList 与 A

2020-08-08 00:37:28 840

原创 Linux 下 Flume 安装

Flume 安装前言​ Flume最早是Cloudera提供的日志收集系统,现在为 Apache 基金会下的项目,Flume 提供了海量日志的采集、聚合和传输,本文将介绍 Flume 的安装。​ 环境信息​ 操作系统:Centos 7.7​ JDK 版本: 1.8 (JDK 的安装方法可以参考这篇文章 JDK 安装)​ 工具: Xshell, Xftp下载与安装在 Flume 官网下载 Flume : http://flume.apache.org/download.html下载

2020-08-05 22:01:18 982

原创 JAVA 客户端连接远程 Kafka 集群

JAVA 客户端连接远程 Kafka 集群前言​ 近期在学习 Kafka 在使用 JAVA 的 kafka-clients 库的Producer API 向腾讯云上的 Kafka 集群推送消息,发现消息无法发送,在此记录一下我解决的方法。问题​ 以下为我的测试代码,其中 175.24.230.*** 为 Kafka 集群上某台 broker 的 IP 地址,但在运行后在远端服务器开起 console-consumer 无法消费到同一主题中的消息。public class MyProducer {

2020-08-05 18:09:29 2054

原创 JAVA 集合之 ArrayList

写在开头本文作为我学习 Java 集合 ArrayList 的一个记录与总结,后续会陆续总结 JAVA 中常用的集合。ArrayList一、ArrayList 简介1.1 ArrayList 概述ArrayList 是可以动态增长或缩减的索引序列,它的底层实现是基于数组的ArrayList 类内部维护了一个 Object[] 数组来存储元素,并维护了 Capacity 属性来表示 Object[] 数组的长度,当向 ArrayList 中添加元素时会增加 Capacity 的值如果

2020-08-01 14:20:58 216

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除