前言:

此文章是本人初次部署Hadoop的过程记录以及所遇到的问题解决,这篇文章只有实际操作部分,没有理论部分。因本人水平有限,本文难免存在不足的地方,如果您有建议,欢迎留言或私信告知于我,非常感谢。

部分参考网络资料,如有侵权,联系删除。

环境准备(需提前下载好):

1.VMware workstation 17.5,作为虚拟化平台

(官网下载地址:vmware workstation17.5(需登录))

2.Ubuntu20.04 (18.04,22.04,24.04应该也可以)

(清华源镜像地址:Ubuntu20.04

3.JDK8(其他版本不适配)

(官网下载链接(需登录):下载页面(选x64 Compressed Archive)

(清华源的openjdk下载链接: openjdk8

4.Hadoop-3.3.6

(官网下载链接:Hadoop-3.3.6

1.安装Ubuntu

(1)点击创建新的虚拟机

(如果没有这一页,可以点击上面的选项卡,再点击转到主页)



(2)点击自定义,下一步



(3)默认即可,点下一步



(4)点稍后安装操作系统,下一步



(5)这里选Linux,版本Ubuntu 64位



(6)点击浏览选择合适的存储位置



(7)处理器数量和内核数量选 1



(8)内存4GB,可根据个人情况调整(如果物理机只有16G,可改为3GB(3072MB))。



(9)均默认,点下一步









(10)建议磁盘大小30G,避免后续使用时空间不足,可根据个人情况调整



(11)默认,点下一步



(12)点击完成



(13)点编辑虚拟机设置



(14)点击CD/DVD,点击“使用ISO镜像文件”,再点击浏览,找到刚刚下载的Ubuntu20.04镜像



(15)点击Install Ubuntu ,建议使用英文,避免中文报错。



(16)点continue,

这里如果窗口太小,看不到按钮,同时按Alt + F7,然后会出现一个手的标志,可以移动窗口,再点击鼠标左键来固定



(17)点Minimal installation,点continue



(18)默认,点Install Now



(19)点击 continue



(20)默认,点击continue



(21)

Your name 填Hadoop

Your conputer's name 填master

设置好密码后,点continue



(22)等待安装

(23)安装完成,点击Restart Now

(24)这里直接按回车即可



(25)点击Hadoop,输入密码

注意:Ubuntu安装之后,数字小键盘默认关闭,按键盘上NumLock打开。



(26)进入之后的设置,全部点击右上角的skip和next即可



(27)会有版本更新弹窗,点击Don't Upgrade,再点击OK





(28)右上角会有一个红色圆圈,点击,再点Show update,然后点击Install Now,之后输入密码,更新即可。







(29)如果窗口太小,按Ctrl+Alt+T打开终端,输入下面两行代码,运行结束之后再重启一下虚拟机。

sudo apt update
sudo apt install open-vm-tools-desktop -y

注:输入 sudo apt update后,如果第(28)的更新未完成的话,会报错,等待更新完成再输入即可

(30)现在第一个虚拟机以及创建完毕。

创建第二个和第三个虚拟机时,只有第(21)不一样,

第二个虚拟机的Your conputer's name 填slave01

第三个虚拟机的Your conputer's name 填slave02

2.配置hosts网络映射(三个机器均需要)

(1)输入命令,安装网络工具

注:Ubuntu中,Ctrl + Shift + C 是复制,Ctrl + Shift + V 是粘贴

sudo apt install net-tools

(2)输入命令查看ip地址

ifconfig

图中第三行的192.168.61.142为本机IP,每个人电脑不相同。



(3)在slave01机器和slave02机器执行相同操作,并记下IP。

我的slave01的IP:192.168.61.143



我的slave02的IP:192.168.61.144

(4)三个机器都下载vim,方便后续使用。

sudo apt install vim -y

(5)编辑修改hosts文件,使节点之间通信方便

sudo vim /etc/hosts

进入之后,如下图所示



按键盘“ i ”进入编辑模式(插入模式),然后用上下左右方向键移动光标到第三行,输入刚刚查询到的IP,然后加上机器名(@后面的)

例:【hadoop@master:~$】,中,master是机器名。

编辑好后如图所示(ip地址不相同,根据自己Ubuntu的IP来修改)



编辑好之后,按键盘左上角ESC退出编辑模式,再按Shift + “;”,左下角会出现一个冒号“:”,然后输入“wq”保存并退出文件。

(6)配置好hosts后,使用ping命令来测试是否配置成功,之后在另外两个机器也配置。

ping slave01
ping slave02

出现如图类似之后,即hosts配置成功,按Ctrl + C 终止,

3.Java JDK8 配置(三个机器均需要)

(1)在自己电脑下载好JDK之后,粘贴到虚拟机的Downloads里,鼠标右键,点Paste即可粘贴。

注:打开左边第二个图标,打开之后点Downloads,再粘贴

(也可以复制链接到虚拟机的浏览器,直接在虚拟机下载,省的再复制粘贴)



注:如果出现类似报错,点击Retry再点击Skip。如果不行的话就等待一会再复制粘贴试试。如果还是不行,执行下面的命令之后重启虚拟机。

sudo apt update
sudo apt ​autoremove open-vm-tools -y
sudo apt install open-vm-tools-desktop -y

(2)执行命令,解压jdk

注:这里jdk-8u441-linux-x64.tar.gz不一定相同,根据个人情况修改,可以输入jdk之后,按Tab键自动补全。

cd /usr/lib
sudo mkdir jvm
cd ~/Downloads //即 cd /home/hadoop/Downloads
sudo tar -zxvf jdk-8u441-linux-x64.tar.gz -C /usr/lib/jvm

(3)查看具体安装的jdk版本号,例如我的是jdk1.8.0_441

cd /usr/lib/jvm
ls



(4)配置java环境变量

sudo vim ~/.bashrc

进入文件后,按上下方向键,翻到最后,插入下面语句

注:第一句的jdk不一定相同,根据第三步查询的来修改。

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_441
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

执行命令:source ~/.bashrc,然后关闭终端,再重新打开,输入java -version,如下图所示即配置成功



(5)在slave01和slave02执行相同的1~4,完成配置

4.SSH 配置(三个机器均需要)

(1)安装ssh

sudo apt install openssh-server -y

(2)测试登录本地,验证是否成功。

ssh localhost

输入之后,会停顿一下,如下图,然后输入yes,之后会让输入本机密码。



成功登录如图



然后输入exit 会出现退出登录信息



(3)前两步骤三个机器均需下载,下载完成之后在进行第四步。

(4)在master节点生成公钥

cd ~/.ssh
rm ./id_rsa* //如果是第一次下载ssh,可以不执行这一句
ssh-keygen -t rsa //输入之后有停顿,全部按回车即可



(5)在本机节点上设置免密登录并测试

cat ./id_rsa.pub >> ./authorized_keys
ssh localhost

会发现,再次执行ssh连接不再需要密码



(6)将公钥传到slave01、slave02(只在master机器上操作)

注:第二个命令中hadoop@slave01需要根据自己Ubuntu的用户名和机器名进行修改,如果你的用户名+机器名是zhangsan@slave01,那么命令中的hadoop@slave01就需要修改为zhangsan@slave01,同理/home/hadoop也一样改为/home/zhangsan,如果与示例相同则不需要更改

cd ~/.ssh
scp ~/.ssh/id_rsa.pub hadoop@slave01:/home/hadoop //将公钥给slave01
scp ~/.ssh/id_rsa.pub hadoop@slave02:/home/hadoop //将公钥给slave02

注:第二个和第三个命令之后需要输入密码,这个密码是登录slave01和slave02机器的密码

(7)在slave节点中将公钥保存(此步骤只在slave01和slave02上操作)

cat ~/id_rsa.pub>>~/.ssh/authorized_keys
rm ~/id_rsa.pub

(8)验证免密连接(只在master机器上执行)

ssh slave01

注:如果你的用户名和master机器的用户名不一样,那这里需要输入完整的用户名+机器名

例 : slave节点用户名和机器名是zhangsan@slave01,那你这里需要输入ssh zhangsan@slave01

这一次不需要密码就能连接上,并且会看到用户名和机器名由hadoop@master变成hadoop@slave01

然后输入exit退出连接,再测试slave02

ssh slave02

成功连接后,输入exit退出连接

5.Hadoop安装配置

5.1master机器执行部分

(1)在自己电脑下载好Hadoop文件之后,粘贴到虚拟机的Downloads里,鼠标右键,点Paste即可粘贴。

注:打开左边第二个图标,打开之后点Downloads,再粘贴

(如果下载速度过慢,可以搜索“磁力下载软件”,找个顺眼的安装,这里不再推荐,将下载链接粘贴到磁力工具中再下载,速度会快点)



(2)解压

注:我下载的是Hadoop-3.3.6的版本,根据自己下载的版本修改~/Downloads/hadoop-3.3.6.tar.gz这一部分,

sudo tar -zxvf ~/Downloads/hadoop-3.3.6.tar.gz -C /usr/local
cd /usr/local
sudo mv ./hadoop-3.3.6 ./hadoop //如果你的不是3.3.6,根据实际修改
sudo chown -R hadoop ./hadoop

(3)配置环境变量

sudo vim ~/.bashrc

进入文件后,按上下方向键,翻到最后,插入下面语句

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lin/native
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH

执行命令:source ~/.bashrc,然后关闭终端,再重新打开一个终端,输入hadoop version,如下图即配置成功

(4)文件配置

文件1

cd /usr/local/hadoop/etc/hadoop
vim core-site.xml

打开文件后,翻到最后一行,先将文件自带的<configuration></configuration>删除,(<configuration> 是XML文件的根元素,只能出现一次,必须唯一!)

再将下面内容粘贴到文件中

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abasefor other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.spark.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.spark.groups</name>
<value>*</value>
</property>
</configuration>

文件2:

vim hdfs-site.xml

操作跟上面一样,翻到文件最下面后,先将文件自带的<configuration></configuration>删除,再将内容粘贴到文件上

<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>

文件3:

vim yarn-site.xml

操作同上,先将文件自带的<configuration></configuration>删除,再将下面代码粘贴到文件里

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</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:8035</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>

文件4:

vim mapred-site.xml
//如果你打开之后是空白文件,先退出文件,再执行下面的命令;如果打开之后有内容,不用执行
cp mapred-site.xml.template mapred-site.xml

操作同上,先将文件自带的<configuration></configuration>删除,再将下面代码粘贴到文件里

<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>

文件5:

sudo vim hadoop-env.sh

操作同上,这个不用删<configuration></configuration>,直接将下面代码粘贴到文件最后,可以按方向键上面的PgDn/PageDown按键加快翻动

注:jdk版本根据自己下载的更改,此处与刚刚Java环境变量配置的路径一样。

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_441

文件6:

sudo vim workers



打开之后默认是localhost,删除,然后将下面内容粘贴到里面。

hadoop@slave01
hadoop@slave02

注:此处是两个slave节点的完整用户名和机器名,如果你的用户名或机器名与示例不同,需要修改。



(5)压缩文件

cd /usr/local
sudo rm -rf ./hadoop/tmp
sudo rm -rf ./hadoop/logs
tar -zcvf ~/hadoop.master.tar.gz ./hadoop

(6)将压缩好的文件发送到slave机器上

scp ~/hadoop.master.tar.gz hadoop@slave01:/home/hadoop
scp ~/hadoop.master.tar.gz hadoop@slave02:/home/hadoop

注:此处hadoop@slave01是slave01虚拟机的完整用户名和机器名,如果与示例不同,根据自己的用户名和机器名修改,/home/hadoop的hadoop同理。

5.2 slave机器执行部分(slave01和slave02均需要执行一遍)

(1)在slave节点上解压hadoop.master.tar.gz文件,并给予授权

sudo rm -rf /usr/local/hadoop
sudo tar -zxvf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/hadoop

注:-R 后面的hadoop是slave节点的用户名,如果与示例不同,根据自己的情况修改。

/usr/local/hadoop这部分是固定的,不需要修改。

6. Hadoop启动与停止

(1)格式化NameNode(只在master上操作)

hdfs namenode -format

注:只执行一次就行,之后再使用Hadoop,不需要再格式化!!!

运行完结果类似下图

(2)启动HDFS(只在master节点上操作)

start-dfs.sh

然后在master,slave01,slave02上分别输入jps,结果如下图

master节点

slave01节点

slave02节点

(3)启动YARN(只在master节点上操作)

start-yarn.sh

然后在master,slave01,slave02上分别输入jps,结果如下图

master节点

slave01节点

salve02节点

(4)网页访问(在master机器上操作)

在浏览器中打开http://master:8088/cluster/nodes,节点情况如下图



如果能正常打开网页,但没有节点,先stop停止进程,

执行sudo vim /etc/hosts,在第二行加个#和空格,如图,

之后再次运行进程就好了



(5)停止HDFS和YARN

stop-yarn.sh
stop-dfs.sh

也可以直接执行stop-all.sh全部关闭。

附录:

有小伙伴两小时急速完成,期待有新的记录产生

有小伙伴1小时17分钟急速完成,期待有新的记录产生

7.部分问题解决:

1.多次执行格式化操作hdfs namenode -format之后,导致DataNode进程或namenode看不到了。

解决:这里给出一个适用于重启运行的方式:删除所有节点的/usr/local/hadoop/dfs中的内容,一般是name和data两个文件夹,因为这里记录了上次运行的集群ID等信息可能会导致冲突(当然这里只是部署阶段,如果运行了很久,重要的数据需要小心)。然后清一下logs数据,方便再运行查看错误问题。最后在master节点上执行hadoop namenode -format,就可以再启动Hadoop了。

举个不恰当的例子,就好像第一次格式化之后,dfs的实际位置id刷新在麻辣烫,第二次格式化之后,dfs实际位置刷新到火锅,但是文件仍然保存着第一次麻辣烫的位置,实际位置与文件保存的位置不一样,命令运行的时候部分信息就乱跑了,导致datanode与namenode无法加载出来。

注:在执行之前,先stop-all.sh,将进程都停止了

(1)以下是直接操作的代码:(master和slave上都要执行)

cd /usr/local/hadoop
rm -rf /usr/local/hadoop/dfs
rm -rf /usr/local/hadoop/tmp
rm -rf /usr/local/hadoop/logs

(2)把第一步的代码,在master和slave机器上都执行之后,再进行下一步

(3)在master机器上执行下面代码

hdfs namenode -format  //格式化

(4)启动HDFS(只在master节点上操作)

start-dfs.sh

(5)启动YARN(只在master节点上操作)

start-yarn.sh

(6)之后jps与查看网页步骤同上

2.IP自动更改

部分人的虚拟机,在再次打开后,会发现ip与上一次的ip不一样了,可以修改hosts(参考第二大步),或者参考网上设置静态IP。

VMware平台的Ubuntu部署完全分布式Hadoop环境的更多相关文章

  1. Hadoop自学笔记(五)配置分布式Hadoop环境

    上一课讲了怎样在一台机器上建立Hadoop环境.我们仅仅配置了一个NHName Node, 这个Name Node里面包括了我们全部Hadoop的东西.包括Name Node, Secondary N ...

  2. 在虚拟机环境下,电脑间拷贝配置好的伪分布式Hadoop环境,出现namenode不能启动的问题!

    原因:在原来的电脑上配置伪分布的时候,已经将hostname与IP绑定了,所以拷贝到别的电脑的时候,重新启动的时候就会失败,因为新的电脑的IP不见得就和原来的电脑的IP一样!因为在不同的网络中,在NA ...

  3. VMware 15安装Ubuntu 16.04并配置环境

    VMware(虚拟机)是指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统,它能在Windows系统上虚拟出多个计算机,每个虚拟计算机可以独立运行,可安装各种软件与应用等 ...

  4. 搭建分布式hadoop环境的前期准备---需要检查的几个点

    前期准备: jdkhostnamehostsdate安全机制firewallwindows 域名映射 具体的操作见下面 1.看看自己是否已经配置了别名了(linux别名的配置可以参考博文:自己cent ...

  5. VMwareWorkstation 平台 Ubuntu14 下安装配置 伪分布式 hadoop

    VMwareWorkstation平台Ubuntu14下安装配置伪分布式hadoop 安装VmwareStation 内含注册机. 链接:https://pan.baidu.com/s/1j-vKgD ...

  6. Windows10+VMware Workstation Pro+Ubuntu 16.04+Hadoop-2.6.5+IDEA环境搭建(单机&伪分布式&集群)

    (注:下面出现的"czifan"为用户名,需替换成自己的用户名) 本篇博客是在实践该篇博客的过程中的一些补充和修改~ 0 - 安装VMware Workstation Pro 首先 ...

  7. 利用Ambari平台安装与部署Hadoop

    * 本篇是利用Ambari平台安装与部署Hadoop,如果需要原生部署Hadoop,请点击以下地址: https://www.cnblogs.com/live41/p/15467263.html 一. ...

  8. Hadoop环境搭建--Docker完全分布式部署Hadoop环境(菜鸟采坑吐血整理)

    系统:Centos 7,内核版本3.10 本文介绍如何从0利用Docker搭建Hadoop环境,制作的镜像文件已经分享,也可以直接使用制作好的镜像文件. 一.宿主机准备工作 0.宿主机(Centos7 ...

  9. XXL-JOB分布式任务调度平台安装与部署

    配XXL-JOB分布式任务调度平台安装与部署

  10. Ubuntu下伪分布式模式Hadoop的安装及配置

    1.Hadoop运行模式Hadoop有三种运行模式,分别如下:单机(非分布式)模式伪分布式(用不同进程模仿分布式运行中的各类节点)模式完全分布式模式注:前两种可以在单机运行,最后一种用于真实的集群环境 ...

随机推荐

  1. 类的加载与ClassLoader的理解

    加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.Class对象,作为方法区中类数据的访问入口(即引用地址).所 ...

  2. 字节流:FileInputStream和FileOutputStream的使用

    /** * 测试FileInputStream和FileOutputStream的使用 * * 结论: * 1. 对于文本文件(.txt,.java,.c,.cpp),使用字符流处理 * 2. 对于非 ...

  3. Cockpit pg walkthrough Intermediate

    nmap 发现两个 web站 80 和 9090 还有 22端口 dirsearch 发现80端口有login.php 登录界面 发现没有弱口令 测试sql注入 测试了一会发现密码 password= ...

  4. 某Websocket反爬逆向分析+请求加解密+还原html

    网址 aHR0cHM6Ly93d3cueWR4Zi5nb3YuY24vTmV3cy9zaG93TGlzdC80L3BhZ2VfMS5odG1s 前言 工作中遇到的某websocket反爬,比混淆网站还 ...

  5. 微信小程序音频播放

    微信小程序音频播放 // 开启播放音频 startAudio(){ const innerAudioContext = uni.createInnerAudioContext();//创建并返回内部 ...

  6. DeepSeek,你是懂.NET的!

    这两天火爆出圈的话题,除了过年,那一定是DeepSeek!你是否也被刷屏了? DeepSeek 是什么 DeepSeek是一款由国内人工智能公司研发的大型语言模型,拥有强大的自然语言处理能力,能够理解 ...

  7. 创新突破!天翼云荣膺CCF HPC China 2024高性能计算创新大奖

    近日,第20届CCF全国高性能计算学术年会(CCF HPC China 2024)在武汉隆重召开.CCF HPC China是全球高性能计算领域三大标志性盛会之一,本届大会以"华章廿载 新质 ...

  8. docker上安装并启动redis

    //查看镜像 [root@VM-0-3-centos ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEredis latest cc69ae1 ...

  9. windows系统之netstatt、telnet、tasklist taskkill四大常用网络运维命令

    windows系统之netstatt.telnet.tasklist  taskkill 四大常用网络运维命令 Netstat 查看网络状态信息 [用法格式] NETSTAT [-a] [-b] [- ...

  10. dbeaver软件使用问题

    一.dbeaver导出数据表到csv后数据乱码 按如下方式导出即可 勾选插入BOM即可 Excel在读取csv的时候是通过读取文件头上的bom来识别编码的,如果文件头无bom信息,则默认按照unico ...