枕上从妨一夜睡,灯前读尽十年诗。这篇文章主要讲述Hadoop集群完全分布式安装#yyds干货盘点#相关的知识,希望能为你提供帮助。
集群部署规划
主机名称 | hcmaster | hcslave1 | hcslave2 |
---|---|---|---|
IP地址 | 172.16.85.140 | 172.16.85.141 | 172.16.85.142 |
角色 | master | slave | slave |
host | xmaster | xslave1 | xslave2 |
NameNode | 有 | ||
SecondaryNameNode | 有 | ||
DataNode | 有 | 有 | 有 |
NodeManager | 有 | 有 | 有 |
ResourceManager | 有 | ||
HistoryServer | 有 |
准备工作root用户登录,在三台虚拟机上都做以下操作:
安装JDK由于Hadoop 的编译及MapReduce的运行都需要使用JDK,所以需要在集群中的每一台机器上提前安装好能够满足Hadoop 最低版本要求的JDK。
关闭防火墙为避免由于防火墙策略导致安装失败问题,需要先关闭防火墙,命令:
关闭SELinux:修改/etc/selinux/config 文件【Hadoop集群完全分布式安装#yyds干货盘点#】因为CentOS的所有访问权限都是有SELinux来管理的,为了避免安装过程中由于权限关系而导致的失败,需要先将其关闭,以后根据需要再进行重新管理。
文章图片
以root账户登录,创建hc/hc用户由于Hadoop 集群中的各节点默认会使用当前的账号SSH免密码登录其它节点,所以需要在每个节点中创建一个相同的供 Hadoop 集群专用的账户。
文章图片
编辑/etc/sudoers
文章图片
安装配置Hadoop 准备工作
在hcmaster上,将下载下来的Hadoop压缩包解压到/usr/local目录,并修改文件的拥有者为hc。
文章图片
在/usr/local/hadoop3.1.2目录下创建logs文件夹,并修改拥有者为hc。
文章图片
修改配置一般情况下,我们只需要修改下图标示的几个文件即可:
编辑core-site.xml
<
?xml version="1.0" encoding="UTF-8"?>
<
?xml-stylesheet type="text/xsl" href="https://www.songbingjia.com/android/configuration.xsl"?>
<
configuration>
<
property>
<
name>
fs.defaultFS<
/name>
<
value>
hdfs://hcmaster:8020<
/value>
<
/property>
<
property>
<
name>
hadoop.tmp.dir<
/name>
<
value>
/usr/local/hadoop3.1.2/data/tmp/<
/value>
<
/property>
<
property>
<
name>
hadoop.proxyuser.hc.hosts<
/name>
<
value>
*<
/value>
<
/property>
<
property>
<
name>
hadoop.proxyuser.hc.groups<
/name>
<
value>
*<
/value>
<
/property>
<
/configuration>
说明:
- fs.defaultFS:用来指定NameNode 的hdfs协议的文件系统通信地址,可以指定一个主机+端口,也可以指定为一个NameNode 服务(这个服务内部可以有多台NameNode 实现ha的NameNode 服务。
- hadoop.tmp.dir:hadoop集群在工作的时候存储的一些临时文件的目录。
/data/tmp目录需要自己创建;tmp目录不用自己创建,Hadoop启动起来后会自己创建;Hadoop启动起来后会在tmp下面创建data和name子目录
export java_HOME=/usr/local/jdk1.8.0_181/
编辑hdfs-site.xml
<
?xml version="1.0" encoding="UTF-8"?>
<
?xml-stylesheet type="text/xsl" href="https://www.songbingjia.com/android/configuration.xsl"?>
<
configuration>
<
property>
<
name>
dfs.namenode.name.dir<
/name>
<
value>
/usr/local/hadoop3.1.2/data/tmp/dfs/name<
/value>
<
/property>
<
property>
<
name>
dfs.datanode.data.dir<
/name>
<
value>
/usr/local/hadoop3.1.2/data/tmp/dfs/data<
/value>
<
/property>
<
property>
<
name>
dfs.replication<
/name>
<
value>
3<
/value>
<
/property>
<
property>
<
name>
dfs.namenode.secondary.http-address<
/name>
<
value>
hcslave2:50090<
/value>
<
/property>
<
/configuration>
说明:
- dfs.NameNode .name.dir:NameNode 数据的存放地点。也就是NameNode 元数据存放的地方,记录了hdfs系统中文件的元数据。可以同时指定多个name节点,这多个节点中的内容是一样的
- dfs.DataNode .data.dir:DataNode 数据的存放地点。也就是block块存放的目录了。
- dfs.replication:hdfs的副本数设置。也就是上传一个文件,其分割为block块后,每个block的冗余副本个数,默认配置是3。
- dfs.secondary.http.address:secondaryNameNode 运行节点的信息,和NameNode 不同节点
不管是dfs.NameNode .name.dir还是dfs.DataNode .data.dir都可以配置多个目录,比如:
<
?xml version="1.0"?>
<
configuration>
<
property>
<
name>
yarn.nodemanager.aux-services<
/name>
<
value>
mapreduce_shuffle<
/value>
<
/property>
<
property>
<
name>
yarn.resourcemanager.hostname<
/name>
<
value>
hcslave1<
/value>
<
/property>
<
property>
<
name>
yarn.log-aggregation-enable<
/name>
<
value>
true<
/value>
<
/property>
<
property>
<
name>
yarn.log-aggregation.retain-seconds<
/name>
<
value>
604800<
/value>
<
/property>
<
property>
<
name>
yarn.resoucemanager.webapp.address<
/name>
<
value>
hcslave1:8080<
/value>
<
/property>
<
property>
<
name>
yarn.application.classpath<
/name>
<
value>
/usr/local/hadoop3.1.2/etc/hadoop:/usr/local/hadoop3.1.2/share/hadoop/common/lib/*:/usr/local/hadoop3.1.2/share/hadoop/common/*:/usr/local/hadoop3.1.2/share/hadoop/hdfs:/usr/local/hadoop3.1.2/share/hadoop/hdfs/lib/*:/usr/local/hadoop3.1.2/share/hadoop/hdfs/*:/usr/local/hadoop3.1.2/share/hadoop/mapreduce/lib/*:/usr/local/hadoop3.1.2/share/hadoop/mapreduce/*:/usr/local/hadoop3.1.2/share/hadoop/yarn:/usr/local/hadoop3.1.2/share/hadoop/yarn/lib/*:/usr/local/hadoop3.1.2/share/hadoop/yarn/*<
/value>
<
/property>
<
property>
<
name>
yarn.nodemanager.resource.memory-mb<
/name>
<
value>
22528<
/value>
<
/property>
<
property>
<
name>
yarn.scheduler.minimum-allocation-mb<
/name>
<
value>
1500<
/value>
<
/property>
<
property>
<
name>
yarn.scheduler.maximum-allocation-mb<
/name>
<
value>
16384<
/value>
<
/property>
<
/configuration>
说明:
- yarn.resourcemanager.hostname:yarn总管理器的IPC通讯地址
- yarn.nodemanager.aux-services:YARN 集群为 MapReduce 程序提供的服务(常指定为 shuffle )
下面两条是和日志聚集相关配置
- yarn.log-aggregation-enable:是否启用日志聚集功能。
- yarn.log-aggregation.retain-seconds:设置日志保留时间,单位是秒。
<
?xml version="1.0"?>
<
?xml-stylesheet type="text/xsl" href="https://www.songbingjia.com/android/configuration.xsl"?>
<
configuration>
<
property>
<
name>
mapreduce.framework.name<
/name>
<
value>
yarn<
/value>
<
/property>
<
property>
<
name>
mapreduce.jobhistory.address<
/name>
<
value>
hcslave2:10020<
/value>
<
/property>
<
property>
<
name>
mapreduce.jobhistory.webapp.address<
/name>
<
value>
hcslave2:19888<
/value>
<
/property>
<
property>
<
name>
mapreduce.map.memory.mb<
/name>
<
value>
1500<
/value>
<
/property>
<
property>
<
name>
mapreduce.reduce.memory.mb<
/name>
<
value>
3000<
/value>
<
/property>
<
property>
<
name>
mapreduce.map.java.opts<
/name>
<
value>
-Xmx1200m<
/value>
<
/property>
<
property>
<
name>
mapreduce.reduce.java.opts<
/name>
<
value>
-Xmx2600m<
/value>
<
/property>
<
/configuration>
说明:
- mapreduce.framework.name:指定MapReduce在的资源调度框架yarn上运行 。
- mapreduce.jobhistory.address
- mapreduce.jobhistory.webapp.address
把原本的localhost删掉,增加如下内容所示的数据结点:
hcmaster
hcslave1
hcslave2
当服务器启动的时候,会向这些结点发送启动数据结点的命令。
编辑/etc/profile
将Hadoop的环境变量添加到profile中
export HADOOP_HOME=/usr/local/hadoop3.1.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
分发 分发Hadoop
切换到root用户,在hcmaster上执行xsync.sh /usr/local/hadoop3.1.2将hcmaster上配置好的Hadoop文件发送到其它两台虚拟机。
文章图片
分别修改hcslave1和hcslave2上的hadoop3.1.2的拥有者为hc。
分发/etc/profile文件
格式化NameNode在hcmaster虚拟机上格式化NameNode。
第一次启动HDFS需要先进行格式化以创建一个新分布式文件系统,然后才能正常启动NameNode 服务。
注意:格式化文件系统时只需要在master上做一次就行了。
启动Hadoop切换成hc用户
在hcmaster启动dfs
文章图片
在hcslave1启动yarn因为ResourceManager节点在hcsalve1上,所以yarn必须在hcslave1上启动,在其它节点上启动会报错。
文章图片
在hcslave2启动history server
文章图片
验证集群环境
1)查看HDFS Web页面 http://hcmaster:9870/explorer.html#/ (HDFS管理界面)
文章图片
2)查看YARN Web 页面http://hcslave1:8088/cluster (MR管理界面)
文章图片
推荐阅读
- #yyds干货盘点#怎样使用git进行协同开发()
- 自上而下的理解网络——HTTPS篇
- #yyds干货盘点#SecurityContextHolder之策略模式源码分析
- Dubbo | Dubbo快速上手笔记 - 环境与配置 #yyds干货盘点#
- #yyds干货盘点# 数据结构与算法之顺序表
- #私藏项目实操分享# SAP 电商云 Spartacus UI 的 checkout 场景中的串行请求设计分析
- 无快不破,在本地 docker 运行 IDEA 里面的项目()
- #yyds干货盘点#Vue-Router路由所有相关方法讲解(全),实战教学含登录拦截,建议收藏
- #yyds干货盘点#JavaScript之彻底理解原型与原型链