MacOS下,如何搭建大数据Hadoop集群环境,看这一篇足矣!

1 篇文章 0 订阅
1 篇文章 0 订阅

首先声明,以下的所有配置都是基于VMWare Fusion搭建,倘如没下载此软件,请自行下载。

第一步 环境准备
此时,我已经默认你有了一台虚拟机了(如果没有,请自行下载)。在启动第一台虚拟机的时候,这个时候,你的虚拟机是无法ping通外网的,因为没和mac网关相关联。首先,查看你的mac网关ip和子网掩码。使用command+空格输入ter显示出终端操作界面,输入如下指令即可(这时,请不要关闭终端,因为后续需要用到这两个ip):

cat /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf

这时,目标在如图位置:
在这里插入图片描述
其中,ip就是网关ip,netmask就是子网掩码。此外,还需要查看mac下的域名解析(同样的,请不要关闭这个页面,因为后续需要使用到这个域名)。
在这里插入图片描述
这里,我就写了一个国外的googel域名,为的是日常方便访问googel,当然,你也可以使用多个域名。这里就不继续拓展。下面,进入虚拟机配置。
在这里插入图片描述
在虚拟机(root账户)下,输入如下指令,设置相关网络配置。在这里,我使用的是ens33号网卡,使用ifconfig即可查看使用的网卡。如图:
在这里插入图片描述有的朋友使用的是eth0,没关系,如果你想跟我一样的配置,直接复制我的配置就好了,如果不想和我一样,则在如下指令的最后将ens33替换成你的虚拟机中的使用的网卡就好了。

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

进入配置页面,附上我的配置相关项:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static  #每次启动vm时,使用自定义的IPADDR,不动态生成
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
#UUID=a047eee0-6bbb-47b0-accc-11a29bcfcef4
#DEVICE=ens33
ONBOOT=yes #此文件的所有配置项在vm启动时自动生效
#2020-05-21
IPADDR=192.168.42.101 #自定义vm的ip
NETMASH=255.255.255.0 #子网掩码
PREFIX=24
IPV6_PRIVACY=no
DNS1=8.8.8.8 #域名
GATEWAY=192.168.42.2 #网关ip

注意,带#号进行注释的都是需要特别注意的配置项。其中的NETMASH和GATEWAY以及DNS1分别对应着在mac终端下的网关ip和子网掩码以及域名。在文章的开头已经列出查看方法。

特别注意,有的小伙伴,发现配置好ip后,ping不通外网。

这时,如果排除网关和域名都配置正确的话,接下来100%跟你配置的ip有关。请注意,这个ip不是乱配的,如果配置不对,不说ping不上外网,也会造成后续的远程终端链接失败的现象(博主亲测,不信的可以试试)。配置时,前三个网段,一定要和网关ip也就是GATEWAY的前三个网段保持一致,最后一个网段就可以随意点,在0~255即可。并且,为了后续集群配置,这时,请将虚拟机的网络适配器改为nat模式。而后,ping下百度,出现如图:
在这里插入图片描述
说明虚拟机的基本环境没问题(注意,倘如想改你的ip,每次配置完此文件之后,都需要使用service network restart)命令使其生效,并不需要reboot重启,浪费时间。没问题之后,开启集群模式!

第二步 大数据集群模式虚拟机环境准备
首先,打开虚拟机的资源窗口
在这里插入图片描述
克隆一个完整的虚拟机,操作如图:
在这里插入图片描述
此时,如果出现
在这里插入图片描述
这样的提示,将虚拟机暂时关闭即可,操作如图(点击红色箭头所指处,选择关闭):
在这里插入图片描述
陆续克隆之后,按照你的想法,给其命名,在这里,附上我的克隆效果:
在这里插入图片描述
紧接着,在102、103上改动网络配置中的虚拟机ip即可(简单点,就是最后一个网段一次加1就行),配置如图:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
#UUID=a047eee0-6bbb-47b0-accc-11a29bcfcef4
#DEVICE=ens33
ONBOOT=yes
#2020-05-21
IPADDR=192.168.42.102  #这里改变了
NETMASH=255.255.255.0
PREFIX=24
IPV6_PRIVACY=no
DNS1=8.8.8.8
GATEWAY=192.168.42.2

103上也是一样,这里就不赘述。配置好了,ping下百度,如果配置成功,会出现网络包的动态传输。否则,请移步至第一步重新配置网络。

第三步 hadoop集群模式之前提准备
首先,需要修改主机名称,输入如下指令:

vim /etc/hostname

将localhost删除,写上自己喜欢的名称后wq保存即可。
而后,修改虚拟机的映射,后续配置ssh免密登陆需要用到。输入如下命令:

vim /etc/hosts

在文件的末尾添加上ip+主机名的映射。特比注意,不要调换位置写成主机名+ip模式,这样的配置是无效的(博主亲测)。其他两台虚拟机请重复上述操作。配置好后,接下来配置ssh免密登陆和群发脚本。

第四步 ssh免密登陆+群发脚本
首先,需要需要在root账户下配置一个非root用户(useradd -m 用户名)免密登陆就是为了方面后续启动hadoop中的dfs和yarn以及执行群发脚本的时候,需要频繁的输入其他虚拟机的密码。注意,三台虚拟机都需要配置非root账户,并且此时,请全部切换到配置的非root账户环境下。
首先,配置ssh免密登陆,在第一台虚拟机上输入如下指令

ssh-keygen -t rsa 

连续按三下回车键,生成一对密钥(公钥和私钥),私钥自己拥有,公钥需要传递给免密登陆对象。然后,输入如下指令:

ssh-copy-id 待传递的账户名@待传递的虚拟机ip

这里请注意,自己也要配置一个公钥。配置成功后,输入如下指令

ssh 主机名称

如果不需要输入密码,则配置成功,exit退出。然后,在其他两台虚拟机上进行上述同样的操作。
群发脚本配置,只要在一台虚拟机上配置脚本文件即可,例如在第一台虚拟机的~目录下,mkdir创建一个bin目录,再touch一个xsync文件,输入以下文本内容:

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=101; host<=103; host++)); do
echo --------------------- hadoop$host ----------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

此时,你需要改动的就是在for循环里面,将虚拟机的标号控制好即可。如果你的主机名称给我一样的配置,那么恭喜你,不需要改动任何东西。到这里,群发脚本配置完成。

第五步 hadoop集群启动
首先,附上我的集群规划图:
在这里插入图片描述
首先,你必须要拥有hadoop的tar包。在这里,我用的是hadoop-2.7.4.tar.g版本。上传tar包前,必须要配置你的jdk,我用的是jdk-8u161-linux-x64.tar.gz。
jdk配置:
在配置了群发脚本的虚拟机上,输入如下指令:

sudo vim /etc/profile

在末尾加上jdk相关配置如下:

export JAVA_HOME=/home/hadoop/moudle/jdk1.8.0_161
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

你需要改动的就是,JAVA_HOME的路径。然后,使用如下命令进行配置群发

xsync jdk1.8.0_161

这时候,你会发现,其他虚拟机的相同的目录下,都有jdk1.8.0_161这个目录,且JAVA_HOME已经配置完成。然后输入java和java -version验证jdk的配置,大公告成后,是不是感觉很爽???
hadoop配置
在已经解压好的hadoop目录下,进入etc/hadoop目录:
输入vim core-site.xml,配置如下:

<configuration>
<!-- 指定 HDFS 中 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9000</value>
</property>
<!-- 指定 hadoop 运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/moudle/hadoop-2.7.4/data/tmp</value>
</property>
</configuration>

输入vim hadoop-env.sh,在末尾加上配置如图:

export JAVA_HOME=/home/hadoop/moudle/jdk1.8.0_161

输入vim hdfs-site.xml,配置如图:

<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop103:50090</value>
</property>
</configuration>

输入vim yarn-env.sh,在末尾配置如图:

export JAVA_HOME=/home/hadoop/moudle/jdk1.8.0_161

输入vim yarn-site.xml,配置如图:

<configuration>
<!-- Site specific YARN configuration properties -->
<!-- reducer 获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop102</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
</configuration>

输入vim mapred-env.sh,在末尾配置如图:

export JAVA_HOME=/home/hadoop/moudle/jdk1.8.0_161

而后,在namenode的hadoop目录下,输入如下指令(根据我的规划图和相关配置图定义你的namenode),启动hdfs:

sbin/start-dfs.sh 

在resourcemanager节点下,输入如下指令,启动yarn:

sbin/start-yarn.sh

启动后,可分别在各个虚拟机上使用jps指令,查看在规划图下的对应进程。
如果配置没问题,可输入hadoop101:50070查看namenode可视化界面,如出现下图,则表面配置hadoop集群配置成功:
在这里插入图片描述
否则,请仔细核对相关配置。特别注意,使用主机名+端口的形式访问的前提,是要在mac的/etc/hosts文件下加上如下配置(添加映射关系):

192.168.42.101 hadoop101
192.168.42.102 hadoop102
192.168.42.103 hadoop103

否则,需要使用ip+端口的方式进行namenode的访问。

好了,以上就是mac下的hadoop集群配置了,有什么问题,请随时留言,我会逐一解答。创作不易,觉得有帮助到你的话,麻烦动动您的发财小手,点个赞吧~。

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值