实验步骤

本实验将利用vmfusion centos7,在宿主机mac中搭建hadoop集群。集群包含1个master节点、3个slave节点。

一、配置网络环境

  1. 配置虚拟机网卡

我使用的是vmfusion for mac

查看/Library/Preferences/VMware Fusion/vmnet8/dhcpd.conf文件。

或者是nat.conf文件,配置vm为静态分配ip的是这个文件。修改vmfusion为静态分配路由的方式是修改/Library/Preferences/VMware Fusion/networking文件中vm8网卡中的dhcp为no。
在VMware Workstation中,默认有三个虚拟交换机VMnet0用于桥接,VMnet1用于仅主机网络,VMnet8用于NAT

cd /Library/Preferences/VMware\ Fusion/vmnet8/
查看文件中包含的网卡网关子网掩码如下,并以此配置虚拟机的静态ip

...
# NAT gateway address
ip = 172.16.106.2
netmask = 255.255.255.0
...
  1. 在虚拟机上配置静态ip
    首先查询网络情况,查看在使用的是哪个网卡,如图我使用的是ens33
[root@localhost network-scripts]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
    valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:50:56:24:d5:78 brd ff:ff:ff:ff:ff:ff
    inet 172.16.106.191/24 brd 172.16.106.255 scope global noprefixroute ens33
    valid_lft forever preferred_lft forever
    inet6 fe80::9e38:dda8:4ec7:e0a0/64 scope link noprefixroute 
    valid_lft forever preferred_lft forever
  1. 编辑网卡
cd /etc/sysconfig/network-scripts/
vim ifcfg-ens33

修改并配置以下内容

BOOTPROTO=static
ONBOOT=yes
IPADDR=172.16.106.191
GATEWAY=172.16.106.2
NETMASK=255.255.255.0
DNS1=8.8.8.8

然后使用命令reboot重启虚拟机就行
3. 配置网络域名

vi /etc/hosts
# 请依照自己的网络配置添加以下内容
172.16.106.191 master
172.16.106.201 slave1
172.16.106.202 slave2
172.16.106.203 slave3

# 测试一下
ping master
PING master (172.16.106.191) 56(84) bytes of data.
64 bytes from master (172.16.106.191): icmp_seq=1 ttl=64 time=0.250 ms
64 bytes from master (172.16.106.191): icmp_seq=2 ttl=64 time=0.066 ms
64 bytes from master (172.16.106.191): icmp_seq=3 ttl=64 time=0.061 ms

二、安装jdk和hadoop

2.1 下载jdk

  1. https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html中找一下包。

推荐国内镜像https://mirrors.huaweicloud.com/java/

  1. 将jdk下载到本地
## 在Linux中opt目录常常用于存放测试软件和安装目录
cd /opt
curl https://repo.huaweicloud.com/java/jdk/8u172-b11/jdk-8u172-linux-x64.tar.gz -O 
tar zxvf jdk-8u172-linux-x64.tar.gz

2.2 下载hadoop

  1. http://hadoop.apache.org/中找一下包

推荐国内镜像http://mirror.bit.edu.cn/apache/hadoop/common

  1. 下载到本地
cd /opt
curl http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz -O  # -O, --remote-name   Write output to a file named as the remote file
tar zxvf hadoop-2.7.7.tar.gz

2.3 配置环境

# 清楚掉有的没有下载包
rm -y *.gz
#  修改环境变量
vi /etc/profile
# 填入以下内容
export  JAVA_HOME=/opt/jdk1.8.0_172
export  PATH=$PATH:$JAVA_HOME/bin
export  HADOOP_HOME=/opt/hadoop-2.7.7
export  PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# 保存退出
 # 使其生效
source /etc/profile

测试jdk是否安装成功

[root@8e53fc296522 opt]# java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)

2.4 配置hadoop环境

推荐vscode中的一个ssh-remote插件,可以用来编辑服务器中的文件。

cd /opt/hadoop-2.7.7/etc/hadoop/
vi core-site.xml
编辑为以下内容
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
</configuration>
vi hdfs-site.xml
编辑为以下内容
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>
vi slaves
编辑为以下内容
slave1
slave2
slave3
复制 mapred-site.xml.template
cp  mapred-site.xml.template  mapred-site.xml
vi mapred-site.xml

修改为以下内容

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
vi yarn-site.xml 

修改为以下内容

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
        <property>
            <name>yarn.resourcemanager.resource-tracker.address</name>
            <value>master</value>
        </property>
</configuration>
最后一步,配置hadoop中的 java home

添加 JAVA_HOME=/opt/jdk1.8.0_172hadoop-env.sh 文件头部

三、集群配置

每一台机器要想通信,需要不一样的mac地址,不一样的ip,要不然网卡没有办法识别。
同时要想集群的每台机器都可以通过ssh相互访问,需要配置免密。

3.1 配置网卡Mac地址

  1. 使用shutdown关闭虚拟机
  2. 然后点击设置就行,如下图
    在这里插入图片描述

3.2 配置ip地址

按照一开始的配置方法进行配置

3.3 配置ssh

# 安装ssh服务
yum install -y openssl openssh-server
# 安装ssh客户端
yum install -y openssh-clients

3.4 配置免登录

# 生成一个公私钥对
ssh-keygen -t rsa

私钥在/root/.ssh/id_rsa
公钥在/root/.ssh/id_rsa.pub
将公钥的内容放在其他用户的~/.ssh/authorized_keys中,本机就能免密ssh访问其他用户了

[root@8e53fc296522 sysconfig]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:k9bssWFmLAW8Hef4guO0g1IiyNT/vo08KnQDm7Ffy/o root@8e53fc296522
The key's randomart image is:
+---[RSA 2048]----+
|       ..        |
|        ... .    |
|  .      o.=     |
| . +    .*o .    |
|o.  B   S.X.     |
|...=.+.o+B.+.    |
|  ..oo=+.oo.     |
|   ...o=*        |
|    .+=Eoo       |
+----[SHA256]-----+
vim ~/.ssh/authorized_keys
# 以下公钥来源于四台机器的`/root/.ssh/id_rsa.pub`文件中,请将这些信息整合输入。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6N5QVjUl04dpli5kiJYSaz8qAlB5vJYgdk+o9tKqtyWv4PxFDN2We8SXQJNpzMbFshLQy04XrogjI08+2lffrVaKaIRvlb9rZmIHm5ZGsGJNXNvgFlRiZiBHyGXJGG8voF+cwS2n+2wowh83FB3fiFpb7/vfaQHJVnks1uX55SBWDPOcXLZjeXvYwETehHpvyA4JP2VjevXWCMyzOeywp6bW9oRN85lF0EAWFb6pMevxqDgkfl+bIPbIQX66fo+bluRvtoNsu9YgN+v+DHZt7ncrR3rgmdjZ6VdsuVxcykl2Hs8VdVjCe8yPekT5HpsHG84TK7/D7XYS5WrlQAT5v root@master
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfd/sX8WSbtVooTuL2a5MOXWRB5M9I2SD2OzYyDD566A1YZmS9eTHuxxGfCQ0YpxNF2eOPehDqzm6qqMlDvnRqWAbVuGe3XQmgtvNXGbQo3c09/78yXzer/ElyCoF8vJgPnThYcYtDp2qQjCBl7sgEfodABsYodKR4JeHdUDRlOHTvMV06TZGpD3Z4eNCYuJ8cIz7UqzLet8fPcYEKf2JOX8RVrlzh4nXseDEPPDK/83H/QbtCVVoROrU4tLdVFz5ws0Cf942s4MJPgUXDpi+Yu+r2pyTRgoBEhs09yPpzBoCyppwlCxAajr3qlicbyGGvJ8x6nyqPl5DftB2g8Rn3 root@slave1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYw/p2N1hnqKk0Q1rnKMkrF48hHf0w2ppz3BHpWdPI/uXt3OBvLN39GUZJ/D/LykYG/hw1ZQFY/8AvNOO+W8yw+gEBK0LlKlMZLdkflv23FAW9bAeMDbdkGxYdnO9rCvPNxRW3Z1fYdjJN5PU12WIDCqWATbzphlMXQgopwiLfJqx7GQWRLMc2dvwb1SZV9p1lO0JVcr9r7ThNxEyzIpmJphY1Enyh8YMv4l1Du6IQXuXsOpTeQ38xKcGUoQE5EZ64IX7QxbNdrtBAfu4VqZMsPwVfNSkOoST0nmj2f8jqub1dkAAO6WccdSVEFvkiFWNSFo6pGwGrE5KFSG/X3xoR root@slave2
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDdttCPtW/paspiZHB62a+CjTOSXRVsUfYJDkxRcxPE8cawcijP0chuWtL8jJFh31I6JXYkBmjK/3s3VhT9gjrHd6VkTAs5BE855i/cbRAdq5LxkaR8w06TF/H3b8J9BCGWTsJRT9jTB1v61sFQ0Q1MwbihZ7t9IJDK5+2SimQGex055OMw8NhGCHaQBmdktO4/FH05ifdJGTj82u+ffYBBe/JEzFWL2BtmW9xSGm1w4XInHwM0bmca1jAhaeIK4dmO8yP3Tk0q4EDy26k8mFVZOss2hxCFoMfjV+Cjsu0Bxf9oHkbRzFi8a3SrcxS0wO71g7HHIjW+P+lG9EOsZKaN root@slave3

然后不同的节点之间就能互通了。可以使用ssh测试一下。

ssh root@172.16.106.191 # 或者 ssh root@master
ssh root@172.16.106.201 # 或者 ssh root@slave1
ssh root@172.16.106.202 # 或者 ssh root@slave2
ssh root@172.16.106.203 # 或者 ssh root@slave3

四、测试hadoop

  1. 格式化数据
    hadoop namenode -format
  2. 启动集群
    start-all.sh # 只在master节点上执行就行
  3. 在宿主机上访问 172.16.106.191:50070 172.16.106.191:8088
    在这里插入图片描述
    在这里插入图片描述
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐