一、
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(计算)
- 配置项 :mapreduce.framework.name
- 作用 :指定运行框架
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 服务正常三、