Hadoop 大数据课程复习知识点

一、

1.负责集群资源调度与管理的组件

ResourceManager: 全局资源管理器,负责资源分配和调度

NodeManager: 每个节点上的代理,管理本地资源和任务

YARN:分布式资源调度

Mesos:偏向于资源的抽象和管理

2. HDFS操作或查看文件或目录信息

查看文件目录列表:hdfs dfs -ls-R /path

查看文件内容:hdfs dfs -cat /path/file

3.分得清数据格式

TextFile:纯文本,行存储

SequenceFile:二进制键值对

RCFlie:行列存储相结合,与orc相同

Avro:行存储

Parquet:行式存储

ORC:数据按照行分块,每个块按照列存储

4.不同的数据格式适合于做什么样的数据分析

TextFile:小数据集、日志文件、调试阶段

Parquet/ORC:大规模数据分析、聚合查询、数据仓库

Avro:数据序列化、跨语言数据传输

SequenceFile:MapReduce中间数据存储

5.基本的Linux命令,如:赋予权限chmod,如:物主具有可读写执行,同组用户可读,其他用户可读。chmod+xxx file

二进制:r(读)=4 w(写)=2 x(执行)=1

Chmod 7(主)5(组)5(其他) file

6.SSH免密登录,生成密钥,生成命令是什么

生成密钥对ssh-keygen -t rsa

将公钥复制到目标机器ssh-copy-id root@目标IP

7.在mapreduce模型中,shuffle阶段作用是什么

将相同的key排列在一起

分区:根据Key分配到对应Reduce

排序:按Key进行排序

合并:本地合并减少数据量

分组:相同Key的数据聚合

数据压缩:减少网络传输

8 .HDFS集群中,NameNode,DataNode的主要作用是什么

NameNode:管理文件系统命名空间,存储元数据(文件目录树、文件块映射),记

录DataNode信息(存储元数据以及处理客户端发出的请求)

DataNode:实际存储数据块,负责块的读写、复制、删除(真正存储数据的地方,文件以数据块的形式进行存储)

9.在Hive中创建分区表,按省市两级(两个字段)进行分区的命令

CREATE TABLE user(id int, name string)

PARTITIONED BY (province string, city string)

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

10.在Hadoop集群中,YARN Resource Manager WEB管理端的端口号

默认端口8088

11.调用HDFS的API上传文件,哪个类主要提供了上传的功能

FileSystem类(api入口)javaclass(真正实现)两者都出现选后者

12.查看名称节点或数据节点的状态的命令

查看名称节点:hdfs haadmin -getServiceState nn1

13.将本地文件加载到分区命令表

LOAD DATA LOCAL INPATH '/local/path/file.txt'

INTO TABLE user_info

PARTITION (province='福建省', city='厦门市');

14.MapReduce程序中,Redecer输入键值对的类型是什么

接收map端传来的键值对类型

Key类型:通常为Text或WritableComparable

Value类型:通常为IntWritable或Writable

15.关于HDFS副本放置的策略是什么

机架感知

第1个副本:放在客户端所在节点(如果是集群外提交,随机选节点)

第2个副本:放在与第1个副本不同机架的节点上

第3个副本:放在与第2个副本相同机架的不同节点上

16.Hive中创建内部表或外部表的时候,执行Drop Table后,数据的存在情况

内部表(管理表)Drop后元数据被删除,实际数据也被删除(删除表数据)

外部表Drop后元数据被删除,实际数据保留不受影响(不会删除表数据)

二、

1.HIVE分区表设计

1)HIVE分区的特点或优缺点,用途

优点:提高查询效率、便于数据管理、减少数据扫描量

缺点:分区过多会导致元数据膨胀、分区层级过深影响性能、小分区容易产生小文件问题

用途:按时间分区、按业务维度分区、数据仓库分层管理

2)编写HIVEQL语句(HQL),创建库或表

建库

CREATE DATABASE IF NOT EXISTS test;

建表

CREATE TABLE IF NOT EXISTS test.student(

id string COMMENT 'student id'

name string COMMENT 'student name'

age int COMMENT 'student age')

COMMENT 'Student Information'

ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '

STORED AS TEXTFILE

LOCATION '/user/hive/warehouse/test.db/student';

3)将数据加载到对应分区(加载数据既可以从本地加载,也可以从HDFS上加载)

-- 从本地加载

LOAD DATA LOCAL INPATH '/test/hadoop/load_male.txt' INTO TABLE people PARTITION (sex='male');

LOAD DATA LOCAL INPATH '/test/hadoop/load_female.txt' INTO TABLE people PARTITION (sex='female');

-- 从HDFS加载

LOAD DATA LOCAL INPATH '/test/hadoop/load_male.txt'++++OVERWRITE++++ INTO TABLE people PARTITION (sex='male');

LOAD DATA LOCAL INPATH '/test/hadoop/load_female.txt' ++++OVERWRITE++++ INTO TABLE people PARTITION (sex='female');

2.HDFS读写过程(读数据的过程,写数据的过程)

1)HDFS读写过程与namenode与datanode进行交互,掌握交互过程

2)HDFS读写过程以数据块的方式进行传输

读数据:客户端与 NameNode 交互,获取数据块位置信息

客户端与 DataNode 交互,并行读取数据块

客户端完成读取,合并数据块返回

写数据:客户端与 NameNode 交互,请求创建文件

客户端与 DataNode 交互(Pipeline 机制)

确认ACK

通知完成,NameNode 元数据更新

3)流水线的复制机制(PipeLine机制)

客户端将数据分成Packet,依次发送给第一个DataNode

第一个DataNode存储数据后,转发给第二个DataNode

第二个存储后转发给第三个DataNode

形成一条数据流Pipeline,提高写入效率

4)流水线写入完成后,如何知道写入成功(从namenode和datanode两种节点)

DataNode层面:收到所有DataNode的ACK确认包,表示数据成功写入

NameNode层面:DataNode向NameNode上报块信息,NameNode更新元数据,返回成功响应给客户端

3.MapReduce机制与shuffle机制

例如给定一些单词,统计单词频率

掌握Map阶段输出内容与格式

输入:<偏移量, 一行文本>

输出:<单词, 1>

Key类型:Text(单词)

Value类型:IntWritable(计数)

shuffle机制对Map阶段是如何处理的

从map输出开始,传送map输出到Reduce作为输入的过程,对同一个map中输出的键相同的数据先进行整合,减少传输的数据量,并将数据按键排序

Reduce的输出和输入

Reduce输入:<单词, 次数列表>

Reduce输出:<单词, 总次数>

4.Hadoop集群的规划与部属

给定一个场景:三台服务器,一台master,两台slave

部署服务器:改配置文件,掌握核心的配置及配置项,以及作用是什么

1. hadoop-env.sh(环境)

  • 配置项 :JAVA_HOME
  • 作用 :指定JDK路径

2. core-site.xml(入口)

  • 配置项 :fs.defaultFS
  • 作用 :指定HDFS的入口地址

3. hdfs-site.xml(存数据)

  • 配置项 :dfs.replication
  • 作用 :设置数据块的副本数

4. yarn-site.xml(资源)

  • 核心配置项 :yarn.resourcemanager.hostname + yarn.nodemanager.aux-services
  • 作用 :指定资源管理器的主机,让Reduce能拉取Map结果

5. mapred-site.xml(计算)

6. workers(旧版叫slaves)(从属)

  • 配置项 :写入所有从节点的主机名
  • 作用 :告诉Master有哪些机器作为数据存储节点

2)格式化及启动操作,掌握相关的格式化命令及启动和停用Hadoop平台相关操作

格式化: hdfs namenode -format

启动集群:start-all.sh(一键启动)分步启动:start-dfs.sh(启动 NameNode、DataNode、SecondaryNameNode) + start-yarn.sh(启动 ResourceManager、NodeManager)

关闭集群:stop-all.sh(一键关闭)分步关闭:stop-dfs.sh + stop-yarn.sh

3)检查Hadoop集群是否启动成功有哪些方法

使用 jps 命令

在 Master 上执行,应看到进程:NameNode、SecondaryNameNode、ResourceManager

在每台 Slave 上执行,应看到进程:DataNode、NodeManager

若以上核心进程均存在,则基础服务启动成功

访问 Web UI 界面

HDFS 监控页面查看 "Live Nodes" 数量是否与 Slaves 数量一致

YARN 监控页面查看集群节点状态和资源是否正常

执行 HDFS 文件系统命令

执行 hdfs dfs -ls /,若命令能成功运行且无连接异常报错,则说明 HDFS 服务正常三、