参考资料运行环境hadoop 1.x到2.x的升级Hadoop集群节点类型集群规划集群配置
core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xmlworkers添加全局变量分发配置文件
参考资料视频链接
厦大实验室
运行环境JDK8hadoop3.1.33个集群节点,分别为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: 链接
点击超链接查看源代码
core-default.xmlhdfs-default.xmlmapred-default.xmlyarn-default.xml
注:以下的配置文件都在 Hadoop目录下的etc/hadoop中
core-site.xml在这个配置文件中,主要配置 NameNode的地址、hadoop存储的目录、HDFS网页登陆使用的静态用户。
官方默认配置(描述的部分省略):
core-default.xml
fs.defaultFS file:/// ... hadoop.tmp.dir /tmp/hadoop-${user.name} hadoop.http.staticuser.user dr.who ...
参考官方的默认配置,自定义后的配置如下:
core-site.xml
hdfs-site.xmlfs.defaultFS hdfs://hadoop101:8020 hadoop.tmp.dir /opt/module/hadoop/tmp hadoop.http.staticuser.user uni
官方的默认配置
hdfs-default.xml
dfs.namenode.name.dir file://${hadoop.tmp.dir}/dfs/name ... dfs.datanode.data.dir file://${hadoop.tmp.dir}/dfs/data ... dfs.namenode.http-address 0.0.0.0:9870 ... dfs.namenode.secondary.http-address 0.0.0.0:9868 ...
自定义的配置
hdfs-site.xml
yarn-site.xmldfs.namenode.name.dir file:/opt/module/hadoop/namenode_dir dfs.datanode.data.dir file:/opt/module/hadoop/datanode_dir dfs.namenode.http-address hadoop101:9870 dfs.namenode.secondary.http-address hadoop103:9868
官方配置:yarn-default.xml
... yarn.nodemanager.aux-services ... yarn.resourcemanager.hostname 0.0.0.0 ... yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ ... yarn.resourcemanager.webapp.address ${yarn.resourcemanager.hostname}:8088
自定义配置:yarn-site.xml
yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname hadoop102 yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME mapreduce.jobhistory.address hadoop101:10020 mapreduce.jobhistory.webapp.address hadoop101:19888 yarn.resourcemanager.webapp.address hadoop102:8088
修改 yarn.nodemanager.env-whitelist 的配置目的是添加一个 HADOOP_MAPRED_HOME的变量,防止因为版本原因出现BUG
以上都是最基本的配置,为了很好的优化,现在进行一个补充。
日志聚集:应用运行完成后,将程序运行日志信息上传到HDFS系统上
日志聚集功能好处:可以方便的查看程序运行详情
在 ./etc/hadoop/yarn-site.xml里的configuration标签内添加后的内容如下:
mapred-site.xmlyarn.log-aggregation-enable true yarn.log.server.url http://hadoop101:19888/jobhistory/logs yarn.log-aggregation.retain-seconds 1209600
官方配置:mapred-default.xml
mapreduce.framework.name local ... mapreduce.jobhistory.address 0.0.0.0:10020 ... mapreduce.jobhistory.webapp.address 0.0.0.0:19888 ...
自定义配置:mapred-site.xml
mapreduce.framework.name yarn mapreduce.jobhistory.address hadoop102:10020 mapreduce.jobhistory.webapp.address hadoop102:19888
根据之前的查阅资料,hadoop1.x版本还依然是使用自身当做资源调度的,所以配置里是默认的local,而从2.x开始引入了yarn的概念,使用yarn作为资源调度效率会高得多,这里指定为yarn即可。
workers同样是在./etc/hadoop下,添加内容为,所有集群节点的主机名,每个主机名占一行(后面不能有多余的空格):
hadoop101 hadoop102 hadoop103添加全局变量
由于hadoop版本问题,需要在start-dfs.sh和stop-dfs.sh里加入一些变量的声明:
HDFS_DATANODE_SECURE_USER=root HDFS_SECONDARYNAMENODE_USER=root HDFS_NAMENODE_USER=root分发配置文件
以上所有的配置在单个节点里操作就行,然后再使用分发脚本
xsync ./etc/hadoop
分发脚本可参考:Hadoop | 集群配置(一)使用Shell脚本解决完全分布式集群节点之间的文件传输问题 | scp命令 | rsync命令
至此,Hadoop完全分布式集群环境已配置完毕。



