自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(52)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

原创 Hadoop系列之MapReduce工作原理(20)

MapReduce 工作原理本节主要详细介绍 MapReduce 的工作原理。核心组件上面这个流程图已经把 MapReduce 的工作过程说的很清楚了,下面我们来一个一个拆解一下。输入文件首先,MapReduce 任务的目的是处理数据,那数据从哪里来?一般一个 MapReduce 任务的输入数据是来自于 HDFS 文件,这里的数据文件就叫做 MapReduce 任务的输入文件,而 HDFS 上文件的格式多种多样,比如有文本文件,二进制文件等。InputFormatInputFormat 是

2021-01-30 09:59:46 65469

原创 Hadoop系列之MapReduce初识(19)

MapReduce初识MapReduce 是 Hadoop 生态下面的计算层,它把任务分割成小任务并分发到集群的机器上并行执行。您只需要按照 MapReduce 提供的编程接口开发业务逻辑代码即可,剩下的事情 MapReduce 框架会自动完成。比如,任务分割,任务分发等。MapReduce 程序具有函数式风格,输入是数据列表,输出依然是数据列表。MapReduce 是 Hadoop 的核心。Hadoop 如此强大就是因为 MapReduce 的并行处理能力。了解 Hadoop MapReduceMa

2021-01-30 09:57:16 65457

原创 Hadoop系列之HDFS 纠删码(18)

HDFS 纠删码Hadoop HDFS 纠删码已经克服了之前使用的数据块多副本策略的限制,它具有和多副本策略相同的容错效果,但需要的存储空间却少很多。使用纠删码技术可以减少 50% 的存储空间。HDFS 副本策略的问题HDFS 为了数据容错,在存储的时候回,每个数据块会被复制3次。为了防止由于 Datanode 发生故障带来数据丢失,这是一种简单且健壮的方式。利用本地存储多个数据块副本的方式,还可以减轻 MapReduce 任务或者其他计算任务的负担。但数据块复制技术的开销比较大,3个副本就需要 20

2021-01-28 08:47:41 66088

原创 Hadoop系列之HDFS 磁盘均衡(17)

HDFS 磁盘均衡HDFS 磁盘均衡器HDFS 提供了一个用于 Datanode 内多磁盘之间的数据均衡工具,即 Diskbalancer (磁盘均衡器),它把数据均衡的分发到一个 Datanode 下的多个磁盘。Diskbalancer 和 Hadoop 2.0 版本以前提供的 Balancer 不同,因为 Balancer 关心的是不同 Datanode 之间的数据均衡,Datanode 内多个磁盘的数据均衡它是不起作用的。HDFS 由于以下原因,在把数据存储到 Datanode 多个磁盘的时候,

2021-01-26 08:49:40 66626

原创 Hadoop系列之HDFS Federation(联邦机制) (16)

HDFS Federation(联邦机制)HDFS Federation 中文意思为 HDFS 联盟或者 HDFS 联邦。这里并非指多个集群,更准确的应该是一个集群有多个命名空间,即多个 Namenode。Hadoop 1.0 HDFS 架构Hadoop HDFS 有两个主要的分层:HDFS包含两个层次:命名空间管理(Namespace) 和 块/存储管理(Block Storage)。命名空间管理(Namespace)HDFS的命名空间包含目录、文件和块。命名空间管理是指命名空间支持对HDF

2021-01-26 08:43:38 66374 1

原创 Hadoop系列之HDFS Namenode 高可用(15)

HDFS Namenode 高可用在 Hadoop 2.0.0 之前,一个集群只有一个Namenode,这将面临单点故障问题。如果 Namenode 机器挂掉了,整个集群就用不了了。只有重启 Namenode ,才能恢复集群。另外正常计划维护集群的时候,还必须先停用整个集群,这样没办法达到 7 * 24小时可用状态。Hadoop 2.0 及之后版本增加了 Namenode 高可用机制,下面详细介绍。Hadoop Namenode 高可用架构Hadoop 2.0 克服了 Namenode 单点故障问题

2021-01-25 08:51:10 66623

原创 Hadoop系列之HDFS 高可用与容错(14)

HDFS 高可用与容错HDFS 是一个分布式文件系统,它会给文件创建副本并把副本分发到集群的节点上,因此,在读取数据的时候可以从多个节点上读取。这对数据的容错是非常有益的,在读取的时候,节点挂了,可以去其他节点读取相同的数据。HDFS 就是通过这种方式实现了数据的高可用和容错。HDFS 如何实现高可用一个 HDFS 集群一般有很多 Datanode 节点,并且会定期给 Namenode 发送心跳信息,如果 Namenode 在规定时间内没接收到 Datanode 的心跳信息,那么它就会认为该 Dat

2021-01-25 08:49:49 66429 1

原创 深度剖析Java集合之BitSet

BitSetBitSet类实现了一个按需增长的位向量,实际是由“二进制位”构成的一个Vector。每一位都是一个表示true或者false 的boolean 值。如果我们希望高效地存储这样只有两种类型的数据,就可以使用BitSet。首先需要说明的是,BitSet并不属于集合框架,没有实现List或Map或者Set接口,BitSet更多的表示一种开关信息,对于海量不重复数据,利用索引表示数据的方式,将会大大节省空间使用。位图vector of bits也就是位图,由于可以用非常紧凑的格式来表示给定范

2021-01-24 19:50:39 65604

原创 Hadoop系列之HDFS机架感知(13)

HDFS 机架感知客户端向 Namenode 发送写请求时,Namenode 为这些数据分配 Datanode 地址,HDFS 数据块副本的放置对于系统整体的可靠性和性能有关键性影响。一个简单但非优化的副本放置策略是,把副本分别放在不同机架,甚至不同IDC,这样可以防止整个机架,甚至整个IDC崩溃带来的数据丢失,但是这样文件写必须在多个机架之间、甚至IDC之间传输,增加了副本写的代价,是否有较优的方案来解决这个问题呢?机架感知是什么告诉 Hadoop 集群中哪台机器属于哪个机架。那通过什么方式告知呢

2021-01-24 12:44:58 64619

原创 Hadoop系列之HDFS 数据块(12)

HDFS 数据块要把大文件存储在 HDFS上,HDFS 会把大文件分割成小块,即我们通常说的数据块( block ),它是 Hadoop 分布式文件系统最小的存储单元,而且我们没办法决定指定块的存储节点地址,这些 Namenode 会替我们决定。数据块默认大小是 128MB,比操作系统里面的块概念要大很多(操作系统块大小是 4KB ),我们可以根据实际需求修改 HDFS 块大小。文件的所有数据块大小都是一样的,除了最后一个,它可能小于块大小或者刚好等于块大小。文件会被分割成若干个 128MB 的小数据块,

2021-01-24 12:43:43 66427

原创 Hadoop系列之HDFS 常用命令(11)

HDFS 常用命令本节主要介绍 HDFS 常用命令,HDFS 命令和 Linux Shell 命令比较相似。每个命令将结合实例进行说明。version查看 Hadoop 版本。格式:version示例:hdfs dfs versionmkdir创建 HDFS 文件系统目录。格式:mkdir <path>示例:hdfs dfs -mkdir /user/dir1ls类似 Linux Shell 的 ls 命令。用它可以列出指定目录下的所有文件。格式:ls <

2021-01-24 12:42:57 65555

原创 Hadoop系列之HDFS数据读写流(10)

HDFS 数据读写流程HDFS 是 Hadoop 生态里面的数据存储层,它是一个具有容错性的非常可靠的分布式文件系统。HDFS 以主从( Master / Slave )架构的方式工作,Namenode 是 Master 节点上的守护进程,而 Datanode 是 Slave 节点上的守护进程。如果需要使用 HDFS 需要先按照 Hadoop,可按照下面教程安装。Ubuntu 安装 Hadoop 2.0(伪分布式)Ubuntu 安装 Hadoop 2.0(分布式)本教程将详细介绍 HDFS 数

2021-01-23 11:26:38 64691 2

原创 深度剖析Java集合之ArrayDeque

ArrayDequeArrayDeque是Deque接口的一个实现,使用了可变数组,所以没有容量上的限制。同时,ArrayDeque是线程不安全的,在没有外部同步的情况下,不能再多线程环境下使用。ArrayDeque是Deque的实现类,可以作为栈来使用,效率高于Stack;也可以作为队列来使用,效率高于LinkedList。需要注意的是,ArrayDeque不支持null值。ArrayDeque 初识说明书和继承关系还是按照国际惯例,先看一下ArrayDeque 的说明书,其实往往很多时候你的困

2021-01-23 11:22:26 65077 1

原创 Hadoop系列之HDFS 架构(9)

HDFS 架构Hadoop HDFS是一个主从(Master / Slave)架构,其中Master是Namenode节点,它主要用来存储元数据,Slave是Datanode节点,用来存储实际业务数据的节点。HDFS架构用一个Namenode和多个Datanode组成。下面详细介绍HDFS里面的各个部分。HDFS NameNodeNamenode其实就是Master节点,它主要用来存储元数据,比如数据块的数量,副本和其他细节。这些元数据是存储在Master节点的内存里面的,因为要保证元数据的快速查

2021-01-22 09:01:43 64830

原创 Hadoop系列之HDFS 简介(8)

HDFS 简介本节我们开始介绍Hadoop生态里面的其中一个组件——HDFS,包括HDFS架构,数据是怎么在HDFS存储的,HDFS的特性,比如分布式存储、容错性,高可用,可靠性以及块概念等。另外还会涉及到HDFS的操作,比如如何从HDFS读写数据,还有HDFS的机架感知算法介绍。HDFS(Hadoop Distribute File System)是大数据领域一种非常可靠的存储系统,它以分布式方式存储超大数据量文件,但它并不适合存储大量的小数据量文件。Hadoop HDFS是Hadoop和其他组件的数

2021-01-22 09:00:46 64364 2

原创 Hadoop系列之Hadoop3.x 新特性(7)

Hadoop 3.x 新特性相对于之前主要生产发布版本 Hadoop 2,Apache Hadoop 3 整合许多重要的增强功能。 Hadoop 3 是一个可用版本,提供了稳定性和高质量的 API,可以用于实际的产品开发。最低 Java 版本要求从 Java7 变为 Java8,所有 Hadoop 的 jar 都是基于 Java 8 运行是版本进行编译执行的,仍在使用Java 7或更低Java版本的用户需要升级到Java 8。下面简要介绍一下Hadoop3的主要变化。HDFS 支持纠删码(erasur

2021-01-21 13:40:00 64861

原创 Hadoop系列之Hadoop分布式缓存(6)

Hadoop 分布式缓存什么是 Hadoop 分布式缓存分布式缓存是 Hadoop MapReduce 框架提供的一种数据缓存机制。它可以缓存只读文本文件,压缩文件,jar包等文件。一旦对文件执行缓存操作,那么每个执行 map/reduce 任务的节点都可以使用该缓存的文件。分布式缓存的优点存储复杂的数据它分发了简单、只读的文本文件和复杂类型的文件,如jar包、压缩包。这些压缩包将在各个slave节点解压。数据一致性Hadoop分布式缓存追踪了缓存文件的修改时间戳。然后当job在执行时,它

2021-01-21 13:39:09 64149

原创 深度剖析Java集合之LinkedDeque

LinkedDeque前面我们学习了Queue,在Java 中的实现其实就是LinkedList,我们的使用方式就是Queue<Integer> numbers = new LinkedList<>();通过声明一个Queue接口窄化了对LinkedList的方法的访问权限,使得对象的使用更像是一个队列而不是一个原生的LinkedList我们发现LinkedList可以当做Queue使用那是因为LinkedList 实现了Queue接口,但是我们从上面的实现中注意到另外一个问题

2021-01-20 20:58:59 64696 1

原创 深度剖析Java集合之LinkedQueue

前面我们学习了Stack,学习了ArrayList ,学习了Vector,**其实Vector和ArrayList一样,都是基于数组实现的List,也就是说都是属于List 阵营的,其主要的区别是在于线程安全上**,二者的底层实现都是基于数组的,stack 集合实现了数据结构Stack 的定义,底层依赖Vector 实现也就是数组,**对栈顶元素的操作实际上是对数组尾部元素的操作**,因为这样可以避免数据的迁移。也就是说我们是用数组实现的Stack,今天我们学习一个和Stack同样重要的数据结构Queu

2021-01-20 14:05:26 64991

原创 Hadoop系列之Hadoop任务调度器(5)

Hadoop 任务调度器Hadoop 是一个可以高效处理大数据量的分布式集群,并且支持多用户多任务执行。在 Hadoop1.0 版本有一个调度器是集成在 JobTracker 里面,对于传统的 Hadoop 批处理任务(日志挖掘、Web 页面索引),这种调度器是比较合适的,但这种调度器并不具备可扩展性。在Hadoop早期版本是以一种比较简单的方式对任务进行调度的,即FIFO调度器,它是按任务的提交顺序来调度任务的,并且可以使用 mapred.job.priority 配置或者利用 JobClient 的

2021-01-20 09:44:23 64704

原创 Hadoop系列之Hadoop 高可用(4)

Hadoop 高可用在Hadoop 2.0以前的版本,NameNode面临单点故障风险(SPOF),也就是说,一旦NameNode节点挂了,整个集群就不可用了,而且需要借助辅助NameNode来手工干预重启集群,这将延长集群的停机时间。而Hadoop 2.0版本支持一个备用节点用于自动恢复NameNode故障,Hadoop 3.0则支持多个备用NameNode节点,这使得整个集群变得更加可靠。什么是 Hadoop 高可用Hadoop 2.0版本支持一个备用节点用于自动恢复NameNode故障,Hado

2021-01-20 09:42:42 64014

原创 Hadoop系列之Hadoop 常用命令(3)

Hadoop 常用命令所有的 Hadoop 命令均由 bin/hadoop 脚本引发。不指定参数运行hadoop脚本会打印所有命令的描述。用法:hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]Hadoop 有一个选项解析框架用于解析一般的选项和运行类。命令选项描述—config confdir覆盖缺省配置目录。缺省是${HADOOP_HOME}/conf。GENERIC_OPT

2021-01-20 09:41:36 63962

原创 Hadoop系列之Hadoop工作原理(2)

在大数据领域,Hadoop 已经成为一种流行的解决方案。Hadoop 的设计考虑到了很多方面,比如故障容错性,海量数据处理,数据本地化,跨异构硬件和软件平台的可移植性等等。本节课程详细介绍了 Hadoop 的3个重要的组件。

2021-01-19 14:14:40 64380

原创 Hadoop系列之什么是Hadoop(1)

Hadoop 是使用 Java 编写,允许分布在集群,使用简单的编程模型的计算机大型数据集处理的Apache 的开源框架。 Hadoop 框架应用工程提供跨计算机集群的分布式存储和计算的环境。 Hadoop 是专为从单一服务器到上千台机器扩展,每个机器都可以提供本地计算和存储。Hadoop 可以用单节点模式安装,但是只有多节点集群才能发挥 Hadoop 的优势,我们可以把集群扩展到上千个节点,而且扩展过程中不需要先停掉集群。

2021-01-19 14:03:39 64153 1

原创 深度剖析Java集合之EnumSet

EnumSet 是一个用来存储枚举常量的集合,其底层是通过位向量实现的,所以有比较好的一个性能。

2021-01-17 20:01:18 64540

原创 深度剖析Java集合之EnumMap

1. 首先我们得清楚EnumMap的使用场景,其次我们得知道EnumMap能实现的HashMap 都能实现,因为EnumMap是一种特殊的Map2. EnumMap的性能更好,这是因为EnumMap的Enum特性决定了不论是从设计上,实现上,存储上都决定了其有很好的性能3. EnumMap还有其特殊的一些特性,例如维持了自然顺序。

2021-01-17 12:02:10 65326

原创 Java数据类型—BigDecimal

1. 当我们在进行有着高精度的计算要求的时候不要使用double和float 因为它们有着精度丢失的问题2. 如果使用BigDecimal的时候,不要选择double值作为初始化的值,因为它同样会引入精度的问题3. 如果你使用BigDecimal时候设置了精度,那就同时提供舍入模式,告诉BigDecimal如何舍入从而提供你想要的精度4. BigDecimal继承了Number类和实现了Comparable接口5. BigDecimal 针对加减乘除提供可特定的方法,因为BigDecimal不支持

2021-01-16 19:23:38 64236

原创 集合工具类Arrays深度剖析

1. 关于数组的拷贝底层调用的是 System.arraycopy,所以我们除了使用Arrays工具类提供的两个拷贝方法,也可以使用System.arraycopy 方法2. List、Set 等这些集合类在Java中提供了很多可以操作方法,但是数组它是不属于集合体系下的,它是通过`[]` 进行标识的,它没有提供给用户可操作的任何方法,只提供了一个`length` 属性,所以Arrays工具类提供了很多的方法可以方便的让我们操作数组

2021-01-16 16:58:11 63406

原创 数仓工具—Hive实战之占比同比环比(10)

同比环比的计算测试数据1,2020-04-20,4202,2020-04-04,8003,2020-03-28,5004,2020-03-13,1005,2020-02-27,3006,2020-01-07,4507,2019-04-07,8008,2019-03-15,12009,2019-02-17,20010,2019-02-07,60011,2019-01-13,300CREATE TABLE ods_saleorder ( order_id int , ord

2021-01-14 21:21:47 65374

原创 数仓工具—Hive进阶之数据压缩(8)

1. 数据压缩可以发生在哪些阶段 1 输入数据可以压缩后的数据 2 中间的数据可以压缩 3 输出的数据可以压缩2. hive 仅仅是配置了开启压缩和使用哪种压缩方式,真正的配置是在hadoop 中配置的,而数据的压缩是在MapReduce 中发生的3. 对于数据密集型任务,I/O操作和网络数据传输需要花费相当长的时间才能完成。通过在 Hive 中启用压缩功能,我们可以提高 Hive 查询的性能,并节省 HDFS 集群上的存储空间。

2021-01-13 21:19:12 64417

原创 数仓工具—Hive进阶之权限管理(7)

1. 我们可以通过视图的方式达到更喜欢的权限管理,例如实现字段级别的权限控制2. 对象(表、视图、databases) 的所有权一般是归创建者所有的,包括执行授权的权限3. admin 用户可以在配置文件里进行配置,角色的命名是大小写不敏感的,这一点和SQL相同,但是用户名是的大小写敏感的

2021-01-13 17:18:39 64761

原创 数仓工具—Hive进阶之SerDe(6)

1. Hive 本身不存储数据,它与数据的交互都是通过SerDe来完成的,所以我们可以将SerDe看成是Hive 和HDFS 解耦的一个设计2. Hive 本身提供了非常多的SerDe,可以很好的满足我们的日常开发,当不能满足的时候我们也可以自己开发所需的SerDe...

2021-01-12 18:05:20 64627

原创 数仓工具—Hive语法之抽样的各种玩法(16)

1. TABLESAMPLE 抽样函数本身是不走MR 的所以执行速度很快(注意抽取多少M的时候,只能是整数M)2. 随机抽样函数需要走MR的,所以执行性能上没有TABLESAMPLE那么快,而且表达能力有限,只能获取特定的条数(limit n)3. 借助row_number实现分层抽样

2021-01-12 15:17:00 64449

原创 数仓工具—Hive进阶之数据存储格式(5)

1. 本文介绍了行式存储和列式存储的特点,以及适用场景2. 介绍了Hive 常见的存储格式,Parquet 和 ORC都是二进制存储的,都是不可直接读取的,Parquet和ORC 都是Apache 顶级项目,Parquet不支持ACID 不支持更新,ORC支持有限的ACID 和 更新3. 我们简单对比了一下Text、ORCfile 和Parquet的存储占用和查询性能,因为我们的查询比较简单加上数据本身不是很大,所以查询性能差异不是很大,但是占用空间存储的差异还是很大的

2021-01-12 13:23:35 61541

原创 我们为什么要生孩子

某一天的家庭聚会,当我正坐在角落包饺子,突然,一只小手略带用力地抓起我的手臂。我还在想,是哪个小孩跑来找我,那么多人在这干嘛偏偏要来烦我……当我转过头,只见她快哭的模样,在人群中带着哭腔嘴里嘟囔着什么我听不清的话,大概有0.1秒的困惑与迟疑,我回过神来,噢,这是我的女儿。我想大概是太过沉浸在包饺子的无意义重复的动作中,这种放空的状态居然让我遗忘了我已经是个妈妈,还有个女儿,也许,我连自己是谁都已经忘了。我的女儿,当然不找别人。没有什么缘由,在人群里我就是她认定的妈妈。我自然也没有什么理由,一把把她抱过来又

2021-01-11 21:30:23 60468 2

原创 数仓工具—Hive进阶之执行计划(4)

执行计划explain执行计划这个东西无论是在hive里还是数据库管理系统中都是很重要的,因为它可以帮助我们理解SQL的执行,从而更好的去优化SQL,而不是一味的凭经验去做一些操作,使其看起来像神学。hive 也通过explain 提供了如何让用户去获得一个查询语句的执行计划一般情况下一个SQL执行计划有两个部分:stage dependencies描述了各个stage之间的依赖性,stage plan描述了各个stage的执行细节,每个Stage 的执行计划几乎是由两部分组成的Map Operator

2021-01-09 14:44:51 61865

原创 为什么中国神仙比较负责任?

为什么西方的神仙很残暴,到处乱搞,又不承担什么责任;而东方的神仙规矩一大堆,还有岗位职责,哪怕是远古神话里的女娲、夸父、后羿这些神仙,都会为人民做出贡献。这是为什么?不是中国神仙负责,而且神仙这是一个职业,也叫神职,仙分五种,天地神人鬼。就跟你要上班一样的,工资绩效收入由天庭下发,班上的好,工资就多,升职快,工资就是香火也叫信仰之力,香火是个好东西,可以增加法力。香火越多,升的越快。香火统一收集,由天庭的账号下发,香火低到没有香火了,要被革职的,活不了多久就得去重新投胎,所以香火也等于神仙寿命。

2021-01-09 13:19:38 62722 4

原创 长沙 22 岁女子长期过量喝奶茶进ICU,血糖值过高,血液呈乳白色几乎变「甜饮」,奶茶喝多少会有危险?

近日,湖南长沙,一22岁女子由于每天过量饮用奶茶,导致糖尿病酮症酸中毒突然昏迷,被送进ICU抢救。经过医护人员的全力救治,虽然这次死里逃生,但她将终身与胰岛素为伴。据悉,患者被送进抢救室时,呈昏迷状态,血压仅为95/37mmHg,双侧瞳孔等大等圆直径约5mm,急诊科内科医生赶紧为她查血。血气分析提示“代谢性酸中毒”、血糖“HI”,测不出具体数值,急诊内科医生也被吓到了,初步诊断为“糖尿病酮症酸中毒”等。这是糖尿病的一种急性并发症,可能存在感染、肾功能衰竭、急性肝损害等,会危及生命,必须立即抢救。鉴于病情危

2021-01-09 13:14:25 60701

原创 数仓工具—Hive语法之窗口函数练习和总结(15)

窗口函数其实日常中用的是比较多的,加上之前我们分别介绍了各个窗口函数,今天我们就练习和总结一下

2021-01-09 12:25:16 60749

原创 数仓工具—Hive语法之窗口函数cume_dist和 percent_rank(14)

1. cume_dist和 percent_rank 主要用来计算百分比,主要是要理解这两个窗口函数的定义**cume_dist**: 小于等于当前值的行数/分组内总行数,**percent_rank** :窗口内当前行的RANK值-1/窗口内总行数-1(这里的rank值就是指的是rank 函数的的返回值)2. 其实这两个函数在工作中用的不是很多

2021-01-06 17:00:40 62366

数据仓库理论与实战(适用于从事数仓方向的小伙伴)

数据仓库理论与实战(适用于从事数仓方向的小伙伴)

2022-02-15

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

TA关注的人

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