无填空
有多选
环境配置不考写java代码

题型 数量 总分
单选 20 20
多选 10 20
判断 10 10
简答 6 30
综合 实验中 10
其他 10

IMG_0218.JPGIMG_0219.JPG

简答题:

词频统计MapReduce过程

  1. WordCount的用户程序(MapReduce编写)被分发部署到集群的多台机器上,其中一台机器作为Master,负责协调调度作业的执行,其余机器作为Worker,可以执行Map任务或Reduce任务。
  2. 系统分配一部分worker执行Map任务,一部分执行Reduce任务。MapReduce将输入文件切分成M个分片,Master将M个分片分给N个Worker来处理。
  3. 执行Map任务的Worker读取输入数据,执行Map操作,输出一系列形式的中间结果,并将其保存在内存的缓冲区中。
  4. 缓存区内的中间结果会被定期刷写到本地磁盘上,并被划分为R个分区,Master会记录这个R个分区在磁盘上的存储位置,并通知执行Reduce任务Worker前来取走属于自己的数据。
  5. 执行Reduce任务Worker收到Master通知后,会前来领走数据,一个执行Reduce任务Worker可能会从多个Map机器上领取数据,当所有数据都取回后,会对其按键值对进行排序,使得有相同key的键值对聚集在一起,然后执行Reduce操作。
  6. 执行Reduce任务Worker遍历中间数据,对每一个唯一的key执行Reduce函数,结果写入到输出文件中,执行完毕后,唤醒用户程序,返回结果。

SecondaryNameNode的作用和工作原理

作用:

  • 可以完成EditLog和FsImage的合并操作,减小了EditLog大小,缩短名称节点重启时间
  • 作为名称节点的检查点,保存名称节点中的元数据信息

工作原理:
每隔一段时间,第二名称节点会和名称节点通信,请求停止使用EditLog,名称节点会暂停使用,将新到达的写操作添加到EditLog.new,第二名称节点通过HTTP GET将原有的EditLog和FsImage拉回本地,在内存中逐条执行EditLog操作,是FsImage保持最新,合并结束后会将合并后最新的FsImage通过POST发回名称节点,名称节点会将新的EditLog替换原有EditLog,新的FsImage替换原有的FsImage。

HBase四维坐标和三级寻址

四维坐标:HBase采用行键、列族、列限定符、时间戳来确定一个单元格。
三级寻址:
客户端首先访问ZooKeeper,其中中保存了-ROOT-表的Region信息,接着访问-ROOT-表,其中记录了.META.表的Region信息,接着访问.META.表,其中记录了所有用户数据表的Region位置信息。

YARN的组成架构和处理流程

组成架构:
YARN承担了原有JobTracker的资源管理调度功能,其中ResourceManager负责资源管理;ApplicationMaster负责作业调度和监控,NodeManager负责单个节点的资源管理。
ResourceManager又包括ApplicationManager和Scheduler。
处理流程:

  1. client向YARN提交应用程序,包括ApplicationMaster程序和启动命令。
  2. ResourceManager接受客户端请求,分配容器并与对应的NodeManager通信,要求在容器中启动ApplicationMaster
  3. ApplicationMasterResourceManager注册
  4. ApplicationMaster接受客户端的资源请求,向ResourceManager协调获取资源,并二次分发给内部的应用程序,并要求NodeManager启动任务。
  5. 各个任务通过RPC协议向ApplicationMaster汇报进度,以便在失败时可以重启
  6. 当应用程序结束后,ApplicationMaster向ResourceManager申请销毁容器

Spark组成元素

image.png
Spark Core:是 Spark 的核心,主要负责内存计算、任务调度、部署模式、故障恢复、存储管理等功能。主要面向批数据处理,Spark建立在统一的抽象RDDs(Resilient Distributed Datasets,弹性分布式数据集)之上,可以以基本一致的方式应对不同大数据处理场景。
Spark SQL:允许开发人员直接处理RDD,同时也可以查询Hive和HBase等外部数据源。
Spark Streaming:支持高吞吐量、可容错处理的实时流数据处理,其核心思想是将流数据分解成一系列短小的批处理作业,每个短小的批处理作业都可以使用Spark Core进行快速处理。
MLlib:主要用于机器学习领域,它实现了一系列常用的机器学习和统计算法,如分类、回归、聚类、主成分分析等算法。
GraphX:是Spark中用于图计算的API,可认为是Pregel在Spark上的重写及优化。这个模块主要支持数据图的分析和计算,并支持图形处理的 Pregel API 版本。GraphX 包含了许多被广泛理解的图形算法,如 PageRank。
参考:

编程

创建用户

  1. # 创建名为hadoop的用户 -t自动化创建一个用户的登录目录 -s指定用户登录后使用的命令
  2. sudo useradd -m hadoop -s /bin/bash
  3. sudo passwd hadoop
  4. # 增加管理员权限
  5. sudo adduser hadoop sudo

单机配置SSH免密登录并验证

  1. # 登录本机
  2. ssh localhost
  3. cd ~/.ssh/
  4. # ssh-keygen生成密钥,
  5. ssh-keygen -t rsa
  6. # 将密钥加入授权
  7. cat ./id_rsa.pub >> ./authorized_keys
  8. # scp secure cppy linux远程拷贝文件
  9. scp ~/.ssh/id_rsa hadoop@slave1:home/hadoop/
  10. # 进入其他从节点,执行以下命令
  11. cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

配置环境变量

  1. # 在master节点上讲hadoop安装目录加入Path变量中
  2. export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
  3. # 保存后执行,使配置生效
  4. source ~/.bashrc

配置文件

core-site.xml

  1. <configuration>
  2. <property>
  3. <name>hadoop.tmp.dir</name>
  4. <value>file:/usr/local/hadoop/tmp</value>
  5. </property>
  6. <property>
  7. <name>fs.defaultFS</name>
  8. <value>hdfs://localhost:9000</value>
  9. </property>
  10. </configuration>

hdfs-site.xml

  1. <configuration>
  2. <property>
  3. <name>dfs.replication</name>
  4. <value>1</value>
  5. </property>
  6. <property>
  7. <name>dfs.namenode.name.dir</name>
  8. <value>files:/usr/local/hadoop/tmp/dfs/name</value>
  9. </property>
  10. <property>
  11. <name>dfs.datanode.data.dir</name>
  12. <value>files:/usr/local/hadoop/tmp/dfs/data</value>
  13. </property>
  14. </configuration>

mapred-site.xml

  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. </property>
  6. </configuration>

yarn-site.xml

  1. <configuration>
  2. <property>
  3. <name>yarn.nodemanager.aux-services</name>
  4. <value>mapreduce_shuffle</value>
  5. </property>
  6. </configuration>

名称节点格式化

  1. ./bin/hadoop namenode -format
  2. ./sbin/start-dfs.sh #启动hadoop
  3. ./sbin/stop-dfs.sh
  4. ./sbin/start-yarn.sh

dfs操作

  1. hdfs dfs -mkdir -p /user/hadoop1
  2. hdfs dfs -mkdir /user/hadoop1/input
  3. hdfs dfs -put /home/hadoop1/myLocalFile.txt input
  4. ./bin/hdfs dfs rm r /user/hadoop1/input
  5. ./bin/hdfs dfs cat input/myLocalFile.txt

HBase操作

  1. create student’,{NAME => 'course'},{NAME => 'information'}
  2. put 'student' '9528' ,'coourse:math','99'

https://h6iuq6sgbh.feishu.cn/docs/doccn09J69WQTQQVl5qIgBgkYBc