本文是胎教级教搭建,适合学会如何安装虚拟机和稍微有点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