本文是胎教级教搭建,适合学会如何安装虚拟机和稍微有点linux基础的胎儿食用

本文所用镜像与软件包下载地址

Centos7 64位 Minimal
jdk 8u301 linux 64位
Hadoop 2.7.3

开始搭建

创建虚拟机

第一步先创建虚拟机,这里不用急着创建集群,先部署完主机的前置。
这里采用的镜像是centos7 minimal,是最简化、最纯净的centos7系统。

配置ip地址

想要组成集群,那么需要给不同的虚拟机配置不同的ip,这一步是先配置一个静态的ip来方便集群间的连接。
登陆后,先使用systemctl restart network重启一遍服务。
重启后,接着修改网络配置文件ifcfg-ens33,来将DHCP转为静态ip,以及进行网卡激活等操作。

vi /etc/sysconfig/network-scripts/ifcfg-ens33

#将文件中ONBOOT=no 修改为 ONBOOT=yes
#将文件中BOOTPROTO=dhcp 修改为 BOOTPROTO=static

#添加以下内容
IPADDR=192.168.128.130
NETMASK=255.255.255.0
GATEWAY=192.168.128.2
DNS1=192.168.128.2
HWADDR=你的网卡地址

其中,网卡地址可以通过ip addr命令来查询

如图,找到2号网卡口ens33,后面link/ether跟着的数字就是网卡地址
修改成功后,再执行一遍systemctl restart network来应用配置,重启后查看ip,如果显示为修改的ip,则修改成功
这里配置完实际上是连不了网的,我们需要接着修改虚拟机的设置来连接到网络。我们需要通过虚拟机自带的网络编辑器来修改网络

我们需要修改的地方有五处,分别在图中指出

在进行这一步前,我们需要将虚拟机的网络设置为vmnet8,因为我们要修改的是vmnet8的配置,如果没有使用这个网络,那么设置不会生效。

首先需要将子网ip修改为与你之前所使用的静态ip相对应的ip

接着到nat设置里,修改对应的网关ip

最后再到dhcp设置里修改对应的ip池

最后应用设置即可。配置完后,可以用以下命令来测试网络是否畅通,能否正常使用yum

yum clean all
yum makecache

安装软件包与配置环境

安装所需软件包

yum -y install wget vim zip openssh-server openssh-clients

安装Java

首先先将我们下载的jdk包上传到centos
然后解压jdk包

tar -zxvf jdk-8u301-linux-x64.tar.gz

将解压得到的文件移动到/usr/local目录下,并删除压缩包

mv jdk1.8.0_301/ /usr/local
rm -rf jdk-8u301-linux-x64.tar.gz

创建软链接

ln -s /usr/local/jdk1.8.0_301/ /usr/local/jdk

将java添加到PATH中,配置JAVA_HOME

vim /etc/profile
#添加以下三句
export JAVA_HOME=/usr/local/jdk1.8.0_301
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

执行修改

source /etc/profile

安装完后,使用java -version,如果能正常显示java版本即为安装成功。

安装Hadoop

下载、解压hadoop

cd /opt
wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.3/hadoop-2.7.3.tar.gz
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local

修改Hadoop配置文件

前往Hadoop文件夹下

cd /usr/local/hadoop-2.7.3/etc/hadoop

修改core-site.xml

<property>
  <name>fs.defaultFS</name>
   <value>hdfs://master:8020</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
   <value>/var/log/hadoop/tmp</value>
</property>

修改hadoop-env.sh,添加以下句

export JAVA_HOME=/usr/local/jdk1.8.0_301

修改yarn-env.sh

export JAVA_HOME=/usr/local/jdk1.8.0_301

修改mapred-site.xml文件,这个文件是复制过来的

cp mapred-site.xml.template mapred-site.xml

<property>
 <name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
 <name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
 <name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>

修改yarn-site.xml

<property>
<name>yarn.resouremanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resouremanager.address</name>
<value>{yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<name>yarn.resouremanager.scheduler.address</name>
<value>{yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<name>yarn.resouremanager.webapp.address</name>
<value>{yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<name>yarn.resouremanager.webapp.https.address</name>
<value>{yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resouremanager.resource-tracker.address</name>
<value>{yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<name>yarn.resouremanager.admin.address</name>
<value>{yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/data/hadoop/yarn/local</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/data/tmp/logs</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs/</value>
<description>URL for job history server</description>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>

修改slaves

#加入以下
slave1
slave2
slave3

修改hdfs-site.xml

<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.name.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>

修改/etc/hosts下hosts文件

#加入以下字段
192.168.128.130 master master.centos.com
192.168.128.131 slave1 slave1.centos.com
192.168.128.132 slave2 slave2.centos.com
192.168.128.133 slave3 slave3.centos.com

克隆虚拟机

现在需要另创建3台虚拟机来组成集群,通过VMware的克隆功能可以保留之前的设置来克隆出一台全新的、独立的虚拟机。这里需要生成3个虚拟机分别命名slave1、slave2、slave3。
注:克隆类型需选择完整克隆

开启虚拟机slave1,修改相关配置

删除/etc/udev/rules.d/70-persistent-net.rules

rm -rf /etc/udev/rules.d/70-persistent-net.rules

修改slave1的ifcfg-eth33文件
修改HWADDR、IPADDR和注释UUID

vim /etc/sysconfig/network-scripts/ifcfg-ens33
#通过ip addr查询网卡地址

#UUID=
IPADDR=192.168.128.131

修改机器名

vim /etc/sysconfig/network

#修改以下
NETWORKING=yes
HOSTNAME=slave1.centos.com

修改后执行reboot重启
重启后,通过在master机执行ping slave1测试是否配置成功
重复以上步骤,克隆master到slave2、slave3,并按照上述步骤修改相关配置。

配置SSH免密登陆

使用ssh-keygen

ssh-keygen -t rsa

三次设置均使用默认即可
生成后将生成的公钥复制到远程机器中

ssh-copy-id -i /root/.ssh/id_rsa.pub master
ssh-copy-id -i /root/.ssh/id_rsa.pub slave1
ssh-copy-id -i /root/.ssh/id_rsa.pub slave2
ssh-copy-id -i /root/.ssh/id_rsa.pub slave3

最后,通过使用ssh slave1 ssh slave2 ssh slave3来测试公钥是否成功复制。

配置NTP时间同步服务

Hadoop集群对时间要求高,各节点时间必须同步,这里使用NTP来同步各机时间。

安装NTP

yum -y install ntp

设置主机master为主节点

vim /etc/ntp.conf
#注释掉server开头的行并添加以下内容
server master
restric 192.168.0.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10

同上修改slave1、2、3
注:server master需要修改为server slave1、server slave2或server slave3
设置永久关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

启动NTP服务并设置自启

systemctl start ntpd
systemctl enable ntpd.service

在slave1、2、3上执行同步时间命令

ntpdate master

**注:如出现 ntpdate[1472]: the NTP socket is in use, exiting,需先暂停ntp再进行同步
**

service ntpd stop
ntpdate master

集群配置与启动

设置环境变量

在master,slave1、2、3上修改、/etc/profile

vim /etc/profile
#加入以下命令
export HADOOP_HOME=/usr/local/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$PATH:/usr/java/jdk/bin

应用配置

source /etc/profile

配置完环境变量后,需要进行格式化

hdfs namenode -format

格式化后就可以在master上启动集群了

cd $HADOOP_HOME
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver

**hdfs的监控网页:http://192.168.128.130:50070/
yarn的监控网页:http://192.168.128.130:8088/
日志的监控网页:http://192.168.128.130:19888/**

关闭集群:sbin/stop-all.sh

最后修改:2022 年 08 月 24 日
如果觉得我的文章对你有用,能不能v我50参加疯狂星期四