Hadoop基本组成

Hadoop基本组成

Hadoop主要分哪几个部分?他们有什么作用?

可回答:1)Hadoop的组件有哪些;2)Hadoop原理
在这里插入图片描述
Hadoop主要组件如上图,主要是HDFS、MapReduce、YARN、CommonHDFS

HDFS
是一个文件系统,用于存储文件,通过目录树来定位文件。其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。

MapReduce
MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。
MapReduce将计算过程分为两个阶段:Map和Reduce

  • Map阶段并行处理输入数据
  • Reduce阶段对Map结果进行汇总

YARN
先来看两个问题,在Hadoop中
如何管理集群资源?
如何给任务合理分配资源?
YARN在Hadoop中的作用,就是上面两个问题的答案。Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。

Common
Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等
在这里插入图片描述
Hadoop1.x阶段,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大;
Hadoop2.x阶段,增加了Yarn。Yarn只负责资源的调度,MapReduce只负责运算;
Hadoop3.x相比于Hadoop2.x阶段在组成上没有变化

Hadoop集群工作时启动哪些进程?

它们有什么作用?可回答:Hadoop正常运行有几个进程
1)NameNode
就是Master,Hadoop的主管、管理者
(1)管理HDFS的名称空间;
(2)配置副本策略;
(3)管理数据块(Block)映射信息;
(4)处理客户端读写请求。
2)DataNode
就是Slave。NameNode下达命令,DataNode执行实际的操作。
(1)存储实际的数据块;
(2)执行数据块的读/写操作。

3)Secondary NameNode
Secondary NameNode并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。而是提供周期检查点和清理任务,帮助NN合并editslog,减少NN启动时间。
(1)辅助NameNode,分担其工作量,如定期合并Fsimage和Edits,并推送给NameNode
(2)在紧急情况下,可辅助恢复NameNode

4)ResourceManager(JobTracker)
整个集群资源(内存、CPU等)的老大。负责集群中所有资源的统一管理和分配,它接受来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序(即ApplicationMaster)。
(1)与客户端交互,处理来自客户端的请求。
(2)启动和管理ApplicatinMaster,并在它运行失败时重新启动它。
(3)管理NodeManager,接受来自NodeManager的资源管理汇报信息,并向NodeManager下达管理命令(比如杀死Contanier)等。
(4)资源管理与调度,接收来自ApplicationMaster的资源申请请求,并为之分配资源(核心)。

5)NodeManager(TaskTracker)
NodeManager是YARN中单个节点的代理(单个节点服务器资源老大),它需要与应用程序的ApplicationMaster和集群管理者ResourceManager交互;它从ApplicationMaster上接收有关Container的命令并执行(比如启动、停止Contaner);向ResourceManager汇报各个Container运行状态和节点健康状况,并领取有关Container的命令(比如清理Container)。NodeManager管理的是Container而不是任务,一个Container中可能运行着各种任务,但是对NodeManager而言是透明的,它只负责Container相关操作,比如管理Container的生命周期,即启动Container、监控Container和清理Container等。
(1)管理单个节点上的资源
(2)处理来自ResourceManager的命令
(3)处理来自ApplicationMaster的命令

6)DFSZKFailoverController
高可用时它负责监控NameNode的状态,并及时的把状态信息写入Zookeeper。它通过一个独立线程周期性的调用NameNode上的一个特定接口来获取NameNode的健康状态。ZKFC也有选择谁作为ActiveNameNode的权利,因为最多只有两个节点,选择策略比较简单(先到先得,轮换)。
7)JournalNode
高可用情况下存放NameNode的editlog文件。

在集群计算的时候,什么是集群的主要瓶颈

磁盘IO(正解),CPU,内存,网络带宽

搭建Hadoop集群的xml文件有哪些?

core-site.xml

<?xmlversion="1.0"encoding="UTF-8"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<configuration>
<!-- 指定NameNode的地址-->
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定hadoop数据的存储目录-->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为atguigu-->
<property>
	<name>hadoop.http.staticuser.user</name>
	<value>atguigu</value>
</property>
</configuration>

hdfs-site.xml

<?xmlversion="1.0"encoding="UTF-8"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<configuration>
<!-- nnweb端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- 2nnweb端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
</configuration>

yarn-site.xml

<?xmlversion="1.0"encoding="UTF-8"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<configuration>
<!-- 指定MR走shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value></property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!-- 环境变量的继承-->
<property>
<name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>

mapred-site.xm

<?xmlversion="1.0"encoding="UTF-8"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<configuration>
<!-- 指定MapReduce程序运行在Yarn-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

版权声明:本文为qq_44864865原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。