在公网IP为x.x.x.x、y.y.y.y和z.z.z.z并装有Centos8的服务器上进行hadoop集群搭建,都安装hadoop-3.1.3和server-jre-8u202-linux-x64。
第一步,创建统一工作目录。
# 软件安装路径
命令:mkdir -p /usr/local/src/server/
# 数据存储路径
命令:mkdir -p /usr/local/src/data/
# 安装包存放路径
命令:mkdir -p /usr/local/src/software/
第二步,下载server-jre-8u202-linux-x64.tar.gz安装包。
到地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html下载server-jre-8u202-linux-x64.tar.gz安装包。然后使用WinSCP将安装包上传到/usr/local/src/software文件夹中。或者也可以使用wget命令下载。
命令:cd /usr/local/src/software
wget https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html/jre-8u202-linux-x64.tar.gz
第三步,解压server-jre-8u202-linux-x64.tar.gz安装包。
命令:cd /usr/local/src/software
tar -zxvf server-jre-8u202-linux-x64.tar.gz -C /usr/local/src/server
第四步,配置环境变量。
配置/etc/profile文件,在文件添加下面的代码:
export JAVA_HOME=/usr/local/src/server/jdk1.8.0_202
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
# 刷新profile文件
命令:source /etc/profile
第五步,测试server-jre是否配置成功。
# 查看jdk版本
命令:java -version
若结果显示server-jre的版本,则说明server-jre配置成功。
第六步,关闭防火墙。
为了可以让本地的机器可以通过Web网页访问集群资源,为了防止在运行集群的时候出现集群不可访问的状况,需要关闭防火墙。
命令:systemctl stop firewalld
# 开机时禁用防火墙
命令:systemctl disable firewalld
第七步,各自修改主机名,配置IP地址映射。
命令:hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
对三台主机的IP地址进行映射,可以方便后续的配置,同时也方便对集群进行通信,三台机器同样操作。
在/etc/hosts文件中加入下面的代码:
x.x.x.x node1
y.y.y.y node2
z.z.z.z node3
第八步,配置免密登录。
# 在~目录下执行,生成密钥
命令:cd
ssh-keygen -t rsa # 按四下enter
cd /root/.ssh/
cp id_rsa.pub authorized_keys
# 将node1的密钥拷到其他服务器上
ssh-copy-id -i node2
ssh-copy-id -i node3
第九步,集群时间同步。
命令:yum -y install ntpdate
ntpdate ntp4.aliyun.com
第一步,集群规划。
NameNode=NN DataNode=DN SecondaryNameNode=SNN
NodeManager=NM ResourceManager=RM
HDFS集群—主角色:NN 从角色:DN 主角色辅助角色:SNN
YARN集群—主角色:RM 从角色:NM
框架 node1 node2 node3
HDFS NN、DN DN SNN、DN
YARN NM RM、NM NM
Hadoop集群包括两个集群:HDFS集群和YARN集群。
两个集群都是标准的主从架构集群。
逻辑上分离:两个集群互相之间没有依赖、互不影响。
物理上在一起:某些角色进程往往部署在同一台物理服务器上。
MapReduce是计算框架、代码层面的组件,没有集群之说。
角色规划的准则:
根据软件工作特性和服务器硬件资源情况合理分配。
角色规划注意事项:
资源上有抢夺冲突的,尽量不要部署在一起。
工作上需要互相配合的,尽量部署在一起。
第二步,下载hadoop-3.1.3。
登录网址:https://archive.apache.org/dist/hadoop/common/
下载hadoop-3.1.3.tar.gz。也可以使用命令下载。
命令:cd /usr/local/src/software
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz
第三步,上传、解压tar.gz压缩包。
命令:cd /usr/local/src/software
tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local/src/server
第四步,配置环境变量。
在/etc/profile文件添加下面的代码:
export HADOOP_HOME=/usr/local/src/server/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
# 使环境变量生效
命令:source /etc/profile
# 测试是否配置成功
命令:hadoop version
如果结果显示“Hadoop 3.1.3”,则说明hadoop配置成功。
配置文件在/usr/local/src/server/hadoop-3.1.3/etc/hadoop中。
第一步,对node1中的Hadoop自定义配置文件进行配置。
1)创建目录。
命令:mkdir /usr/local/src/server/hadoop-3.1.3/tmp
mkdir /usr/local/src/server/hadoop-3.1.3/dfs
2)配置hadoop-env.sh。
在hadoop-env.sh文件中加入下面的代码:
export JAVA_HOME=/usr/local/src/server/jdk1.8.0_202
# 在文件末尾加入下面的代码,设置用户以执行对应角色shell命令
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
3)配置core-site.xml。
在core-site.xml文件中加入下面的代码:
fs.defaultFS
hdfs://node1:9000
hadoop.tmp.dir
file:/usr/local/src/server/hadoop-3.1.3/tmp
io.file.buffer.size
131072
fs.trash.interval
10080
4)配置hdfs-site.xml。
在hdfs-site.xml文件中加入下面的代码:
dfs.namenode.name.dir
file:/usr/local/src/server/hadoop-3.1.3/dfs/name
dfs.datanode.data.dir file:/usr/local/src/server/hadoop-3.1.3/dfs/data
dfs.replication
3
dfs.blocksize
134217728
dfs.http.address
node1:50070
dfs.permissions
false
dfs.hosts
/usr/local/src/server/hadoop-3.1.3/etc/hadoop/workers
5)配置workers。
在workers文件中加入下面的代码:
node1
node2
node3
注意:不要有多余的换行和空格
6)mapred-site.xml配置。
在mapred-site.xml文件中加入下面的代码:
mapreduce.framework.name
yarn
mapreduce.job.ubertask.enable
true
mapreduce.jobhistory.address
node1:10020
mapreduce.jobhistory.webapp.address
node1:19888
7)配置yarn-site.xml。
在yarn-site.xml文件中加入下面的代码:
yarn.nodemanager.aux-services
mapreduce_shuffle
The http address of the RM web application.
If only a host is provided as the value,the webapp will be served on a random port.
yarn.resourcemanager.webapp.address
${yarn.resourcemanager.hostname}:8088
The https address of the RM web application.
If only a host is provided as the value,the webapp will be served on a random port.
yarn.resourcemanager.webapp.https.address
${yarn.resourcemanager.hostname}:8090
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
604800
第二步,对node2中的Hadoop自定义配置文件进行配置。
1)创建目录。
命令:mkdir /usr/local/src/server/hadoop-3.1.3/tmp
mkdir /usr/local/src/server/hadoop-3.1.3/dfs
2)配置hadoop-env.sh。
在hadoop-env.sh文件中加入下面的代码:
export JAVA_HOME=/usr/local/src/server/jdk1.8.0_202
# 在文件末尾加入下面的代码,设置用户以执行对应角色shell命令
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
3)配置core-site.xml。
在core-site.xml文件中加入下面的代码:
fs.defaultFS
hdfs://node2:9000
hadoop.tmp.dir
file:/usr/local/src/server/hadoop-3.1.3/tmp
io.file.buffer.size
131072
fs.trash.interval
10080
4)配置hdfs-site.xml。
在hdfs-site.xml文件中加入下面的代码:
dfs.namenode.name.dir
file:/usr/local/src/server/hadoop-3.1.3/dfs/name
dfs.datanode.data.dir
file:/usr/local/src/server/hadoop-3.1.3/dfs/data
dfs.replication
3
dfs.blocksize
134217728
dfs.permissions
false
dfs.hosts
/usr/local/src/server/hadoop-3.1.3/etc/hadoop/workers
5)配置workers。
在workers文件中加入下面的代码:
node1
node2
node3
注意:不要有多余的换行和空格
6)mapred-site.xml配置。
在mapred-site.xml文件中加入下面的代码:
mapreduce.framework.name
yarn
mapreduce.job.ubertask.enable
true
mapreduce.jobhistory.address
node2:10020
mapreduce.jobhistory.webapp.address
node2:19888
7)配置yarn-site.xml。
在yarn-site.xml文件中加入下面的代码:
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
node2
The http address of the RM web application.
If only a host is provided as the value,the webapp will be served on a random port.
yarn.resourcemanager.webapp.address
${yarn.resourcemanager.hostname}:8088
The https address of the RM web application.
If only a host is provided as the value,the webapp will be served on a random port.
yarn.resourcemanager.webapp.https.address
${yarn.resourcemanager.hostname}:8090
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
604800
第三步,对node3中的Hadoop自定义配置文件进行配置。
1)创建目录。
命令:mkdir /usr/local/src/server/hadoop-3.1.3/tmp
mkdir /usr/local/src/server/hadoop-3.1.3/dfs
2)配置hadoop-env.sh。
在hadoop-env.sh文件中加入下面的代码:
export JAVA_HOME=/usr/local/src/server/jdk1.8.0_202
# 在文件末尾加入下面的代码,设置用户以执行对应角色shell命令
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
3)配置core-site.xml。
在core-site.xml文件中加入下面的代码:
fs.defaultFS
hdfs://node3:9000
hadoop.tmp.dir
file:/usr/local/src/server/hadoop-3.1.3/tmp
io.file.buffer.size
131072
fs.trash.interval
10080
4)配置hdfs-site.xml。
在hdfs-site.xml文件中加入下面的代码:
dfs.namenode.name.dir
file:/usr/local/src/server/hadoop-3.1.3/dfs/name
dfs.datanode.data.dir
file:/usr/local/src/server/hadoop-3.1.3/dfs/data
dfs.replication
3
dfs.blocksize
134217728
dfs.namenode.secondary.http-address
node3:50071
dfs.permissions
false
dfs.hosts
/usr/local/src/server/hadoop-3.1.3/etc/hadoop/workers
5)配置workers。
在workers文件中加入下面的代码:
node1
node2
node3
注意:不要有多余的换行和空格
6)mapred-site.xml配置。
在mapred-site.xml文件中加入下面的代码:
mapreduce.framework.name
yarn
mapreduce.job.ubertask.enable
true
mapreduce.jobhistory.address
node3:10020
mapreduce.jobhistory.webapp.address
node3:19888
7)配置yarn-site.xml。
在yarn-site.xml文件中加入下面的代码:
yarn.nodemanager.aux-services
mapreduce_shuffle
The http address of the RM web application.
If only a host is provided as the value,the webapp will be served on a random port.
yarn.resourcemanager.webapp.address
${yarn.resourcemanager.hostname}:8088
The https address of the RM web application.
If only a host is provided as the value,the webapp will be served on a random port.
yarn.resourcemanager.webapp.https.address
${yarn.resourcemanager.hostname}:8090
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
604800
# 注意:如果集群是第一次启动,需要在Namenode所在节点格式化NameNode,非第一次不用执行格式化 Namenode 操作。
命令:hadoop namenode -format
# 在node1,node2,node3上分别启动HDFS、YARN
命令:cd /usr/local/src/server/hadoop-3.1.3/sbin
./start-dfs.sh (HDFS)
./start-yarn.sh (YARN)
# 在node1,node2,node3上查看集群的hadoop进程
命令:jps
若在node1,node2,node3上分别显示下面的结果,则说明启动集群启动成功。
# 在node1,node2,node3上分别停止HDFS、YARN
命令:cd /usr/local/src/server/hadoop-3.1.3/sbin
./stop-dfs.sh (HDFS)
./stop-yarn.sh (YARN)