期末复习-Hadoop名词解释+简答题+代码题hive
目录
一、名称解释(8选5)
1.什么是大数据
2.大数据的5V特征
3.什么是SSH
4.HDFS(p32)
5.名称节点
6.数据节点
7.元数据
8.倒排索引
9.单点故障
10.高可用
11.数据仓库
二、简答题
1.简述Hadoop的优点及其含义
2.简述独立模式、伪分布式模式和完全分布式模式部署Hadoop的区别
3.简述HDFS的健壮性
4.简述YARN基本架构的组成部分及其作用
5.简述不同类型ZNode的区别
6.简述Hadoop高可用集群初次启动时的步骤
7.简述Hive中分区和桶的作用
一、名称解释(8选5)
1.什么是大数据
如果从字面意思来看,大数据指的是海量数据;
从大数据特点来看,大数据具有海量、流转快、数据类型丰富及价值密度低等特点;
如果从技术角度来看,大数据的战略意义不仅在于掌握庞大的数据,还包括对这些数据进行有效处理;
换言之,如果把大数据比作一种产业,那么这种产业盈利的关键在于提高对大数据的加工能力,通过加工技术实现数据增值
2.大数据的5V特征
大数据的特征包括大量(Volume)、真实(Veracity)、多样(Variety)、低价值密度(Value)和高速(Velocity),这5个特征称为大数据的5V特征,具体介绍如下
1.大量
大量是指大数据中的数据规模巨大,随着互联网技术的发展,用户行为数据都可以被记录,数据呈爆炸式增长,需要采集、存储和计算的数据量能够达到PB和EB级,甚至是ZB级。
2.真实 真实是指大数据的质量,大数据的内容是与真实世界息息相关的,在一定程度上可以反映实际情况。虽然真实不一定代表准确,但虚假数据营造出来的准确一定不是真实的,这也是数据分析的基础。
3.多样 多样是指大数据的数据类型和来源的多样性,其中,数据类型的多样性是指大数据的数据类型可以是结构化数据、半结构化数据或非结构化数据;来源多样性是指大数据的数据源可以是多种设备,包括服务器、移动终端等。
4.低价值密度 低价值密度是指海量数据中有价值的内容的密度相对较低,如何结合企业业务通过机器学习算法挖掘数据的价值,是大数据时代最需要解决的问题
5.高速
高速是指数据的增长速度和处理速度很快。每天,各行各业的数据库都产生呈现爆炸式的增长。在许多场景下,数据都具有时效性。例如,搜索引擎要在几秒内呈现用户所需的数据。当系统面对快速增长的海量数据时,必须高速处理,快速响应。
3.什么是SSH
SSH是一种网络协议,主要用于在不安全网络上提供安全的远程登录和其他安全网络服务。它能够加密网络连接,确保在客户端和服务器之间传输的数据不会轻易被窃取或篡改。SSH通常用来替代早期的Telnet和Rlogin等不安全的协议。
4.HDFS(p32)
HDFS是Hadoop Distributed File System的缩写,中文称为Hadoop分布式文件系统。它是Apache Hadoop项目的一部分,专为大规模数据集的处理而设计,具有以下特点:
1.存储大文件 2.高容错性 3.简单的一致性模型 4.移动计算比移动数据更经济 5.可移植性
5.名称节点
NameNode是HDFS集群的名称节点,通常称为主节点。如果NameNode由于故障原因而无法使用,那么用户就无法访问HDFS。也就是说,NameNode作为HDFS的主节点,起着至关重要的部分
6.数据节点
DataNode是HDFS集群中的数据节点,通常称为从节点,其主要功能如下:
-
存储Block
-
根据NameNode的指令对Block进行创建、复制、删除等操作
-
定期向NameNode汇报自身存储的Block列表及健康状态
-
负责为客户端发起的读写请求提供服务
7.元数据
MetaData用于记录HDFS文件系统的相关信息,这些信息称为元数据,元数据的内容包括文件系统的目录结构、文件名、文件路径、文件大小、文件副本数、文件与Block的映射关系,以及Block与DataNode的映射关系等信息
8.倒排索引
倒排索引是文档检索系统中最常用的数据结构,被广泛应用于全文搜索引擎。倒排索引主要用来存储某个单词或词组在一组文档中的存储位置的映射,提供了可以根据内容查找文档的方式,而不是根据文档确定内容,因此称为倒排索引。带有倒排索引的文件称为倒排索引文件,简称倒排文件
9.单点故障
在HDFS集群中,NameNode是主节点,它的运行状态决定着HDFS集群是否可用。然而在Hadoop设计之初,HDFS集群只能存在一个NameNode节点,这种设计的缺点是NameNode节点一旦发生故障,就会导致HDFS集群不可用,这就是所谓的单点故障问题
10.高可用
为了解决单点故障问题,Hadoop 在更新迭代过程中允许一个 HDFS集群中存在多个NameNode 节点,其中一个 NameNode 节点处于 Active(活动)状态,其他NameNode 节点处于 Standby(备用)状态。处于 Active 状态的NameNode 管理 HDFS 的元数据信息,并且与客户端进行交互;处于 Standby 状态的NameNode 节点仅同步处于 Active状态的 NameNode 节点管理的元数据,一旦发现处于 Active 状态的NameNode 发生故障,Hadoop 就会借助ZooKeeper 从多个处于 Standby状态的 NameNode 中选举出一个新的 NameNode 节点,并将其状态更改为 Active,从而确保整个 HDFS集群可以正常运行这就是所谓的 HDFS 高可用集群。
11.数据仓库
数据仓库是一个面向主题、集成的、相对稳定和反映历史变化的数据集合,用于企业或组织的决策分析。
二、简答题
有的来自于书本,有的来自于AI(因为书本内容过多)
1.简述Hadoop的优点及其含义
“沉淀”往往是通过对技术实践和经验进行总结和提炼,形成深刻的认识和经验,从而提高技术水平和解决实际问题的能力。Hadoop 作为分布式计算平台,它能够处理海量数据并对数据进行分析。经过多年的发展,Hadoop 已经形成了以下几点优势。 1.低成本
企业可以使用多台廉价的计算机组建集群环境,通过分布式系统处理大规模数据集,而不是通过高性能的单台计算机处理大规模数据集,并且 Hadoop 是开源大数据处理框架,这大幅降低了企业的使用成本。
2.高可靠性 Hadoop 自动维护数据文件的多份副本,可以有效避免数据丢失的情况发生。
3.高容错性
若执行计算的过程中某个计算机宕机,那么 Hadoop 会自动将该计算机上执行的任务转移到其他计算机上继续执行,以防任务执行失败。 4.高效率 Hadoop 可以高效地执行并行计算,并且Hadoop 能够在各个计算机之间动态地移动计算,以确保每台计算机在执行计算时可以最快速地获取将要处理的数据,以此提高计算效率。
5.高扩展性 Hadoop 可以随时通过添加更多的计算机增加集群的存储和计算能力。
2.简述独立模式、伪分布式模式和完全分布式模式部署Hadoop的区别
Hadoop 支持多种部署模式,包括独立模式(Local Mode)、伪分布式模式(Pseudo- Distributed Mode)和完全分布式模式(Fully-Distributed Mode)。
1.独立模式 独立模式是一种在单台计算机的单个JVM进程中模拟Hadoop 集群的工作模式,该模式部署的Hadoop 集群实际上并不属于分布式文件系统,而是直接读写本地操作系统的文件系统,此模式部署的 Hadoop 通常用于快速安装并体验 Hadoop 的功能,并不适用于实际生产环境。
2.伪分布式模式 伪分布式模式是一种在单台计算机的不同JVM进程中运行Hadoop 集群的工作模式,该模式部署的Hadoop 集群实际上是一个伪分布式系统,因Hadoop 集群的所有守护进程都运行在一台计算机中,并不能体现出分布式的特点,所以伪分布式模式部署的Hadoop 通常用于在开发环境中进行测试和调试,并不适用于实际生产环境。
3.完全分布式模式 完全分布式模式是一种在多台计算机的JVM进程中运行 Hadoop 集群的工作模式,该模式部署的 Hadoop 集群属于分布式系统,因为 Hadoop 集群的每个守护进程都运行在不同的计算机中,所以完全分布式模式部署的 Hadoop 通常可作为实际生产环境的基础。
3.简述HDFS的健壮性
HDFS(Hadoop Distributed File System)是Hadoop生态系统中的核心组件之一,它设计用于在商用硬件上运行,处理大量数据。以下是HDFS的几个关键特性,这些特性共同确保了其健壮性:
心跳机制:
-
HDFS中的数据节点(DataNode)会定期向名称节点(NameNode)发送心跳信号,以表明它仍然在线并且运行正常。
-
如果名称节点在预定时间内没有从某个数据节点接收到心跳,它会认为该数据节点可能已经失败或无法通信,并标记该节点为死亡状态。
-
名称节点随后会安排该数据节点上的数据块在其他数据节点上复制,以维持数据的冗余度。
副本机制:
-
HDFS默认为每个数据块创建三个副本,并将这些副本分布在集群中的不同数据节点上。
-
副本放置策略考虑了机架感知,通常一个副本放在本地机架的一个节点上,另一个副本放在不同机架的节点上,第三个副本也放在另一个机架的节点上。
-
这种分布策略可以增强数据的可靠性和读取性能,并且在发生单个节点或整个机架故障时保护数据。
数据完整性校验:
-
HDFS在写入数据时会为每个数据块生成校验和(Checksum),并在读取数据时验证这些校验和。
-
如果在读取数据块时校验和验证失败,HDFS会从其他副本中读取数据块,并尝试修复损坏的副本。
安全模式:
-
当名称节点启动时,它会先进入安全模式,在此模式下,名称节点不会执行任何数据块的复制或删除操作。
-
在安全模式下,名称节点会收集各个数据节点的块报告,确保系统中的副本数量符合配置要求。
-
只有当足够数量的数据块报告被接收,并且所有必要的数据块都有足够的副本时,名称节点才会退出安全模式。
快照:
-
HDFS支持对文件系统的一部分进行快照,这允许用户在不影响正在进行的操作的情况下,创建文件系统某个时间点的只读副本。
-
快照对于数据备份、灾难恢复和实验性数据分析非常有用,因为它们提供了一种回滚到之前状态的方法,而无需担心数据丢失。
这些特性共同确保了HDFS即使在面临硬件故障、网络问题或其他系统异常时,也能保持数据的完整性和系统的稳定性。
4.简述YARN基本架构的组成部分及其作用
YARN 基本架构由 ResourceManager、ApplicationMaster、NodeManager 和 Container 组成,其中,ResourceManager 为全局资源管理器,负责整个系统的资源管理和分配;ApplicationMaster每个应用程序特有的,负责单个应用程序的管理;NodeManager 负责在节点上启动和管理Container(容器);Container 封装了每个应用程序使用的资源。
5.简述不同类型ZNode的区别
在 ZooKeeper 中,每个 ZNode 都是有生命周期的,其生命周期的长短取决于ZNode 的类型。ZNode 的类型主要分为持久节点(PERSISTENT)、临时节点(EPHEMERAL)和顺序节点(SEQUENTIAL)。
1.持久节点 持久节点是 ZoOKeeper 中最常见的一种 ZNode 类型,它的生命周期取决于用户何时进行删除操作,持久节点被创建后,便会一直存在于 ZooKeeper 中,除非主动删除持久节点。
2.临时节点 与持久节点有所不同,临时节点的生命周期取决于客户端会话。客户端会话是指客户端与 ZooKeeper 成功建立连接后创建的会话,若此时在 ZooKeeper 中创建临时节点,则在客户端与 ZooKeeper 断开连接时,临时节点便会被自动清理。需要注意的是,临时节点不能挂载子节点,只能存储数据。
3.顺序节点 顺序节点基于持久节点和临时节点创建,因此可以将顺序节点分为持久顺序节点和临时顺序节点。在创建顺序节点时,默认会在顺序节点的基础上设置一个不断增加的序号,该序号对于当备顺序节占的父节点来说是唯一的,这样便于记录父节点中每个子节点创建的先后顺序。
6.简述Hadoop高可用集群初次启动时的步骤
1.启动JournalNode
hdfs -- daemon start journalnode
2.格式化HDFS文件系统
hdfs namenode -format
3.同步NameNode
scp -r /export/data/hadoop/namenode/ hadoop2:/export/data/hadoop/
4.格式化ZKFC
hdfs zkfc -formatZK
5.启动HDFS
start-dfs.sh
6.启动YARN
start-yarn.sh
7.简述Hive中分区和桶的作用
分区:分区是指根据指定分区规则将表的整体数据划分为多个独立的数据进行存储,每个独立的数据看作一个分区,每个分区存储在HDFS文件系统的不同目录。当表分区后,便可以通过查询某个分区获取想要的数据,从而避免全表扫描,提升查询效率。
桶:桶是指根据指定分桶规则将表的数据随机、均匀地划分到不同的桶进行存储,每个桶存储在 HDFS文件系统的不同文件。为表创建桶的目的是有效避免数据倾斜,因分区虽然可以将表的数据划分多个分区,但是每个分区的大小可能不一致,即有些分区内的数据量较大,而有些分区内的数据量较小,当查询数据量较大的分区时速度会很慢,反之速度会很快,这就是数据倾斜。
三、代码题hive
Hive实践作业三
7.5 数据库操作
7.6 表操作1.在hadoop1中执行start-dfs.sh和start-yarn.sh分别启动hdfs和yarn,
保证hadoop完全分布式集群正常启动,
hadoop1 jps NameNode ResourceManager
hadoop2 jps NodeManager DataNode SecondaryNameNode
hadoop3 jps NodeManager DataNode
2.在hadoop3中执行systemctl status mysqld验证mysql80正常启动
3.在hadoop3中启动MetaStore服务,hive --service metastore
4.hadoop3复制会话,启动HiveServer2服务,hive --service hiveserver2
5.hadoop3再次复制会话,jps 多了两个RunJar进程,元数据存储系统和HiveServer2正常启动
6.在hadoop2中,执行 hive 登录
7.hadoop2复制会话,执行 beeline -u jdbc:hive2://hadoop3:10000 -n root 登录8.在登录的hive中,输入:show databases;9.数据库操作
创建数据库 create database homework;
查看数据库 describe homework;
切换数据库 use homework;
10.表操作
complex表的创建
create table complex(
col1 array<int>,
col2 map<int,string>,
col3 struct<a:string,b:int,c:double>,
col4 string,
col5 int
);complex表的查看
desc complex;user_p分区表的创建
create table user_p (id int, name string)
partitioned by (gender string)
row format delimited fields terminated by ',';user_p分区表的查看
desc user_p;array_test内部表的创建
create table array_test(
name string,
score array<int>
)
row format delimited fields terminated by '@'
collection items terminated by ',';array_test内部表导入数据zhangshan@89,88,97,80
lisi@90,95,99,97
wangwu@90,77,88,79
zhaoliu@91,79,98,89文本文件array_test.txt需要先创建,在hadoop3上哦load data local inpath '/root/array_test.txt' into table homework.array_test;array_test内部表查询数据
select * from homework.array_test;map_test内部表的创建
create table map_test(
name string,
score map<string,int>
)
row format delimited fields terminated by '@'
collection items terminated by ','
map keys terminated by ':';map_test内部表导入数据zhangshan@math:90,english:89,java:88,hive:80
lisi@math:98,english:79,java:96,hive:92
wangwu@math:88,english:86,java:89,hive:88
zhaoliu@math:89,english:78,java:79,hive:77文本文件map_test.txt需要先创建,在hadoop3上哦load data local inpath '/root/map_test.txt' into table homework.map_test;map_test内部表查询数据
select * from homework.map_test;select name from homework.map_test;select score from homework.map_test;