0%

基础语法及执行顺序

查询语句语法

1
2
3
4
5
6
7
SELECT [ALL | DISTINCT] select_expr, select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[ORDER BY col_list]
[CLUSTER BY col_list| [DISTRIBUTE BY col_list] [SORT BY col_list]]
[LIMIT number]

书写次序和执行次序

顺序 书写次序 书写次序说明 执行次序 执行次序说明
1 select 查询 from 先执行表与表直接的关系
2 from 先执行表与表直接的关系 on
3 join on join
4 where where 过滤
5 group by 分组 group by 分组
6 having 分组后再过滤 having 分组后再过滤
7 distribute by
cluster by
4个by select 查询
8 sort by distinct 去重
9 order by distribute by
cluster by
4个by
10 limit 限制输出的行数 sort by
11 union/union all 合并 order by
12 limit 限制输出的行数
13 union /union all 合并
阅读全文 »

Hive数据类型

Hive种数据类型分为两种:

  1. 基本数据类型
  2. 集合数据类型

基本数据类型

Hive数据类型 Java数据类型 长度 例子
TINYINT byte 1byte有符号整数 20
SMALINT short 2byte有符号整数 20
INT int 4byte有符号整数 20
BIGINT long 8byte有符号整数 20
BOOLEAN boolean 布尔类型,true或者false TRUE FALSE
FLOAT float 单精度浮点数 3.14159
DOUBLE double 双精度浮点数 3.14159
STRING string 字符系列。可以指定字符集。
可以使用单引号或者双引号。
Hello world!
TIMESTAMP 时间类型
BINARY 字节数组

对于HiveString类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。

阅读全文 »

IDEA的扩展功能

之前每次我们想要去修改集群中的一些配置文件,采用的方式是vim,这种方式对于非常熟悉vim命令的程序员来说是很方便的,但是对于我们大多数初学者很不友好。前面我们使用过IDEA去编写Java代码,这种方式十分高效,那么如果可以使用IDEA去直接修改配置文件,那我们代码的编写效率就可以大大提升了。

IDEA中是有这样的功能的,接下来我们一起操作。

依次点击工具->部署->浏览远程主机

image-20230803215128330

阅读全文 »

HA概述

  1. 所谓HAHigh Availablity),即高可用(7 * 24小时不中断服务)。
  2. 实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFSHAYARNHA
  3. NameNode主要在以下两个方面影响HDFS集群
    • NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启。
    • NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用。

HDFS HA功能通过配置多个NameNodes(Active/Standby)实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。

阅读全文 »

Zookeeper入门

概述

Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。官网链接

Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。

image-20230731112612585

阅读全文 »

HDFS故障排除

集群安全模式

什么是安全模式

安全模式是Hadoop集群的一种状态,集群一旦处于安全模式,此时文件系统只接收读取数据请求,不接受删除、修改等变更请求。

进入安全模式场景

  • NameNode在加载镜像文件和编辑日志期间处于安全模式。

  • NameNode再接收DataNode注册时,处于安全模式。

    阅读全文 »

什么是YARN

Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。

YARN基础架构

YARN主要由ResourceManagerNodeManagerApplicationMasterContainer等组件构成。

阅读全文 »

数据压缩概述

压缩的好处和坏处

压缩的优点:以减少磁盘IO、减少磁盘存储空间。

压缩的缺点:增加CPU开销。

压缩原则

  1. 运算密集型的Job,少用压缩。
  2. IO密集型的Job,多用压缩。
阅读全文 »

OutputFormat数据输出

OutputFormat概述

OutputFormatMapReduce输出的基类,所有实现MapReduce输出都实现了OutputFormat接口。

MR中默认的使用的OutputFormat子类是TextOutputFormat

源码分析

打开IDEA,双击两下Shift键搜索OutputFormat查看源码,然后将光标防放在OutputFormat类名上按Ctrl + H查看层次结构。

阅读全文 »

MapReduce的构成

image-20230718113427534

从流的角度

Input ---> InputFormat --->Mapper--->Shuffle--->Reducer--->OutputFormat--->Output

从不同的阶段

Map阶段---->Reduce阶段

Map阶段 ---> Shuffle(Map后半段+Reduce前半段)--->Reduce阶段

从源码的角度

MapTaskmap ---> sort

1
2
mapPhase = getProgress().addPhase("map", 0.667f);
sortPhase = getProgress().addPhase("sort", 0.333f);

ReduceTask : copy ---> sort ---> reduce

1
2
3
copyPhase = getProgress().addPhase("copy");
sortPhase = getProgress().addPhase("sort");
reducePhase = getProgress().addPhase("reduce");
阅读全文 »