Hadoop面试连环炮 1

简介: Hadoop面试连环炮

1 Hadoop

1.1 介绍Hadoop

广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。

狭义上说,Hadoop指Apache这款开源框架,它的核心组件有:

HDFS(分布式文件系统):解决海量数据存储

YARN(作业调度和集群资源管理的框架):解决资源任务调度上面的图片像一个插座也就是适配yarn就可以操作到数据

MAPREDUCE(分布式运算编程框架):解决海量数据计算

1.2 Hadoop特性优点

扩容能力(Scalable):Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可用方便的扩展到数以千计的节点中。

成本低(Economical):Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低。

高效率(Efficient):通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速度非常快。

可靠性(Rellable):能自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。所以Hadoop的按位存储和处理数据的能力值得人们信赖。

1.3 hadoop集群中hadoop都需要启动哪些进程,他们的作用分别是什么?

namenode =>HDFS的守护进程,负责维护整个文件系统,存储着整个文件系统的元数据信息,image+edit log

datanode =>是具体文件系统的工作节点,当我们需要某个数据,namenode告诉我们去哪里找,就直接和那个DataNode对应的服务器的后台进程进行通信,由DataNode进行数据的检索,然后进行具体的读/写操作

secondarynamenode =>一个守护进程,相当于一个namenode的元数据的备份机制,定期的更新,和namenode进行通信,将namenode上的image和edits进行合并,可以作为namenode的备份使用, 高可用情况下不需要开启因为有JournalNode

resourcemanager =>是yarn平台的守护进程,负责所有资源的分配与调度,client的请求由此负责,监控nodemanager

nodemanager => 是单个节点的资源管理,执行来自resourcemanager的具体任务和命令

DFSZKFailoverController高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。

7)JournalNode 高可用情况下存放namenode的editlog文件

1.4 Hadoop主要的配置文件

hadoop-env.sh


文件中设置的是Hadoop运行时需要的环境变量。JAVA_HOME是必须设置的,即使我们当前的系统中设置了JAVA_HOME,它也是不认识的,因为Hadoop即使是在本机上执行,它也是把当前的执行环境当成远程服务器。

core-site.xml


设置Hadoop的文件系统地址

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node-1:9000</value>
</property>

hdfs-site.xml


指定HDFS副本的数量

<property>
    <name>dfs.replication</name>
    <value>2</value>
    </property>
    <property>
     <name>dfs.namenode.secondary.http-address</name>
       <value>node-2:50090</value>
    </property>

mapred-site.xml


指定mr运行时框架,这里指定在yarn上,默认是local

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

yarn-site.xml


指定YARN的主角色(ResourceManager)的地址

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node-1</value>
</property>

1.5 Hadoop集群重要命令

初始化


hadoop namenode –format

启动dfs


start-dfs.sh

启动yarn


start-yarn.sh

启动任务历史服务器


mr-jobhistory-daemon.sh start historyserver

一键启动


start-all.sh

启动成功后:


NameNode http://nn_host:port/ 默认50070.

ResourceManagerhttp://rm_host:port/ 默认 8088


89480484bf7341e3b95506828f30044b.png

3c6cc61d51114e70af3d16a1cd68ceef.png



选项名称 使用格式 含义
-ls -ls <路径> 查看指定路径的当前目录结构
-lsr -lsr <路径> 递归查看指定路径的目录结构
-du -du <路径> 统计目录下个文件大小
-dus -dus <路径> 汇总统计目录下文件(夹)大小
-count -count [-q] <路径> 统计文件(夹)数量
-mv -mv <源路径> <目的路径> 移动
-cp -cp <源路径> <目的路径> 复制
-rm -rm [-skipTrash] <路径> 删除文件/空白文件夹
-rmr -rmr [-skipTrash] <路径> 递归删除
-put -put <多个linux上的文件> <hdfs路径> 上传文件
-copyFromLocal -copyFromLocal <多个linux上的文件> <hdfs路径> 从本地复制
-moveFromLocal -moveFromLocal <多个linux上的文件> <hdfs路径> 从本地移动
-getmerge -getmerge <源路径> <linux路径> 合并到本地
-cat -cat <hdfs路径> 查看文件内容
-text -text <hdfs路径> 查看文件内容
-copyToLocal -copyToLocal [-ignoreCrc] [-crc] [hdfs源路径] [linux目的路径] 从本地复制
-moveToLocal -moveToLocal [-crc] <hdfs源路径> <linux目的路径> 从本地移动
-mkdir -mkdir <hdfs路径> 创建空白文件夹
-setrep -setrep [-R] [-w] <副本数> <路径> 修改副本数量
-touchz -touchz <文件路径> 创建空白文件
-stat -stat [format] <路径> 显示文件统计信息
-tail -tail [-f] <文件> 查看文件尾部信息
-chmod -chmod [-R] <权限模式> [路径] 修改权限
-chown -chown [-R] [属主][:[属组]] 路径 修改属主
-chgrp -chgrp [-R] 属组名称 路径 修改属组
-help -help [命令选项] 帮助

1.6 HDFS的垃圾桶机制

修改core-site.xml

  <property>
        <name>fs.trash.interval</name>
        <value>1440</value>
   </property>

这个时间以分钟为单位,例如1440=24h=1天。HDFS的垃圾回收的默认配置属性为 0,也就是说,如果你不小心误删除了某样东西,那么这个操作是不可恢复的。


1.7 HDFS写数据流程

241345c3b95648e8974e222f64d34a22.png


详细步骤:


1)客户端通过Distributed FileSystem模块向namenode请求上传文件,namenode检查目标文件是否已存在,父目录是否存在。

2)namenode返回是否可以上传。

3)客户端请求第一个 block上传到哪几个datanode服务器上。

4)namenode返回3个datanode节点,分别为dn1 dn2 dn3。

5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。

6)dn1 dn2 dn3逐级应答客户端。

7)客户端开始往dn1上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位(大小为64k),dn1收到一个packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答。

8)当一个block传输完成之后,客户端再次请求namenode上传第二个block的服务器。

目录
相关文章
|
存储 缓存 运维
JVM面试连环炮
JVM面试连环炮
104 0
|
5月前
|
存储 SQL 分布式计算
【史上最全】Hadoop精选18道面试题(附回答思路)
【史上最全】Hadoop精选18道面试题(附回答思路)
298 1
【史上最全】Hadoop精选18道面试题(附回答思路)
|
5月前
|
分布式计算 资源调度 监控
Hadoop生态系统深度剖析:面试经验与必备知识点解析
本文深入探讨了Hadoop生态系统的面试重点,涵盖Hadoop架构、HDFS、YARN和MapReduce。了解Hadoop的主从架构、HDFS的读写流程及高级特性,YARN的资源管理与调度,以及MapReduce编程模型。通过代码示例,如HDFS文件操作和WordCount程序,帮助读者巩固理解。此外,文章强调在面试中应结合个人经验、行业动态和技术进展展示技术实力。
73 0
|
5月前
|
设计模式 搜索推荐 Java
面试官不按套路出牌,上来就让聊一聊Java中的迭代器(Iterator ),夺命连环问,怎么办?
面试官不按套路出牌,上来就让聊一聊Java中的迭代器(Iterator ),夺命连环问,怎么办?
40 0
|
5月前
|
存储 分布式计算 资源调度
2022年Hadoop面试题最全整理,两万字干货分享【建议收藏】
2022年Hadoop面试题最全整理,两万字干货分享【建议收藏】
594 0
|
5月前
|
算法 安全 调度
[操作系统] 面试宝典之~死锁连环系列
[操作系统] 面试宝典之~死锁连环系列
|
5月前
|
资源调度 分布式计算 Hadoop
大数据面试题百日更新_Hadoop专题_Yarn专题(Day11)
大数据面试题百日更新_Hadoop专题_Yarn专题(Day11)
59 0
|
5月前
|
分布式计算 Hadoop 大数据
大数据面试题百日更新_Hadoop专题(Day09)
大数据面试题百日更新_Hadoop专题(Day09)
42 0
|
5月前
|
分布式计算 Hadoop 大数据
字节跳动面试问到Hadoop源码,拿40K进大厂的Java程序员必备技能
大数据由于数据量庞大、数据类型复杂等特点,特别是非结构化或半结构化数据远远多于结构化数据,导致传统关系型数据库让企业面临巨大的成本压力。而 Hadoop 能够很好的提供解决大数据问题的技术手段。因此,Hadoop 技术在大数据中占据着举足轻重的作用,也很受企业的青睐。
|
5月前
|
分布式计算 Hadoop 大数据
大数据面试题百日更新_Hadoop专题(Day03)
大数据面试题百日更新_Hadoop专题(Day03)
26 0

相关实验场景

更多
下一篇
无影云桌面