写在前面:在本教程中,默认虚拟机系统已配置好hadoop和JDK,并且集群之间的免密登录已经完成。这里我的hadoop版本号为hadoop-2.10.0,记得要全部替换为你自己的版本号哦
1.采用三台虚拟机搭建一个分布式集群系统,主机名和地址映射分配如下:
主机名 | IP地址 | |
虚拟机1 | hadoop01 | 192.168.1.101 |
虚拟机2 | hadoop02 | 192.168.1.102 |
虚拟机3 | hadoop03 | 192.168.1.103 |
2.Hadoop分布式集群搭建节点功能分配如下:
Hadoop01 | Hadoop02 | Hadoop03 | |
---|---|---|---|
HDFS | DataNode | DataNode | DataNode |
NameNode | SecondaryNameNode | ||
YARN | NodeManager | NodeManager | NodeManager |
ResourceManager |
可以看出,在对Hadoop集群规划时,每个节点上都有dataNode节点(实际存储数据)和NodeManager节点(每个节点的管理者)。剩下的NameNode、ResourceManager、SecondaryNameNode平均分配在各台虚拟机上,考虑到其资源量大,尽量分开。
搭建hdfs集群涉及的配置文件如下
文件名 | 说明 |
---|---|
slaves | 决定哪些机器是DataNode |
hadoop-env.sh | 脚本制定jdk配置 |
core-site.xml | HDFS核心配置 |
hdfs-site.xml | HDFS文件系统的相关配置 |
yarn-site.xml | ResourceManger部署在哪台机器等 |
mapred-site.xml | 设置mapred-site |
3.根据2的集群节点分配,分别进入hadoop01、hadoop02、hadoop03中修改以下几个配置文件,根据节点上配置的资源节点类型不同,各文件间存在细微的差异。下面逐一对各虚拟机的配置文件进行详解:
进入hadoop01/02/03的hadoop-2.10.0/etc/hadoop文件下,vim打开slaves文件在配置文件在空白处新增以下内容:
hadoop01
hadoop02
hadoop03
进入hadoop01/02/03的hadoop-2.10.0/etc/hadoop文件下,vim打开hadoop-env.sh文件在配置文件在空白处新增以下内容:
export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/opt/jdk1.8.0_171
添加JAVA环境变量
进入hadoop01/02/03的hadoop-2.10.0/etc/hadoop文件下,vim打开core-site.xml文件在配置文件(在
fs.defaultFS
hdfs://hadoop01:9000
hadoop.tmp.dir
/opt/hadoop-2.10.0/tmp
这里
表示某个性能, 表示要添加的性能名称, 表示性能指定的表现形式。其中,fs.defaultFS从字面意思可以看出,它指的是HDFS默认文件系统位置,设置端口号为"hdfs://替换你的虚拟机主机名:指定端口号“,这样设置后在web端可以通过浏览器地址栏输入“hadoop01:9000"访问到HDFS文件系统。 hadoop.tmp.dir,指hadoop的 临时文件 目录,这里指定一个文件夹给它,记得在你所指的的位置新建对应的文件夹哦。
进入hadoop01/02/03的hadoop-2.10.0/etc/hadoop文件下,vim打开yarn-site.xml文件在配置文件(在
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
hadoop02
这里一定要指定哪台虚拟机上配置了ResourceManager
进入hadoop01/02/03的hadoop-2.10.0/etc/hadoop文件下,vim打开mapred-site.xml文件在配置文件在空白处新增以下内容:
mapreduce.framework.name
yarn
进入hadoop01的hadoop-2.10.0/etc/hadoop文件下,vim打开hdfs-site.xml文件在配置文件(在
dfs.replication
3
dfs.namenode.http.address
hadoop01:50070
dfs.namenode.secondary.http-address
hadoop03:50090
dfs.namenode.name.dir
file:/opt/hadoop-2.10.0/hdfs/name
dfs.datanode.data.dir
file:/opt/hadoop-2.10.0/hdfs/data
在hdfs-site.xml中要指定namenode节点打开的端口号,secondaryNamenode打开的端口号,以及给namenode和datanode设置临时存放地址。(切记,为了防止出错,一定在对应位置新建该文件夹)
进入hadoop02的hadoop-2.10.0/etc/hadoop文件下,vim打开hdfs-site.xml文件在配置文件(在
dfs.replication
3
dfs.namenode.secondary.http-address
hadoop03:50090
dfs.namenode.name.dir
file:/opt/hadoop-2.10.0/hdfs/name
dfs.datanode.data.dir
file:/opt/hadoop-2.10.0/hdfs/hadoop02
注意,这里的datanode.data.dir即hadoop02的数据临时存放目录地址要和hadoop01区别开,否则肯会当成一个datanode节点,在运行时报错。
进入hadoop03的hadoop-2.10.0/etc/hadoop文件下,vim打开hdfs-site.xml文件在配置文件(在
dfs.replication
3
dfs.namenode.secondary.http-address
hadoop03:50090
dfs.namenode.name.dir
file:/opt/hadoop-2.10.0/hdfs/name
dfs.datanode.data.dir
file:/opt/hadoop-2.10.0/hdfs/hadoop03
注意,这里的datanode.data.dir改为hadoop03
配置文件详解结束。