文章目录

  • 1、准备工作
  • 2、静态IP地址配置
  • 3、关闭防火墙
  • 4、修改主机名称
  • 5、编辑hosts文件
  • 6、虚拟机克隆
  • 7、SSH免密登陆
  • 8、搭建虚拟机上的Hadoop环境
  • 9、配置jdk和Hadoop
  • 10、scp、xsync集群分发脚本
  • 11、修改核心配置文件
  • 12、启动集群
  • 13、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 ]
thenecho Not Enough Arguement!exit;
fi
#2. 遍历集群所有机器
for host in hadoop101 hadoop102 hadoop103
doecho ==================== $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:$pdirelseecho $file does not exists!fidone
done


然后输入chmod 777 xysnc 修改xysnc文件权限,可以发现xysnc颜色变成绿色的就代表这是可执行文件。

测试xsync脚本

[root@hadoop101 etc]# xsync bin/

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

11、修改核心配置文件

注意:

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

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

hadoop101 hadoop102 hadoop103
HDFS NameNode DataNode DataNode DataNode SecondaryNameNode
YARN NodeManager ResourceManager NodeManager NodeManager

这里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可以打开,可以参照我写的这片解决方案博客



这篇文章整理了很久,难免会在整理中出现纰漏,如果有什么疑问的地方,就请留言告知!
如果我的文章对您有帮助,就请一键三连支持一下吧~

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

  1. CSGO饥荒服务器搭建保姆级教程

    CSGO&饥荒服务器搭建保姆级教程 准备 第一步:软硬件 软件:Xshell.Xftp用于连接云服务器和进行文件传输. 进去填写邮箱,他会给你发个邮件,通过邮件获得下载链接,通过下载链接下载X ...

  2. 本地k8s集群搭建保姆级教程(4)-安装k8s集群Dashboard

    安装k8s集群管理UI 1 Dashboard安装 1.1 参考文档 Dashboard 是基于网页的 Kubernetes 用户界面. 你可以使用 Dashboard 将容器应用部署到 Kubern ...

  3. 个人网站搭建保姆级教程(2)- 前端工程umi脚手架搭建

    前言 最近搞了个服务器,想着自己做个网站的脚手架,因为自己是纯前端新手,而且半路出家,中途踩了好多坑,准备写5篇给各位大佬们分享一下,如何从0搭建个人网站 服务器购买与环境搭建 前端工程umi脚手架搭 ...

  4. 域环境的搭建(保姆级教程)

    域环境的搭建(保姆级教程) 一.基础知识 二.实验环境 三.实验步骤 1.设置静态ip地址 我们给server 2008 设置静态ip地址 2.安装活动目录角色 2.1 点击添加角色 2.2 我们单击 ...

  5. React-高级教程完整版

    React 高级教程完整版 这标题可能有点不太贴切或符合内容,从官方上来区分这部分内容确实属于高级部分,只是由于个人原因,在后面的一些章节并没有记录在列. 也为了承接上一篇,因此勉强将标题定位:&qu ...

  6. 【Hadoop】HA高可用搭建保姆级教程(大二学长的万字笔记)

    知识目录 一.写在前面

  7. APP自动化测试——Appium运行环境搭建保姆级教程

    APP自动化测试运行环境比较复杂,稍微不注意安装就会失败.我见过不少朋友,装了1个星期,Appium 的运行环境还没有搭好的. 搭建环境本身不是一个有难度的工作,但是 Appium 安装过程中确实存在 ...

  8. Pygame实战:用 Python 写个贪吃蛇大冒险,保姆级教程。

    导语 ​ 贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是我爸的数字手机,考试成绩比较好,就会得到一些小奖励,玩手机游戏肯定也在其中首位,毕竟小孩子天性都喜欢~ 当时都能玩的不亦乐乎.今天, ...

  9. Hadoop搭建高可用集群(保姆级教程)

    准备工作: 1.搭建完成zookeeper,如果没有搭建,请跳转到zookeeper集群搭建保姆级教程 2.集群的jdk都安装完成,如果没有,请跳转到linux编写个脚本快速搭建jdk保姆级教程 3. ...

  10. Hadoop全分布式集群搭建(全网最详细,保姆级教程)

    在上一篇Hadoop环境搭建(全网最详细,保姆级教程)中已经搭建好了一个单机Hadoop环境,接下来搭建全分布式Hadoop集群 首先对Hadoop全分布示集群进行简单介绍和规划 一个集群由一个主机, ...

最新文章

  1. 《统计自然语言处理》读书笔记 一.基础知识及概念介绍
  2. 互联网架构阶段 数据库读写分离 Amoeba
  3. codeforces VK Cup 2018 - Wild-card Round 1 (unofficial unrated mirror)
  4. raid卡组不同raid_RAID有哪几种?有什么区别?
  5. HBase性能优化方法总结(二):写表操作
  6. 30岁菜鸟涛学习VB.net 第八天
  7. cept源代码目录结构详解_知识树(转)
  8. 一个前端博客(9)——浏览器检测和加载
  9. bootstrap的表单验证 vue_分享几个基于Vue的UI库和开源项目
  10. prim算法 + 最小生成树的打印 C语言
  11. sql建表与gp建表语句
  12. liunx下用xshell实现 密钥 + 密码 登录
  13. 光伏电站matlab仿真,光伏发电的MATLAB仿真.doc
  14. 积分墙为什么要做反作弊
  15. cursor android,Android Cursor用法
  16. 贝塔分布与狄利克雷分布
  17. Canvas流星雨特效
  18. 基于MATLAB的全局多项式插值法(趋势面法)与逆距离加权(IDW)法插值与结果分析
  19. Android_Google Pay的添加使用
  20. 用JavaScript编写的一个点名系统

热门文章

  1. OPIE(火狐扩展)-导入导出firefox扩展的所有设置
  2. ps报纸排版教程:ps报纸文字排版教程
  3. 如何更新计算机的flash player,在电脑上如何升级Adobe Flash Player插件|电脑进行Flash Player更新的方法...
  4. 用JavaScript+HTML实现双色球随机摇号效果
  5. 计算机控制系统的框图,计算机控制系统原理框图.doc
  6. 开源实时视频码流分析软件:VideoEye
  7. 小米平板2刷哪个系统更流畅_教程:小米平板2轻松刷Win10
  8. Win10安装乌班图18双系统
  9. kjb文件 解析_微信安装包解析异常
  10. 网络流-最大流问题详解(C++实现)