文章目录
参考资料
运行环境
- JDK8
- hadoop3.1.3
- 3个集群节点,分别为hadoop101、hadoop102、hadoop103
hadoop 1.x到2.x的升级
解决问题:
组件 | Hadoop1.x的问题 | Hadoop 2.x的改进 |
---|---|---|
HDFS | 单一名称节点,存在单点失效问题 | 设计了HDFS HA,提供名称节点热备机制 |
HDFS | 单一命名空间,无法实现资源隔离 | 设计了 HDFS Federation,管理多个命名空间 |
MapReduce | 资源管理效率低 | 设计了新的资源管理框架 YARN |
2.x到3.x的升级暂时不做赘述,在功能组件上没有差别。
Hadoop集群节点类型
Hadoop框架中最核心的设计就是为海量数据提供存储的HDFS 和 对数据进行计算的 MapReduce。
MapReduce的作业主要包括:(1)从磁盘或从网络读取数据,即IO密集工作;(2)计算数据,即CPU密集工作。
Hadoop集群的整体性能,取决于CPU、内存、网络以及存储之间的性能平衡。
Hadoop集群中基本的节点及其作用如下:
节点名称 | 作用描述 |
---|---|
NameNode | 负责协调集群中的数据存储 |
DataNode | 存储被拆分的数据块 |
SecondaryNameNode | 帮助NameNode收集文件系统运行的状态信息 |
除了以上三个节点外,还有负责资源调度的两个节点,不过不同的Hadoop版本,节点也不一样,这里指1.x和后面的不同
在1.x版本中
节点名称 | 作用描述 |
---|---|
JobTracker | 协调数据计算任务 |
TaskTracker | 负责执行由 JobTracker指派的任务 |
而到了2.x、3.x版本
节点名称 | 作用描述 |
---|---|
ResourceManager | 负责整个系统的资源管理和分配 |
ApplicationMaster | 负责系统中所有应用程序的管理工作 |
NodeManager | 单个节点的资源管理,处理来自两个前者的命令 |
YARN架构思路
(图片转自PPT 大数据技术原理与应用(第3版)引用 第8章 第18页)
集群规划
以下表格来自视频参考资料:
hadoop101 | hadoop102 | hadoop103 | |
---|---|---|---|
HDFS | NameNode、DataNode | DataNode | SecondaryNameNode |
YARN | NodeManager | ResourceManager 、NodeManager | NodeManager |
注意点:
NamdeNode
和SecondaryNameNode
尽量不安装在同一台服务器ResourceManager
比较耗内存,尽量不和NameNode
、SecondaryNameNode
配置在同一台机器。
集群配置
配置文件说明:
Hadoop 配置文件分为两类:
- 默认配置文件
- 自定义配置文件
只有用户向修改某一默认配置值时,才需要修改自定义配置文件,更改相应的属性值,这也是为什么网络上关于Hadoop集群配置的内容有些不太一样的原因,因为它本身就有一些默认值。
(1)默认配置文件,以3.1.3版本为例
文件名 | 位置 |
---|---|
core-default.xml |
hadoop-common-3.1.3.jar/core-default.xml |
hdfs-default.xml |
hadoop-hdfs-3.1.3.jar/hdfs-default.xml |
yarn-default.xml |
hadoop-yarn-common-3.1.3.jar/yarn-defualt.xml |
mapred-default.xml |
hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml |
这些jar包在hadoop目录下的/share/hadoop
中可以找到,为方便以后学习以及配置集群,笔者将它们下载到了Gitee
Gitee: 链接
点击超链接查看源代码
注:以下的配置文件都在 Hadoop目录下的etc/hadoop
中
core-site.xml
在这个配置文件中,主要配置 NameNode
的地址、hadoop存储的目录、HDFS网页登陆使用的静态用户。
官方默认配置(描述的部分省略):
core-default.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>file:///</value>
<description>...</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value>
<description></description>
</property>
<!-- Static Web User Filter properties. -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>dr.who</value>
<description>...</description>
</property>
</configuration>
参考官方的默认配置,自定义后的配置如下:
core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>