练习

Hadoop练习

1.hadoop 是什么(整体概念,各个组件)

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。3大核心组件:HDFS、MapReduce、Yarn。

核心功能是:

1)提供海量数据的存储服务。

2)提供分析海量数据框架及运行平台。

2.HDFS 的架构及概念

HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目 录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务 器有各自的角色。

image-20230205113721223.png

3.yarn 的架构及概念

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

image-20230205113755732.png

4.MapReduce 的概念及作用

● MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce

● 编程容易,不需要掌握分布式并行编程细节,也可以很容易把自己的程序运行在分布式系统上,完成海量数据的计算

● MapReduce采用“分而治之”策略,一个存储在分布式文件系统中的大规模数据集,会被切分成许多独立的分片(split),这些分片可以被 多个Map任务并行处理

● MapReduce设计的一个理念就是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为移动数据需要大量的网络传输开销

● MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave。 Master上运行JobTracker,Slave上运行TaskTracker

● Hadoop框架是用Java实现的,但是MapReduce应用程序则不一定 要用Java来写

5.yarn 的常见调度器有哪些?

  1. 先进先出调度器(FIFO)

  2. 容量调度器(默认)(Capacity Scheduler)

  3. 公平调度器(Fair Scheduler)

6.MapReduce 的执行流程

image-20230205114851343.png
Map阶段执行流程

1.把输入目录下文件按照一定的标准逐个进行逻辑切片,形成切片规划。默认Split size = Block size(128M),每一个切片由一个MapTask处理(getSplits)。 2.对切片中的数据按照一定的规则读取解析返回KV键值对。默认是按行读取数据。key是每一行的起始位置偏移量,value是本行的文本内容(TextInputFormat)。 3.调用Mapper类中的map方法处理数据。每读取解析出来的一个KV ,调用一次map方法。 4.按照一定的规则对Map输出的键值对进行分区partition。默认不分区,因为只有一个reduceTask。分区的数量就是reducetask运行的数量。 5.Map输出数据写入内存缓冲区,达到比例溢出到磁盘上。溢出spill的时候根据key进行排序sort。 6.对所有溢出文件进行最终的merge合并,成为一个文件。

Reduce阶段执行过程

1.ReduceTask会主动从MapTask复制拉取属于需要自己处理的数据。 2.把拉取来数据全部进行合并merge,即把分散的数据合并成一个大的数据。再对合并后的数据排序。 3.对排序后的键值对调用reduce方法。键相等的键值对调用一次reduce方法。最后把这些输出的键值对写入到HDFS文件中。

7.hadoop-1.x 和 hadoop-2.x 的区别

  • 第一代Hadoop包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,变成了稳定版,而0.21.x和0.22.x则增加了NameNode HA等新的重大特性

  • 第二代Hadoop包含两个版本,分别是0.23.x和2.x,它们完全不同于Hadoop 1.0,是一套全新的架构,均包含HDFS Federation和YARN两个系统,相比于0.23.x,2.x增加了NameNode HA和Wire-compatibility两个重大特性

8.HDFS 适合的应用场景及不适合的应用场景

适用:

  • 兼容廉价的硬件设备

  • 流数据读写

  • l大数据集

  • 简单的文件模型

  • 强大的跨平台兼容性

不适用:

  • 不适合低延迟数据访问

  • 无法高效存储大量小文件

  • l不支持多用户写入及任意修改文件

9.hdfs client 的作用有哪些?

  • hdfs client是用户操作HDFS最常用的方式,HDFS在部署时都提供了客户端

  • hdfs client是一个库,暴露了HDFS文件系统接口,这些接口隐藏了HDFS实现中的大部分复杂性

  • 严格来说,hdfs client并不算是HDFS的一部分

  • hdfs client可以支持打开、读取、写入等常见的操作,并且提供了类似Shell的命令行方式来访问HDFS中的数据

  • HDFS也提供了Java API,作为应用程序访问文件系统的客户端编程接口

10.hdfs SecondaryNameNode 的作用?

SecondaryNameNode是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。SecondaryNameNode一般是单独运行在一台机器上

SecondaryNameNode的工作情况:

(1)SecondaryNameNode会定期和NameNode通信,请求其停止使用EditLog文件,暂时将新的写操作写到一个新的文件edit.new上来,这个操作是瞬间完成,上层写日志的函数完全感觉不到差别;

(2)SecondaryNameNode通过HTTP GET方式从NameNode上获取到FsImage和EditLog文件,并下载到本地的相应目录下;

(3)SecondaryNameNode将下载下来的FsImage载入到内存,然后一条一条地执行

EditLog文件中的各项更新操作,使得内存中的FsImage保持最新;这个过程就是EditLog和FsImage文件合并;

(4)SecondaryNameNode执行完(3)操作之后,会通过post方式将新的FsImage文件发送到NameNode节点上

(5)NameNode将从SecondaryNameNode接收到的新的FsImage替换旧的FsImage文件,同时将edit.new替换EditLog文件,通过这个过程EditLog就变小了

11.hdfs 限额/user/root/dir 文件夹下面设置最多上传三个文件,最多存放 4M 的数据

12.hdfs 上传、下载的命令是

上传:

hadoop fs -put [文件目录] [上传目录]

hadoop fs -copyFromLocal [文件目录] [上传目录]

下载:

hadoop fs -get [文件目录] [下载目录]

13.hdfs 进入、离开安全模式的命令,以及查看安全模式状态的命令

进入:

hdfs dfsadmin -safemode enter

离开:

hdfs dfsadmin -safemode leave

查看:

hdfs dfsadmin -safemode get

14.hdfs 能存储的最大文件个数受限于?有什么好的解决方案

NameNode是保存在内存中的,因此,整个HDFS可存储的文件数量受限于NameNode的内存大小

15.yarn container 的概念

相当一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等

16.yarn 常见的关于 container 的设置参数有哪些

第一个参数:container分配最小内存

yarn.scheduler.minimum-allocation-mb 1024 给应用程序container分配的最小内存

第二个参数:container分配最大内存

yarn.scheduler.maximum-allocation-mb 8192 给应用程序container分配的最大内存

第三个参数:每个container的最小虚拟内核个数

yarn.scheduler.minimum-allocation-vcores 1 每个container默认给分配的最小的虚拟内核个数

第四个参数:每个container的最大虚拟内核个数

yarn.scheduler.maximum-allocation-vcores 32 每个container可以分配的最大的虚拟内核的个数

第五个参数:nodeManager可以分配的内存大小

yarn.nodemanager.resource.memory-mb 8192 nodemanager可以分配的最大内存大小,默认8192Mb

17.ResourceManager、NodeManager 的作用

ResourceManager(RM):整个集群资源(内存、cpu等)的管理

NodeManager(NM):管理单个节点服务器资源

Kettle练习

1.从 mysql 数据库获取当前系统时间戳,判断该值是奇数则成功, 否是失败

2.设置 3 个并行任务同时从数据库获取当前系统时间,并写入 mysql 数据库表

3.循环读取题 2 写入的数据,并输出为文件,格式(JSON)

ClickHouse练习

你可能感兴趣的:(练习)