本文系统是最小化安装的CentOS
-
网络配置
新建的虚拟机无法上网,需要修改虚拟机的网络配置。
为了保证集群的稳定,将网络连接改成NAT模式,此时VMnet8就相当于这台虚拟机的路由器。(实验室中的IP有时会变化,使用桥接的话IP发生变化之后就需要重新配置,比较麻烦,所以不采用)

打开虚拟网络编辑器

打开NAT设置,可以发现虚拟机的网关是
192.168.88.2
,而本机VMNET 8的ip地址是192.168.88.1


打开DHCP设置

我们打算配置1个master节点 5个slave节点
其中master节点ip地址为:192.168.88.130
slave1:192.168.88.131
slave2:192.168.88.132
slave3:192.168.88.133
slave4:192.168.88.134
slave5:192.168.88.135
先配置master节点
进入系统,查看IP地址和MAC地址

进入系统
- 配置网卡
cd /etc/sysconfig/network-scripts
vi ifcfg-ens33
原始配置信息
进行修改,配置固定ip
显示行号,vim命令模式下:
set number
撤销操作:u
,恢复撤销:ctrl + r

- 重启网络服务
service network stop
service network start
- 查看网络状况
ip addr
IP地址修改成功
可以看到,IP地址分配成功了,192.168.88.130
有了ip地址之后,为了方便配置,使用putty进行连接,这样就无需再WMware界面进行接下来的配置了。(重点是复制内容方便)


修改主机名
sudo vim /etc/sysconfig/network
添加一行
HOSTNAME=master
修改hosts文件
sudo vim /etc/hosts
添加六行
192.168.88.130 master
192.168.88.131 slave1
192.168.88.132 slave2
192.168.88.133 slave3
192.168.88.134 slave4
192.168.88.135 slave5
-
安装Java
-
下载Java
使用Hadoop需要Java 的支持,首先在系统中安装Java:下载地址
下载Linux下64位Java:jdk-8u171-linux-x64.tar.gz
将文件传到虚拟机中(可以使用WinSCP这个工具进行传输,同样输入目标主机的ip地址后,登录账户即可)
WinSCP主界面
-
新建Java文件夹安装Java
mkdir /usr/java
将刚下载好的文件拖拽到/usr/java
文件夹中
传输文件
-
传输完成后,解压文件
cd /usr/java
tar -xzvf jdk-8u171-linux-x64.tar.gz
(压缩包可以删除rm jdk-8u171-linux-x64.tar.gz
,为了方便也可安装vimyum install vim
) -
配置环境变量
vi /etc/profile
在文件末尾添加
export JAVA_HOME=/usr/java/jdk1.8.0_171
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
- 令更改生效
source /etc/profile
- 测试一下
javac
,生成用法信息即安装成功
-
安装Hadoop
这里安装Hadoop 2.6.5(之前用过这个版本,各种文件都在,所以就没有安装最新版)
- 新建Hadoop文件夹安装Hadoop
mkdir /usr/hadoop
- 下载Hadoop,使用WinSCP将文件传输到虚拟机
下载地址 - 解压文件
tar -xzvf hadoop-2.6.5.tar.gz
- 下面开始配置Hadoop,配置文件都存放在
/usr/hadoop/hadoop-2.6.5/etc/hadoop
文件夹下了
- 首先配置
hadoop-env.sh
,配置Hadoop的环境
export JAVA_HOME=/usr/java/jdk1.8.0_171
- 然后配置
core-site.xml
,配置Hadoop的Common组件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.88.130:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hadoop-2.6.5/tmp</value>
</property>
</configuration>
fs.defaultFS
中填写的是主节点的ip地址,也可以填主节点名称master
- 然后配置
hdfs-site.xml
,配置HDFS文件系统
<configuration>
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/hadoop-2.6.5/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/hadoop-2.6.5/dfs/data</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
- 接下来配置
mapred-site.xml
,配置MapReduce组件
解压后文件夹中最初是没有这个文件的,使用命令
cp mapred-site.xml.template mapred-site.xml
复制一个
修改如下:
<configuration>
<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>
</configuration>
- 继续配置
yarn-site.xml
,对Yarn组件进行配置
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
- 最后配置
slaves
文件
slave1
slave2
slave3
slave4
slave5
如果localhost不删除则主节点也参与计算,也就是六个计算节点
-
复制虚拟机,复制五个slave节点,这样就不需要在其他虚拟机上安装Java,重新配置Hadoop了
右键虚拟机名字-管理-克隆(需要先将虚拟机关闭)
虚拟机克隆
克隆当前状态
选择创建完成克隆
指定克隆机名称,选择保存地址后,点击确定,稍等片刻后即可。
完成克隆
-
配置虚拟机
复制过来的虚拟机与刚刚配置的机器完全一致,需要进行一些配置的修改。
-
修改网络配置信息
复制虚拟机的网络信息
修改MAC地址和IP地址
修改后的IP信息
可以看到IP地址已经正确了
复制的虚拟机UUID是一样的 但是MAC地址不一样,暂时不知道会有什么影响,以后再解决吧
而且目前虚拟机无法解析域名,设置DNS后依然无效,待解决
配置文件中MAC地址与UUID直接删除也不影响正常使用
突然发现虚拟机无法解析域名
- 修改HOSTNAME
vim /etc/sysconfig/network
HOSTNAME = slave1
(此过程重复5次……直到所有虚拟机配置完毕)
如果使用master可以ping通全部的slave节点,则配置成功
-
运行Hadoop
首先,格式化HDFS
为了方便起见,将Hadoop路径添加到环境变量中,这样每次就不需要到对应的文件夹输入命令了
vim /etc/profile
export HADOOP_HOME=/usr/hadoop/hadoop-2.6.5
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HADOOP_LOG_DIR=/usr/hadoop/hadoop-2.6.5/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR
- 输入
hdfs namenode -format
格式化HDFS - 输入
start-all.sh
启动集群
如果直接启动的话,需要输入每一个slave节点的密码,非常不方便,可以配置集群节点间的免密登录
CentOS直接输入ssh-keygen -t rsa -P ''
即可产生公钥。
接下来将公钥分发给slave节点scp ~/.ssh/id_rsa.pub root@slave1:~
登录slave1,输入如下命令
ssh-keygen -t rsa -P ''
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
完成所有slave节点的配置后,master就可以免密登录所有的节点
- 输入jps查看进程运行情况
主节点(不知道secondary namenode没有启动,手动启动一下):
[root@master ~]# hadoop-daemon.sh start secondarynamenode
starting secondarynamenode, logging to /usr/hadoop/hadoop-2.6.5/logs/hadoop-root-secondarynamenode-master.out
[root@master ~]# jps
2901 ResourceManager
3221 Jps
2410 NameNode
3183 SecondaryNameNode
从节点:
2417 NodeManager
2363 DataNode
2559 Jps
关闭master防火墙,可以从宿主机浏览器下访问Hadoop
地址栏输入master的ip地址与端口号192.168.88.130:50070


接下来运行一个Word Count的例子测试一下系统功能
网友评论