大数据笔记整理-09/18

一颗蔬菜 2019-09-18 PM 40℃ 0条
Hadoop的组件及作用

HDFS架构
NameNode
(1)负责管理HDFS文件目录和元数据信息,元数据信息是以"fsimage"(HDFS元数据镜像文件)和"editlog"(HDFS文件改动日志)两个文件形式存放在本地磁盘。
(2)负责监控各DataNode的健康状态,一旦发现某个DataNode宕机,则将该DataNode移出HDFS并重新备份数据。
DataNode
(1)负责实际的数据存储,并通过HeartBeat机制将数据信息定期汇报给NameNode。
Secondary NameNode
(1)负责NameNode的元数据备份
(2)负责元数据镜像文件fsimage和文件改动日志editlog的合并。注意,为了减轻NameNode的压力,NameNode并不会自己合并fsimage和editlog,而是将文件存储到磁盘上,交给Secondary NameNode完成。

MapReduce架构
Job Tracker
(1)负责资源监控和作业调度。监控所有Task Tracker与作业的健康状态,一旦发现失败情况后,会将相应的任务转移到其他节点跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉调度器,调度器会在资源出现空闲时,选择合适的任务使用这些资源。
Task Tracker
(1)周期性地通过HeartBeat将本节点上的资源使用情况和任务运行进度汇报给Job Tracker,同时接收Job Tracker发送过来的命令并执行相应的操作,如启动新任务、杀死任务。
HDFS中block的副本存放策略

当用户上传一个大的文件到HDFS上时,该文件会被切分成若干个block,分别存储到不同的DataNode。为了保证数据可靠和并发读取,同一个block会以串行的方式写到3(默认是3,该参数可配置)个不同的DataNode上。
HDFS采用一种称为机架感知的策略来改进数据的可靠性、可用性和网络带宽的利用率。通过一个机架感知的过程,NameNode可以确定每一个DataNode所属的机架id。
存放策略是将第一个副本存放在本地机架的某个节点上,第二个副本存放在同一个机架的另一个节点上,第三个副本存放在不同机架的节点上。这里说的本地是相对客户端来说的,也就是说一个用户正在用一个客户端向HDFS写入数据,若该客户端上有数据节点,那么客户端就可作为本地节点。若客户端上数据节点空间不足,则把客户端所在机架的另一个节点作为本地节点。
MapReduce的缺点

(1)基于磁盘的计算,I/O输出高,性能差,不适合做迭代计算。
(2)Map()和Reduce()的表达能力有限。
(3)JobTracker任务过重,即负责资源管理又负责任务调度。
Hive内部表和外部表的区别

从本质上来讲,内部表和外部表的区别就是操作权限的不同。内部表的操作权限完全由Hive掌握,而外部表的数据是多个工具共享的,Hive只有数据的使用权,没有数据的所有权。当Hive删除一个内部表时,表的元数据和数据本身都会被删除,而当Hive删除一个外部表时,只会删除表的元数据信息。

标签: 面试

非特殊说明,本博所有文章均为博主原创。