Hadoop大数据环境搭建保姆级教程(完整版)

前言:找了全网关于mac配置Hadoop大数据框架,很多都不不全面,有的还没有效果,对于新手小白来说极其不友好,因此特地花费了几天时间整理Hadoop环境搭建教程,保证一看就会,干货内容很多,请耐心学习!

1、准备工作

请安装以下几个软件
VMware
Centos 7
安装链接:
VMware Fusion12安装链接
Centos安装链接

2、静态IP地址配置

想为虚拟机配置固定ip,需要设置网关,但是mac版的vmware workstation没有Virtual Network Editor,所以不能直接查看到,需要在终端执行如下命令( 不要漏掉VMware后的\

cd /Library/Preferences/VMware\ Fusion/vmnet8

然后输入ls,你会看到几个文件
在这里插入图片描述
接着使用vim操作打开nat.conf文件就可以查看到vmnet8的网关地址,输入命令为:

vi nat.conf

结果如下图所示:
在这里插入图片描述

然后就找到vmnet8的的网关地址

ip = 172.16.55.2
netmask = 255.255.255.0

然后使用 管理者权限登陆虚拟机,并且通过vim操作进入文件,操作命令为:

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

会出现如下结果
在这里插入图片描述
下面我们需要修改几个配置参数,从而达到使用静态IP地址的目的,具体如下图:
在这里插入图片描述其中,

  • BOOTPROTO=“dhcp” 改为BOOTPROTO="static"
  • ONBOOT=“no” 改为ONBOOT="yes"
  • 定义IPADDR的值:IPADDR的选取是不唯一的,需要在一定范围内选取,在终端输入:
vi dhcpd.conf

在这里插入图片描述
出现如下结果:
在这里插入图片描述也就是说,你设置的静态IP地址必须在如图方框的范围内才有效,我这里选取的IPADDR=172.16.155.130,当然也可以是其他的数值(按:q退出vim)

  • GATEWAY和NETMASK设置就是咱们之前获取的vmnet8的的网关地址中的ip和netmask
GATEWAY = 172.16.55.2
NETMASK = 255.255.255.0
  • 获取DNS,则是在mac电脑中的系统偏好设置–>网络–>高级–>DNS
    在这里插入图片描述
    在这里插入图片描述
    注意:这里的DNS配置不是唯一的,你可以配置多个DNS,建议在配置一个百度的公共DNS,以便更换了的无线网络也可以响应。
    DNS2=180.76.76.76
    在这里插入图片描述

OK,走到这里咱们就把静态IP地址给设置好了,然后咱们来检验一下,是否配置成功
在虚拟机上输入[ 必须要restart一下,才有效果]

service network restart

然后输入

ping www.baidu.com

看看是否出现下面这个画面
在这里插入图片描述如果出现这个响应,说明已经静态IP地址配置成功(按command+c停止响应)

3、关闭防火墙

关闭防火墙的目的是为了使得服务器与服务器之间可以互通,否则就无法进行通信了
操作命令:

systemctl status firewalld #检查防火墙状态
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld.service

在这里插入图片描述出现removed…信息就代表关闭防火墙了,当然也可以再通过systemctl status firewalld命令,如果看到active状态变为inactive(dead)就表示已经关闭了
在这里插入图片描述

4、修改主机名称

在虚拟机上配置主机名,可以看到默认名称为 localhost lib,这里只需要输入命令:hostnamectl set-hostname hadoop100
其中**“hadoop100”**是我自己取的名称,你们可以自己随意取名
在这里插入图片描述
然后使用 “reboot”命令重启虚拟机,使得修改命令生效
在这里插入图片描述可以看到我这里的主机名已经修改成功了,然后再次登陆管理员账号( “reboot”)即可

5、编辑hosts文件

在虚拟机上输入命令:vi /etc/hosts
会看到
在这里插入图片描述
然后同样用vi操作( 输入“i”,进入编辑模式,然后插入IP地址和对应的名称,按esc退出,最后输入“:wq”保存结果即可),参考一下我的命名格式:
在这里插入图片描述我这里暂时新建了5个虚拟机IP地址,如果想新建更多的虚拟机,方法是一样的;然后,每一个IP地址只要不同就可以了,其中第一个IP是我们一开始已经确定好的,就不要修改了,剩下的IP建议 按顺序依次往下添加,至于右边的名称可以自己修改。

6、虚拟机克隆

为了使上面的步骤有效起来,这里我们需要克隆3台虚拟机,我分别命名为hadoop101、hadoop102、hadoop103。
注意: 克隆虚拟机一定要将虚拟机关闭
关闭虚拟机的命令【手动关闭也可以】

init 0

然后直接在虚拟机资源库中对主机hadoop100, 右击,点击“创建完整克隆”,再重新命名一下即可,如图所示
在这里插入图片描述
注:我这里已经提前创建好克隆机hadoop101、hadoop102、hadoop103了,因此会出现4台服务器,正常按我的操作的话,这一步只能看到hadoop101。
由于克隆机与主机是完全一样的,因此需要修改3个参数:ip地址uuidhostname
依然是先root登陆,输入密码,然后输入

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

只需要修改图中圈中的部分即可
在这里插入图片描述
(1)IP地址修改
直接和咱们之前hosts文件中设置的一样即可,因为我这里是hadoop102,所以需要将IPADDR修改为 IPADDR=172.16.55.132
(2)uuid修改
需要先推出vi编辑器,然后在虚拟机输入命令uuidgen就会产生新的uuid,如图所示
在这里插入图片描述然后按照这个新生成的uuid,修改原来ifcfg-ens33文件下的uuid即可,最终的修改结果如图所示
在这里插入图片描述
(3)修改hostname
具体过程和之前讲解的一样,输入hostnamectl set-hostname hadoop102
最后记得reboot一下即可,然后重新登陆就会发现hostname变成了hadoop102了

远程连接虚拟机(远程服务器)
由于mac电脑自带ssh命令,因此就不需要在下载Xshell软件了,还是省了一些事情的。
下面演示一下如何在本地终端连接虚拟机,结果如图。
在这里插入图片描述如果出现这个界面就代表我们已经实现远程操作虚拟机了,这样的话咱们就摆脱在VMware上操作虚拟机,还是很方便的。

注意,第一次输入这样的命令可能不是这个界面,会多一步让你输入“yes/no”的步骤,咱们输入“yes”即可。然后这里的IP地址就是咱们之前/etc/hosts文件的添加的IP地址,需要保持一致。

7、SSH免密登陆

第一步:生成密钥
三个虚拟机上均要执行下面的操作,这里以hadoop100为例,依次输入命令ssh-keygen -b 1024 -t rsa,然后连续按三个Enter键即可。
在这里插入图片描述
之后需要在不同虚拟机进行免密登陆的话,就需要多次设置,分别为:

**
hadoop100 免密登陆hadoop101和hadoop102、hadoop103
hadoop101 免密登陆hadoop102、hadoop103
hadoop102 免密登陆hadoop101**

下面以hadoop100免密登陆hadoop101为例,其余同理
在hadoop100虚拟机上输入命令

cd .ssh
ssh-copy-id hadoop101
yes
密码

在这里插入图片描述
最后测试一下是否可以免密登陆,我这里是在hadoop100免密登陆hadoop101,命令如下ssh hadoop101,出现如下结果就代表登陆免密成功
在这里插入图片描述

8、搭建虚拟机上的Hadoop环境

准备工作
需要准备jdk以及对应的hadoop版本,我这里使用的是Hadoop3.x的版本,这里提供网址供你们自行下载:
jdk1.8下载
hadoop3.1.4下载
注意:下载的是压缩包文件(tar.gz结尾)

第一步:在hadoop100上的opt文件夹下创建两个module和software文件夹,如图所示:
注意:我这里是在根目录“/”下创建的,所以没有在opt前添加“/”
第二步:利用文件传输工具()将刚才下载的好的两个文件拖到software文件夹下,windows使用Xftp,mac我这里使用的是FileZilla下载好之后需要登陆你的虚拟机账号,然后进行拖拽即可
在这里插入图片描述

9、配置jdk和Hadoop

(1)安装jdk及配置其环境变量

在software目录下输入命令:
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
在这里插入图片描述
注意:如果你下载的jdk是其他版本的话,就需要重新改一下名字,其余命令均可不变

配置jdk环境变量
在根目录/下进入jdk1.8.0_212文件夹中,然后进入profile.d文件夹中,创建my_env.sh文件,具体输入命令:

cd /etc/profile.d/
vi my_env.sh

然后在vi编辑中,写入:

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

在这里插入图片描述退出保存后,输入命令source /etc/profile,就配置好jdk的环境变量啦
java -version
在这里插入图片描述如果出现上述结果就表示jdk环境就搭建好啦

(2)安装hadoop及配置环境变量
在software目录下,输入命令解压hadoop文件
tar -zxvf hadoop-3.1.4.tar.gz -C /opt/module/
注意:如果你下载的hadoop是其他版本的话,就需要重新改一下hadoop名字,其余命令均可不变
在这里插入图片描述
然后进入hadoop3.1.4(/opt/module/hadoop3.1.4)文件夹中,输入命令进入vi编辑器中

vi /etc/profile.d/my_env.sh

在vi编辑器中输入配置环境变量的命令:

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

在这里插入图片描述保存退出,然后输入命令source /etc/profile,就配置好hadoop环境变量啦,输入hadoop命令,如果出现
在这里插入图片描述就意味着配置好hadoop环境变量了

10、scp、xsync集群分发脚本

(1) scp命令(安全拷贝)
实现服务器与服务器之间的数据拷贝
这里以以复制hadoop100–>其他服务器上为例,在hadoop100服务器中进入module文件夹下,输入命令
scp -r jdk1.8.0_212/ root@hadoop101:/opt/module/
表示将hadoop100上的jdk复制到hadoop101中的module里
scp -r /opt/module/* root@hadoop101:/opt/module/
表示将hadoop100上module文件夹中的所有内容的拷贝到hadoop101服务器中的module里
在这里插入图片描述同理使用上述命令可以将hadoop100上module里的所有内容拷贝到其他服务器中,大家自己操作一下,这里就不做记录啦。
(2)rsync 远程同步工具
rsync用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点
首先在hadoop101、hadoop102、hadoop103上均要安装xsync
安装命令:

yum -y install rsync

安装完成之后输入echo $PATH看一下你的全局变量有哪些:
在这里插入图片描述找到我图中圈出来的全局变量,然后在/root/bin目录下创建xysnc文件,操作如下:
在这里插入图片描述
进入vi编辑器后,将以下代码粘贴到xsync文件中,

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
   echo Not Enough Arguement!
   exit;
fi
#2. 遍历集群所有机器
for host in hadoop101 hadoop102 hadoop103
do
   echo ==================== $host ====================
   #3. 遍历所有目录,挨个发送
   for file in $@
   do
      #4. 判断文件是否存在
      if [ -e $file ]
         then
            #5. 获取父目录
            pdir=$(cd -P $(dirname $file); pwd)
            #6. 获取当前文件的名称
            fname=$(basename $file)
            ssh $host "mkdir -p $pdir"
            rsync -av $pdir/$fname $host:$pdir
         else
            echo $file does not exists!
      fi
   done
done

在这里插入图片描述
然后输入chmod 777 xysnc 修改xysnc文件权限,可以发现xysnc颜色变成绿色的就代表这是可执行文件。
在这里插入图片描述
测试xsync脚本

[root@hadoop101 etc]# xsync bin/

只要不报错,基本就是没问题了,这个脚本接下来需要用到!

11、修改核心配置文件

注意:

  • NameNode和SecondaryNameNode不要安装在同一台服务器
  • ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上

本文按照以下表格分配的服务器位置安装

hadoop101hadoop102hadoop103
HDFSNameNode DataNodeDataNodeDataNode SecondaryNameNode
YARNNodeManagerResourceManager NodeManagerNodeManager

这里hadoop核心配置文件包括四个:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml
这四个配置文件存放在 $HADOOP_HOME/etc/hadoop 这个路径上,以hadoop101为例
(1) core-site.xml配置
使用vi编辑器打开core-site.xml
在这里插入图片描述在配置文件里输入:

<configuration>
	<!-- 指定 NameNode 的地址 --> 
	<property>
	<name>fs.defaultFS</name>
	<value>hdfs://hadoop101:8020</value> 
	</property>
	<!-- 指定 hadoop 数据的存储目录 -->
	<property>
		<name>hadoop.tmp.dir</name> 
		<value>/opt/module/hadoop-3.1.4/data</value>
	</property>
	<!-- 配置 HDFS 网页登录使用的静态用户为 root --> 
	<property>
		<name>hadoop.http.staticuser.user</name>
		<value>root</value> 
	</property>
</configuration>

在这里插入图片描述

(2) hdfs-site.xml配置
同样的方法,使用vi编辑器进入hdfs-site.xml ,输入:

<configuration>
      <!-- nn web端访问地址-->
      <property>
            <name>dfs.namenode.http-address</name>
            <value>hadoop101:9870</value>
      </property>
      <!-- 2nn web 端访问地址--> 
      <property>
        	<name>dfs.namenode.secondary.http-address</name>
        	<value>hadoop103:9868</value>
      </property>
</configuration>

在这里插入图片描述

(3) yarn-site.xml配置
同样的方法,使用vi编辑器进入yarn-site.xml ,输入:

<configuration>
	<!-- 指定 MR 走 shuffle --> 
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value> 
	</property>
	<!-- 指定 ResourceManager 的地址--> <property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop102</value> 
	</property>
	<!-- 环境变量的继承 -->
	<property> 
		<name>yarn.nodemanager.env-whitelist</name>
		<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

在这里插入图片描述

(4) mapred-site.xml配置
同样的方法,使用vi编辑器进入mapred-site.xml ,输入:

<configuration>
    <!-- 指定 MapReduce 程序运行在 Yarn 上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
        <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.4</value>
    </property>
    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.4</value>
    </property>
    <property>
        <name>mapreduce.reduce.env</name>
        <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.4</value>
    </property>
        <!-- 历史服务器端地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop101:10020</value>
    </property>
    <!-- 历史服务器 web 端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop101:19888</value>
    </property>
</configuration>

在这里插入图片描述
注:这里一定要全部按照我标注的配置,不能漏掉任何一个,且配置过程中一定要检查是否粘贴的出错,如果你的hadoop版本和我的不一致也要按对应的修改!

12、启动集群

(1)配置workers
在/opt/module/hadoop-3.1.4/etc/hadoop目录下,输入vi workers将里面的localhost换成如下:
在这里插入图片描述注:hadoop101、hadoop102、hadoop103周围均不可以有空格
然后分发一下修改好的workers文件,命令为xsync workers
在这里插入图片描述
(2)启动集群

(i)如果集群是第一次启动,需要在 hadoop101节点格式化 NameNode

[root@hadoop101 hadoop-3.1.4]# hdfs namenode -format

(ii) 启动 HDFS

[root@hadoop101 hadoop-3.1.4]# sbin/start-dfs.sh

如果这里报错

Starting namenodes on [hadoop101]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.

就需要配置一个叫hadoop-env.sh文件,
/etc/hadoop/hadoop-env.sh 目录下,输入

[root@hadoop101 hadoop]# vim hadoop-env.sh

将下面的命令添加到hadoop-env.sh里,位置无所谓,我是添加在文件末尾的

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

这样启动[root@hadoop101 hadoop-3.1.4]# sbin/start-dfs.sh就不会报错了!
然后输入[root@hadoop101 hadoop-3.1.4]# jps检测一下,如果出现DataNode和NameNode说明配置成功
在这里插入图片描述
(iii)在配置了 ResourceManager 的节点(hadoop102 )启动 YARN

[root@hadoop102 hadoop-3.1.4]# sbin/start-yarn.sh

如果中间报错Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)或者是缺少NodeManager说明该服务器没有设置和其他服务器之间的免密登陆,需要重新设置一下。

[root@hadoop102 ~]# ssh-copy-id hadoop101
[root@hadoop102 ~]# ssh-copy-id hadoop102
[root@hadoop102 ~]# ssh-copy-id hadoop103

最后输入[root@hadoop101 hadoop-3.1.4]# jps检查一下,如果出现DataNode、ResourceManager和NodeManager三个说明配置成功,缺少任何一个都代表配置有问题!
在这里插入图片描述
到这里整个集群就启动完毕!

13、Hadoop环境检测

检测一下hadoop环境搭建是否有效,我们运行一个官方的实例:
Step1:创建在 hadoop-3.1.4 文件下面创建一个 wcinput 文件夹

[root@hadoop101  hadoop-3.1.4]# mkdir wcinput

Step2: 在 wcinput 文件下创建一个 word.txt 文件

[root@hadoop101  hadoop-3.1.4]# cd wcinput

Step3: 编辑 word.txt 文件

[root@hadoop101  hadoop-3.1.4]# vi word.txt 

在文件中输入如下内容,并保存退出

hadoop yarn
hadoop mapreduce
jancy
jancy

Step4: 回到 Hadoop 目录/opt/module/hadoop-3.1.4
Step5: 执行程序

[root@hadoop101  hadoop-3.1.4]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar wordcount wcinput wcoutput

Step6: 查看结果

[root@hadoop101  hadoop-3.1.4]# cat wcoutput/part-r-00000

结果如下:

hadoop	2
jancy	2
mapreduce	1
yarn	1

这里我们也可以通过在本地web页面上看到我们hadoop运行的结果
在网页里输入hadoop101:9870,如下:
如果输入hadoop101:9870无法打开网页,但是输入172.16.55.131:9870可以打开,可以参照我写的这片解决方案博客
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这篇文章整理了很久,难免会在整理中出现纰漏,如果有什么疑问的地方,就请留言告知!
如果我的文章对您有帮助,就请一键三连支持一下吧~

  • 9
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jancy、

知识付费,支持一下~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值