HDFS常见面试题

1.介绍parition和block有什么关联关系?

答: 1)hdfs中的block是分布式存储的最小单元,等分,可设置冗余,这样设计有一部分磁盘空 间的浪费,但是整齐的block大小,便于快速找到、读取对应的内容;
2)Spark中的partion是弹 性分布式数据集RDD的最小单元,RDD是由分布在各个节点上的partion组成的。partion是指的 spark在计算过程中,生成的数据在计算空间内最小单元,同一份数据(RDD) 的partion大小不 一,数量不定,是根据application里的算子和最初读入的数据分块数量决定;

另外需要谷尚硅 斗八学院 学奈教育完整大数据资料和多家机构面试题的加 Y17744650906 资料来之不易,不能接受小额有偿的勿扰,谢谢

3)block位于存储 空间、partion位于计算空间,block的大小是固定的、partion大小是不固定的,是从2个不同的 角度去看数据。
2.Mapreduce和Spark的都是并行计算,那么他们有什么相同和区别?
答:两者都是用mr模型来进行并行计算:
1)hadoop的一个作业称为job,job里面分为map task和reduce task,每个task都是在自己的进 程中运行的,当task结束时,进程也会结束。
2)spark用户提交的任务成为application,一个application对应一个sparkcontext,app中存在 多个
job,每触发一次action操作就会产生一个job。这些job可以并行或串行执行,每个job中有 多个stage,stage是shuffle过程中DAGSchaduler通过RDD之间的依赖关系划分job而来的,每 个stage里面有多个task,组成taskset有TaskSchaduler分发到各个executor中执行,executor 的生命周期是和app 一样的,即使没有job运行也是存在的,所以task可以快速启动读取内存进行 计算。
3)hadoop的job只有map和reduce操作,表达能力比较欠缺而且在mr过程中会重复的读写 hdfs,造成大量的io操作,多个job需要自己管理关系。 spark的迭代计算都是在内存中进行的,API中提供了大量的RDD操作如join,groupby等,而且 通过DAG图可以实现良好的容错。
3.Spark 比 Mapreduce 快? 为什么快呢? 快在哪里呢?
Spark 更加快的主要原因有几点:
1)基于内存计算,减少低效的磁盘交互;
2)高效的调度 算法,基于 DAG;
3) 容错机制 Lingage,主要是 DAG 和 Lianage,及时 spark 不使用内存技术, 也大大快于
mapreduce。
4、简单说一下hadoop和spark的shuffle过程hadoop:map端保存分片数据,通过网络收集到reduce端。
spark:spark的shuffle是在DAGSchedular划分Stage的时候产生的,TaskSchedule要分发 Stage到各个worker的executor,减少shuffle可以提高性能。

4.Hdfs的写数据流程?

1、使用HDFS提供的客户端Client,向远程的Namenode发起RPC请求
2、Namenode会检查要创建的文件是否已经存在,创建者是否有权限进行操作,成功则会为文件创建一个记录,否则会让客户端抛出异常;
3、当客户端开始写入文件的时候,客户端会将文件切分成多个packets,并在内部以数据队列“data

queue(数据队列)”的形式管理这些packets,并向Namenode申请blocks,获取用来存储replicas的合适的datanode列表,列表的大小根据Namenode中replication的设定而定;
4、开始以pipeline(管道)的形式将packet写入所有的replicas中。开发库把packet以流的方式写入第一个datanode,该datanode把该packet存储之后,再将其传递给在此pipeline中的下一个datanode, 直到最后一个datanode,这种写数据的方式呈流水线的形式。
5、最后一个datanode成功存储之后会返回一个ack packet(确认队列),在pipeline里传递至客户端,在客户端的开发库内部维护着"ack queue",成功收到datanode返回的ack packet后会从"ack queue"移除相应的packet。
6、如果传输过程中,有某个datanode出现了故障,那么当前的pipeline会被关闭,出现故障的
datanode会从当前的pipeline中移除,剩余的block会继续剩下的datanode中继续以pipeline的形式传输,同时Namenode会分配一个新的datanode,保持replicas设定的数量。
7、客户端完成数据的写入后,会对数据流调用close()方法,关闭数据流;
5.什么是大数据?

可以从数据的“5V”特性来进行阐述:
一、Volume:数据量大,包括采集、存储和计算的量都非常大。大数据的起始计量单位至少是
P(1000个T)、E(100万个T)或Z(10亿个T)。
二、Variety:种类和来源多样化。包括结构化、半结构化和非结构化数据,具体表现为网络日志、音频、视频、图片、地理位置信息等等,多类型的数据对数据的处理能力提出了更高的要求。
三、Value:数据价值密度相对较低,或者说是浪里淘沙却又弥足珍贵。随着互联网以及物联网的广泛 应用,信息感知无处不在,信息海量,但价值密度较低,如何结合业务逻辑并通过强大的机器算法来挖 掘数据价值,是大数据时代最需要解决的问题。
四、Velocity:数据增长速度快,处理速度也快,时效性要求高。比如搜索引擎要求几分钟前的新闻能够被用户查询到,个性化推荐算法尽可能要求实时完成推荐。这是大数据区别于传统数据挖掘的显著特 征。
五、Veracity:数据的准确性和可信赖度,即数据的质量。
6.hadoop的集群安装过程?

1、基础集群环境准备包括修改主机名、设置系统默认启动级别、配置普通用户 sudoer 权限、配置IP、关闭防火墙/关闭 Selinux、添加内网域名映射、安装JDK、同步服务器时间、配置免密登录
2、上传安装包,并解压到相关目录
3、配置文件的配置
4、分发安装包到各个节点,Hadoop 集群的每个节点都需要安装Hadoop 安装包
5、在HDFS 主节点上执行命令进行初始化namenode
6、在HDFS 上的主节点启动HDFS
7、在YARN 主节点启动YARN,要求在YARN 主节点进行启动
8、测试集群是否安装成功
7.有一个很大的文件,内存装不下,如何实现去重?
对文件的每一行计算hash值,按照hash值把该行内容放到某个小文件中,假设需要分成100个小文件, 则可以按照(hash % 100)来分发文件内容,然后在小文件中实现去重就可以了。
8.hdfs 的数据压缩算法?

(1)Gzip 压缩
优点:压缩率比较高,而且压缩/解压速度也比较快; hadoop 本身支持,在应用中处理gzip 格式的文件就和直接处理文本一样;大部分 linux 系统都自带 gzip 命令,使用方便.
缺点:不支持 split。
应用场景: 当每个文件压缩之后在 130M 以内的(1 个块大小内),都可以考虑用 gzip压缩格式。 例如说一天或者一个小时的日志压缩成一个 gzip 文件,运行 mapreduce 程序的时候通过多个 gzip 文件达到并发。 hive 程序, streaming 程序,和 java 写的 mapreduce 程序完全和文本处理一样,压缩之后原来的程序不需要做任何修改。
(2)Bzip2 压缩
优点:支持 split;具有很高的压缩率,比 gzip 压缩率都高; hadoop 本身支持,但不支持 native;在linux 系统下自带 bzip2 命令,使用方便。
缺点:压缩/解压速度慢;不支持 native。
应用场景: 适合对速度要求不高,但需要较高的压缩率的时候,可以作为 mapreduce 作业的输出格 式; 或者输出之后的数据比较大,处理之后的数据需要压缩存档减少磁盘空间并且以后数据用得比较少的情况;或者对单个很大的文本文件想压缩减少存储空间,同时又需要支持 split,而且兼容之前的应用程序(即应用程序不需要修改)的情况。
(3)Lzo 压缩
优点:压缩/解压速度也比较快,合理的压缩率;支持 split,是 hadoop 中最流行的压缩格式;可以在
linux 系统下安装 lzop 命令,使用方便。
缺点:压缩率比 gzip 要低一些; hadoop 本身不支持,需要安装;在应用中对 lzo 格式的文件需要做一些特殊处理(为了支持 split 需要建索引,还需要指定 inputformat 为 lzo 格式)。
应用场景: 一个很大的文本文件,压缩之后还大于 200M 以上的可以考虑,而且单个文件越大, lzo 优点越越明显。
(4)Snappy 压缩
优点:高速压缩速度和合理的压缩率。
缺点:不支持 split;压缩率比 gzip 要低; hadoop 本身不支持,需要安装;
应用场景: 当 Mapreduce 作业的 Map 输出的数据比较大的时候,作为 Map 到 Reduce的中间数据的压缩格式;或者作为一个 Mapreduce 作业的输出和另外一个 Mapreduce 作业的输入。
9.datanode 在什么情况下不会备份?

如果设置备份数为1,就不会再去备份
10.三个 datanode 当有一个 datanode 出现错误会怎样?
出现错误的时候无法和namenode进行通信,namenode要去确认namenode是不是宕掉了,这段时间 称作超时时长,hdfs默认时间是10分钟30秒,确认该datanode宕机后,hdfs的副本数会减1,然后namenode会将宕机的datanode的数据复制到其他机器上
11.描述一下 hadoop 中,有哪些地方使用了缓存机制,作用分别是什么?
缓存jar包到执行任务的节点的classpath中, 缓存普通文件到task运行节点的classpath中
环形缓存区,map阶段后会往本地溢写文件,他们之间会有一个环形缓存区,可以提高效率

12.有200M的文件写入HDFS是先写128M复制完之后再写72M还是全部写完再复制?
HDFS上在写入数据的时候,首先会对数据切块,然后从客户端到datanode形成一个管道,在至少将一个文件写入hdfs上后,表示文件写入成功,然后进行复制备份操作,所以是全部写完再复制
13.hdfs里的edits和fsimage作用?

1)、fsimage文件其实是Hadoop文件系统元数据的一个永久性的检查点,其中包含Hadoop文件系统 中的所有目录和文件idnode的序列化信息;
2)、edits文件存放的是Hadoop文件系统的所有更新操作的路径,文件系统客户端执行的所以写操作首先会被记录到edits文件中。

fsimage和edits文件都是经过序列化的,在NameNode启动的时候,它会将fsimage文件中的内容加载 到内存中,之后再执行edits文件中的各项操作,使得内存中的元数据和实际的同步,存在内存中的元数据支持客户端的读操作。
NameNode起来之后,HDFS中的更新操作会重新写到edits文件中,因为fsimage文件一般都很大(GB 级别的很常见),如果所有的更新操作都往fsimage文件中添加,这样会导致系统运行的十分缓慢,但 是如果往edits文件里面写就不会这样,每次执行写操作之后,且在向客户端发送成功代码之前,edits 文件都需要同步更新。如果一个文件比较大,使得写操作需要向多台机器进行操作,只有当所有的写操 作都执行完成之后,写操作才会返回成功,这样的好处是任何的操作都不会因为机器的故障而导致元数 据的不同步
14.当小文件数量过多时,如何合并小文件?

当每个小文件数据量比较小的时候,可以通过命令的方式进行小文件的合并如:hadoop fs -cat hdfs://cdh5/tmp/lxw1234/*.txt | hadoop fs -appendToFile - hdfs://cdh5/tmp/hdfs_largefile.txt, 当数据量比较大的时候建议使用MR进行小文件的合并
15.介绍Hadoop中RPC协议,以及底层用什么框架封装的?
用于将用户请求中的参数或者应答转换成字节流以便跨机传输。
函数调用层:函数调用层主要功能是:定位要调用的函数,并执行该函数,Hadoop采用了java的反射机制和动态代理实现了函数的调用。
网络传输层:网络传输层描述了Client和Server之间消息的传输方式,Hadoop采用了基于TCP/IP的
socket机制。
服务端处理框架:服务端处理框架可被抽象为网络I/O处理模型,她描述了客户端和服务器端信息交互 的方式,她的设计直接决定了服务器端的并发处理能力。常见的网络I/O模型有阻塞式I/O,非阻塞式 I/O、事件驱动式I/O等,而Hadoop采用了基于reactor设计模式的事件驱动I/O模型
16.hadoop出现文件块丢失怎么处理?

首先需要定位到哪的数据块丢失,可以通过查看日志进行检查和排除,找到文件块丢失的位置后,如果 文件不是很重要可以直接删除,然后重新复制到集群上一份即可,如果删除不了,每一个集群都会有备 份,需要恢复备份

17.hadoop的守护线程?Namenode的职责?
五个守护进程:
SecondaryNameNode ResourceManager NodeManager NameNode
DataNode
Namenode:主节点,存储文件的元数据(文件名,文件目录结构,文件属性——生成时间,副本数, 文件权限),以及每个文件的块列表和块所在的DataNode等。周期性的接受心跳和块的状态报告信息
(包含该DataNode上所有数据块的列表)
若接受到心跳信息,NN认为DN工作正常,如果在10分钟后还接受到不到DN的心跳,那么NN认为DN 已经宕机
这时候NN准备要把DN上的数据块进行重新的复制。
块的状态报告包含了一个DN上所有数据块的列表,blocks report 每个1小时发送一次
18.hadoop1.x和2.x架构上的区别?

(1)Hadoop 1.0
Hadoop 1.0即第一代Hadoop,由分布式存储系统HDFS和分布式计算框架MapReduce组成,其中, HDFS由一个NameNode和多个DataNode组成,MapReduce由一个JobTracker和多个TaskTracker组成,对应Hadoop版本为Apache Hadoop 0.20.x、1.x、0.21.X、0.22.x和CDH3。
(2)Hadoop 2.0
Hadoop 2.0即第二代Hadoop,为克服Hadoop 1.0中HDFS和MapReduce存在的各种问题而提出的。针对Hadoop 1.0中的单NameNode制约HDFS的扩展性问题,提出了HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展,同时它彻底解决了NameNode 单点故障问题;针对Hadoop 1.0中的MapReduce在扩展性和多框架支持等方面的不足,它将JobTracker中的资源管理和作业控制功能分开,分别由组件ResourceManager和ApplicationMaster实现,其中, ResourceManager负责所有应用程序的资源分配,而ApplicationMaster仅负责管理一个应用程序,进而诞生了全新的通用资源管理框架YARN。基于YARN,用户可以运行各种类型的应用程序(不再像1.0 那样仅局限于MapReduce一类应用),从离线计算的MapReduce到在线计算(流式处理)的Storm 等。Hadoop 2.0对应Hadoop版本为Apache Hadoop 0.23.x、2.x和CDH4。
(3)MapReduce 1.0或MRv1
MapReduce 1.0计算框架主要由三部分组成,分别是编程模型、数据处理引擎和运行时环境。它的基本编程模型是将问题抽象成Map和Reduce两个阶段,其中Map阶段将输入数据解析成key/value,迭代调 用map()函数处理后,再以key/value的形式输出到本地目录,而Reduce阶段则将key相同的value进行 规约处理,并将最终结果写到HDFS上;它的数据处理引擎由MapTask和ReduceTask组成,分别负责 Map阶段逻辑和Reduce阶段逻辑的处理;它的运行时环境由(一个)JobTracker和(若干个) TaskTracker两类服务组成,其中,JobTracker负责资源管理和所有作业的控制,而TaskTracker负责接收来自JobTracker的命令并执行它。该框架在扩展性、容错性和多框架支持等方面存在不足,这也促使了MRv2的产生。
(4)MRv2
MRv2具有与MRv1相同的编程模型和数据处理引擎,唯一不同的是运行时环境。MRv2是在MRv1基础 上经加工之后,运行于资源管理框架YARN之上的计算框架MapReduce。它的运行时环境不再由JobTracker和TaskTracker等服务组成,而是变为通用资源管理系统YARN和作业控制进程ApplicationMaster,其中,YARN负责资源管理和调度,而ApplicationMaster仅负责一个作业的管理。简言之,MRv1仅是一个独立的离线计算框架,而MRv2则是运行于YARN之上的MapReduce。
(5)YARN
YARN是Hadoop 2.0中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管

理和调度。YARN不仅限于MapReduce一种框架使用,也可以供其他框架使用,比如Tez(将在第9章介 绍)、Spark、Storm(将在第10章介绍)等。YARN类似于几年前的资源管理系统Mesos(将在12章介 绍)和更早的Torque(将在6章介绍)。由于YARN的通用性,下一代MapReduce的核心已经从简单的 支持单一应用的计算框架MapReduce转移到通用的资源管理系统YARN。
(6)HDFS Federation
Hadoop 2.0中对HDFS进行了改进,使NameNode可以横向扩展成多个,每个NameNode分管一部分目录,进而产生了HDFS Federation,该机制的引入不仅增强了HDFS的扩展性,也使HDFS具备了隔离性。
19.写出你在工作中用过的hdfs的命令

hadoop fs -put localpath hdfspath hadoop fs -get hdfspath localpath hadoop fs -getmerge hdfspath localpath hadoop fs -rm -r hdfspath
hadoop fs -mv(-cp) hadfspath1 hafspath2 hadoop fs -cat(-text) hdfspath
hadoop fs -ls hdfspath
20.用命令显示所有的datanode的健康状况

hadoop dfsadmin -report
21.如何离开安全模式

hadoop dfsadmin -safemode leave
22.如何快速杀死一个job

1、执行 hadoop job -list 拿到 job-id 2、hadoop job -kill job-id
23.Hdfs回收站(防误删)

默认是关闭的,需要手动打开,修改配置 core-site.xml
添加:

fs.trash.interval 1440

fs.trash.checkpoint.interval 1440

如果打开了回收站,hdfs会为每个用户都建一个回收站,用户删除文件时,文件并不是彻底地消失了, 而是mv到了/user/用户名/.Trash/这个文件夹下,在一段时间内,用户可以恢复这些已经删除的文件。如果用户没有主动删除,那么系统会根据用户设置的时间把文件删除掉,用户也可以手动清空回收

站,
这样删除的文件就再也找不回来了
JavaAPI: Trash trash = new Trash(fs, conf); trash.moveToTrash(new Path("/xxxx"));
Shell: 如果你想直接删除某个文件,而不把其放在回收站,就要用到-skipTrash命令例如:hadoop fs -rm -r -skipTrash /test

24.HDFS原理,以及各个模块的职责?

Client:切分文件;访问或通过命令行管理 HDFS;与 NameNode 交互,获取文件位置信息;与
DataNode 交互,读取和写入数据。
NameNode:Master 节点,只有一个,管理 HDFS 的名称空间和数据块映射信息;配置副本策略;处理客户端请求。
DataNode:Slave 节点,存储实际的数据;执行数据块的读写;汇报存储信息给 NameNode。Secondary NameNode:辅助 NameNode,分担其工作量;定期合并 fsimage和 fsedits,推送给NameNode;紧急情况下,可辅助恢复 NameNode,但 Secondary NameNode并非 NameNode 的热备
Hdfs 文件读取
1.首先调用 FileSystem 对象的 open 方法,其实是一个 DistributedFileSystem 的实例2.DistributedFileSystem 通过 rpc 获得文件的第一批个 block 的 locations,同一block 按照重复数会返回多个 locations,这些 locations 按照 hadoop 拓扑结构排序,距离客户端近的排在前面.
3.前两步会返回一个 FSDataInputStream 对象,该对象会被封装成 DFSInputStream对象, DFSInputStream可以方便的管理datanode和namenode数据流。客户端调用read方法, DFSInputStream 就会找出离客户端最近的 datanode 并连接。
4.数据从 datanode 源源不断的流向客户端。
5.如果第一块的数据读完了,就会关闭指向第一块的 datanode 连接,接着读取下一块。这些操作对客户端来说是透明的,客户端的角度看来只是读一个持续不断的流。
6.如果第一批 block 都读完了,DFSInputStream 就会去 namenode 拿下一批 blocks的 location,然后继续读,如果所有的块都读完,这时就会关闭掉所有的流
Hdfs 的文件写入
1.客户端通过调用 DistributedFileSystem 的 create 方法创建新文件
2.DistributedFileSystem 通过 RPC 调用 namenode 去创建一个没有 blocks 关联的新文件,创建前, namenode 会做各种校验,比如文件是否存在,客户端有无权限去创建等。如果校验通过, namenode 就会记录下新文件,否则就会抛出 IO 异常.
3.前 两 步 结 束 后 会 返 回 FSDataOutputStream 的 对 象 , 和 读 文 件 的 时 候 相 似 , FSDataOutputStream 被 封装 成DFSOutputStream, DFSOutputStream 可以协 调namenode 和datanode。客户端开始写数据到 DFSOutputStream,DFSOutputStream会把数据切成一个个小packet,然后排成队列 data quene。
4.DataStreamer 会去处理接受 data quene,他先问询 namenode 这个新的 block 最适合存储的在哪几个 datanode 里,比如重复数是 3,那么就找到 3 个最适合的 datanode,把他们排成一个pipeline.DataStreamer 把packet 按队列输出到管道的第一个 datanode 中,
第一个 datanode 又把 packet 输出到第二个 datanode 中,以此类推。
5.DFSOutputStream 还有一个队列叫 ack quene,也是有 packet 组成,等待 datanode的收到响应, 当 pipeline 中的所有 datanode 都表示已经收到的时候,这时 akc quene 才会把对应的 packet 包移除掉。
6.客户端完成写数据后调用 close 方法关闭写入流

7.DataStreamer 把剩余得包都刷到 pipeline 里然后等待 ack 信息,收到最后一个 ack 后,通知
datanode 把文件标示为已完成。
25.HDFS 存储的机制?

HDFS 的三个实体数据块
每个磁盘都有默认的数据块大小,这是磁盘进行读写的基本单位.构建于单个磁盘之上的文件系统通过磁
盘块来管理该文件系统中的块.该文件系统中的块一般为磁盘块的整数倍.磁盘块一般为 512 字节.HDFS 也有块的概念,默认为 64MB(一个 map 处理的数据大小).HDFS 上的文件也被划分为块大小的多个分块, 与其他文件系统不同的是,HDFS 中小于一个块大小的文件不会占据整个块的空间.
HDFS 用块存储带来的第一个明显的好处一个文件的大小可以大于网络中任意一个磁盘的容量,数据块可以利用磁盘中任意一个磁盘进行存储.第二个简化了系统的设计,将控制单元设置为块,可简化存储管理,计算单个磁盘能存储多少块就相对容易.同时也消除了对元数据的顾虑,如权限信息,可以由其他系统单独管 理.
DataNode 节点
DataNode 是 HDFS 文件系统的工作节点,它们根据需要存储并检索数据块,受 NameNode节点调度.并且定期向 NameNode 发送它们所存储的块的列表
NameNode 节点
NameNode 管理 HDFS 文件系统的命名空间,它维护着文件系统树及整棵树的所有的文件及目录.这些文件以两个文件形式永久保存在本地磁盘上(命名空间镜像文件和编辑日志文件).NameNode 记录着每个文件中各个块所在的数据节点信息但并不永久保存这些块的位置信息,因为这些信息在系统启动时由数据 节点重建.
没有 NameNode,文件系统将无法使用.如提供 NameNode 服务的机器损坏,文件系统上的所有文件丢失,我们就不能根据 DataNode 的块来重建文件.因此,对 NameNode 的容错非常重要.第一种机制,备份那些组成文件系统元数据持久状态的文件.通过配置使 NameNode在多个文件系统上保存元数据的持久状态或将数据写入本地磁盘的同时,写入一个远程挂载的网络文件系统.当然这些操作都是原子操作.第二 种机制是运行一个辅助的 NameNode,它会保存合并后的命名空间镜像的副本,并在 Name/Node 发生故障时启用.但是辅助NameNode 保存.态总是滞后于主力节点,所以在主节点全部失效后难免丢失数据.在这种情况下,一般把存储在远程挂载的网络文件系统的数据复制到辅助 NameNode 并作为新的主NameNode 运行
26.hdfs 的 client 端,复制到第三个副本时宕机, hdfs 怎么恢复保证下次写第三副本?
Datanode 会定时上报 block 块的信息给 namenode ,namenode 就会得知副本缺失,然后
namenode 就会启动副本复制流程以保证数据块的备份!
27.block 块信息是先写 dataNode 还是先写
nameNode?

Client 向 NameNode 发起文件写入的请求。
NameNode 根据文件大小和文件块配置情况,返回给 Client 它所管理部分 DataNode的信息。
Client 将文件划分为多个 Block,根据 DataNode 的地址信息,按顺序写入到每一个DataNode 块中。

28.三个 datanode,当有一个 datanode 出现错误会怎样?
Datanode 以数据块作为容错单位 通常一个数据块会备份到三个 datanode 上,如果一个datanode 出错,则回去其他备份数据块的 datanode 上读取,并且会把这个 datanode上的数据块再复制一份 以达到备份的效果!

29.哪个进程通常与 namenode 在一个节点启动?并做分析
JobTracker
hadoop 的集群是基于 master/slave 模式,namenode 和 jobtracker 属于 master,datanode 和
tasktracker 属于 slave,master 只有一个,而 slave 有多个
SecondaryNameNode 内存需求和 NameNode 在一个数量级上,所以通常 secondary NameNode(运行在单独的物理机器上)和 NameNode 运行在不同的机器上。JobTracker 和 TaskTracker
JobTracker 对应于 NameNode TaskTracker 对应于 DataNode
DataNode 和 NameNode 是针对数据存放来而言的
JobTracker 和 TaskTracker 是对于 MapReduce 执行而言的
mapreduce 中几个主要概念,mapreduce 整体上可以分为这么几条执行线索:
jobclient,JobTracker 与 TaskTracker。
1、JobClient会在用户端通过JobClient类将应用已经配置参数打包成jar文件存储到hdfs,并把路径提交到 Jobtracker,然后由 JobTracker 创建每一个 Task(即 MapTask 和ReduceTask)
并将它们分发到各个 TaskTracker 服务中去执行
2、JobTracker 是一个 master 服务,软件启动之后 JobTracker 接收 Job,负责调度 Job的每一个子任务 task 运行于 TaskTracker 上,
并监控它们,如果发现有失败的 task 就重新运行它。一般情况应该把 JobTracker 部署在单独的机器上。
3、TaskTracker 是运行在多个节点上的 slaver 服务。TaskTracker 主动与 JobTracker 通信,接收作业,并负责直接执行每一个任务。TaskTracker 都需要运行在 HDFS 的 DataNode 上。
30.HDFS的体系结构?

HDFS 采用了主从(Master/Slave)结构模型,一个 HDFS 集群是由一个 NameNode和若干个
DataNode 组成的。其中 NameNode 作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的 DataNode 管理存储的数据。HDFS 允许用户以文件的形式存储数据。从内部来看,文件被分成若干个数据块,而且这若干个数据块存放在一组 DataNode 上。NameNode 执行文件系统的命名空间操作,比如打开、关闭、重命名文件或目录等,它也负责数据块到具体 DataNode的映射。
DataNode负责处理文件系统。客户端的文件读写请求,并在 NameNode 的统一调度下进行数据块的创建、删除和复制工作。NameNode 和 DataNode 都被设计成可以在普通商用计算机上运行。这些计算机通常运行的是 GNU/Linux 操作系统。HDFS 采用 Java 语言开发,因此任何支持 Java 的机器都可以部署 NameNode 和 DataNode。一个典型的部署场景是集群中的一台机器运行一个 NameNode 实
例,其他机器分别运行一个 DataNode 实例。当然,并不排除一台机器运行多个 DataNode 实例的情况。集群中单一的 NameNode 的设计则大大简化了系统的
架构。NameNode 是所有 HDFS 元数据的管理者,用户数据永远不会经过 NameNode。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坏孩子充电自习室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值