Hadoop集群安装

news/2025/3/10 12:15:59/文章来源:https://www.cnblogs.com/loyce/p/18762373

一.环境准备

  1. 我使用的是virtualBox虚拟机,没有可以去官网下载
  2. 虚拟机镜像是ubuntu server22.04,官网地址

[注意]我的主机系统就是linux,如果是windows需要自己下载一些终端连接的工具

二.安装

1.虚拟机准备


直接finish,开始配置网卡。

简单点说,桥接网络我们用来上网的,其次是host-only,我们拿来和宿主机进行通信用。

host-only的网卡需要单独设置,在 工具->网络 里面,创建

需要你配置网卡的ip4的信息,需要和你那几个机器的静态ip在同一个网段下,然后启动机器,会让你选择镜像,然后Mount and Retry Boot。

第一个直接回车,选择语言,我们选英语,然后回车

这个是网络,第一个是升级,第二个是跳过,直接跳过

下面是键盘布局不用管直接跳过

这里可以选择安装模式,有正常安装和最小化安装,我们选择最小化安装,方向键控制光标移动,空格键为选中,回车确定。

网络配置,先不用管,跳过

proxy地址,直接跳过

镜像源,这里我使用的是阿里源

磁盘分区,由于我们是虚拟机,直接干就完了,不用考略分区,啥都不动,下一步即可,有需求可以自己改分区

这里是点continue

配置信息,最下面三个就是你的初始用户的用户名和密码

安装ssh远程工具

这一页不用管直接下一步

开始等待安装系统

安装成功,重启机器

这个界面敲一下回车,就那个叫entry的

至此,装机结束,我们开始为hadoop安装做准备

  1. 先设置root密码(输入密码是不显示的,不要以为键盘有问题)
sudo passwd
  1. 执行拉取软件列表以及更新命令
sudo apt-get update
sudo apt-get upgrade  # 该命令需要在弹出安装内容后,你输入"y"回车确定安装
  1. 安装常用工具(好奇的可以自行去查阅每个工具的作用)
sudo apt install vim gcc g++ make cmake netcat net-tools 

开始配置静态ip(要和你一开始做的host-only的网卡在同一个网段下)

ifconfig  # 查看网卡名字


这里可以看到三张网卡,一张是enp0s3,一张是enp0s8,还有一张本地回环网卡,其中enp0s3就是我们那个桥接网卡,enp0s8是host-only,我们就是要给这张网卡配置为静态的ip,而enp0s3是上网用的不要动

route -n # 查看网关# 进入配置文件
sudo vim /etc/netplan/00-installer-config.yaml


修改如上图所示,要保证你写的静态ip网段一致

sudo netplan apply  # 使其改动生效
ifconfig  # 再次查看ip是否生效

当你看见enp08s的inet 192.168.56.17的时候,就明白静态ip配置成功了ok到这里,我们开始准备其他几个虚拟机,步骤都是一样的,你可以选择虚拟机复制然后修改静态ip的值,最好是准备四台虚拟机,一个为主节点,其他三个为从节点。我演示一遍复制虚拟机的步骤,如果要完全重做虚拟机可以从头开始做完其他三台虚拟机




由于是完全拷贝,所以虚拟机的登录密码也是一样的,我们要做的就是修改静态ip的值,不能让他们的静态ip一样

sudo vim /etc/netplan/00-installer-config.yuaml
sudo netplan apply
ifconfig
# 步骤都是一样的,我的机器IP分别是
master: 192.168.56.17
slave1: 192.168.56.18
slave2: 192.168.56.19
slave3: 192.168.56.20
# 你可以按照自己需要设置ip

好到这里我们准备好了四台虚拟机,并且静态ip都不一样后,这还没有结束,现在我们开始调配参数
为了方便我使用我本地主机连接这四台机器
想要安装总管终端可以使用以下命令

sudo apt install terminal  # 注意主机得是linux,window忽略

在终端中使用ssh连接

ssh master@192.168.56.17
# 第一次连接需要输入yes 回车
# 然后输入远程用户的密码# 我们将四台机器同时连接上# 修改自己名字
sudo vim /etc/hostname  
# 分别对应master,slave1,slave2,slave3即可
# 修改结束后需要重启机器# 修改主机列表
sudo vim /etc/hosts
# 四台机器都需要一样,是为了互相之间可以认识


确保四台机器都是一样的,一定一定要给第二行的127.0.0.1 给注释或者删除掉

sudo vim /etx/security/limits.conf# 在配置文件中加上以下参数(也是四台机器都要配置)
*        -       nproc          102480  
*        -       nofile         102480

关闭防火墙(没有防火墙就跳过此步)
systemctl stop firewalld
systemctl status firewalld开始配置jdk8
在主机找到你已经下载好的jdk8
使用scp命令发送给master机器
scp ./jdk-8u341-linux-x64.tar.gz master@192.168.56.17:~/

tar zxvf ./jdk-8u341-linux-x64.tar.gz
mv ./jdk1.8.0_341 jdk1.8
sudo mv ./jdk1.8 /opt 
sudo vim /etc/proflie # 配置jdk环境变量

在文件末尾添加上
#JAVA_HOME
export JAVA_HOME=/opt/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin# 刷新环境变量
source /etc/profile
java -version # 出现java版本号说明成功

请确保四台机器都是做了相同的操作。

ssh免密登录
需要让master对于任何从机都能进行免密登录
(在master机器上):ssh-keygen -t rsa  # 生成密钥对
会生成私钥和公钥,我们需要将公钥发送到目标服务器ssh-copy-id <remote_username>@<remote_server>
该命令会将本地计算机上的公钥复制到目标服务器的 ~/.ssh/authorized_keys文件中。你可能需要输入目标服务器的密码进行确认
我们用master给其他的slave1,slave2,slave3都发一遍,还有master自己,你没听错,自己和自己也必须互通
ssh-copy-id master@slave1
ssh-copy-id master@slave2
ssh-copy-id master@slave3
ssh-copy-id master@master然后我们用主机测试
ssh master@slav1  
如果不需要输入密码直接连接上了从机证明ssh免密配置成功,每台从机都要保证成功

现在正式开始安装hadoop集群

找到hadoop的安装包,通过宿主机发送给master
scp ./hadoop-3.2.3.tar.gz master@192.168.56.17:~/(在master机器上)
tar -zxvf ./hadoop-3.2.3.tar.gz 
mv ./hadoop-3.2.3 hadoop
sudo mv ./hadoop /optcd /opt/hadoop  # 一定得是755
mkdir -m 755 datadir
mkdir -m 755 tmp开始配置环境变量
sudo vim /etc/profile添加一下内容
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin刷新环境变量
source /etc/profile
hadoop  # 出现一大堆提示表示环境安装成功

然后我们开始修改hadoop的配置文件

<1> ./hadoop/etc/core-site.xml
---------------------------------------------
<property><name>fs.defaultFS</name><value>hdfs://master:9000</value>
</property>
---------------------------------------------<2> ./hadoop/etc/hadoop-env.sh
---------------------------------------------
export JAVA_HOME=/opt/jdk1.8 
---------------------------------------------<3> ./hadoop/etc/hdfs-site.xml (私钥需要改位置)
---------------------------------------------
<property><name>dfs.namenode.name.dir</name><value>/opt/hadoop/namedir</value>
</property>
<property><name>dfs.datanode.data.dir</name><value>/opt/hadoop/datadir</value>
</property>
<property><name>hadoop.tmp.dir</name><value>/opt/hadoop/tmp</value>
</property>
<property><name>dfs.replication</name><value>2</value>
</property>
<property><name>dfs.permissions</name><value>false</value>
</property>
<property><name>dfs.webhdfs.enabled</name><value>true</value>
</property>
<property><name>dfs.support.append</name><value>true</value>
</property>
<property><name>hadoop.proxyuser.hadoop.hosts</name><value>*</value>
</property> 
<property><name>hadoop.proxyuser.hadoop.groups</name><value>*</value>
</property>
<property><name>dfs.ha.fencing.methods</name><value>sshfence</value>
</property>
<property><name>dfs.ha.fencing.ssh.private-key-files</name># 私钥的位置<value>/home/hadoop/.ssh/id_rsa</value> 
</property>
---------------------------------------------<4> ./hadoop/etc/mapred-site.xml
---------------------------------------------
<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>
---------------------------------------------<5> ./hadoop/etc/yarn-site.xml
---------------------------------------------
<property><name>yarn.resourcemanager.webapp.address</name><value>master:8088</value>
</property>
<property><name>yarn.resourcemanager.hostname</name><value>master</value>
</property>
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property>
<property><name>yarn.application.classpath</name><value>/opt/hadoop-3.2.3/etc/hadoop:/opt/hadoop-3.2.3/share/hadoop/common/lib/*:/opt/hadoop-3.2.3/share/hadoop/common/*:/opt/hadoop-3.2.3/share/hadoop/hdfs:/opt/hadoop-3.2.3/share/hadoop/hdfs/lib/*:/opt/hadoop-3.2.3/share/hadoop/hdfs/*:/opt/hadoop-3.2.3/share/hadoop/mapreduce/lib/*:/opt/hadoop-3.2.3/share/hadoop/mapreduce/*:/opt/hadoop-3.2.3/share/hadoop/yarn:/opt/hadoop-3.2.3/share/hadoop/yarn/lib/*:/opt/hadoop-3.2.3/share/hadoop/yarn/*</value>  #通过hadoop classpath获取value内容
</property>
---------------------------------------------<6> vim workers
---------------------------------------------
slave1
slave2
slave3
不允许有任何空格
---------------------------------------------



这里注意私钥位置,主机名要换成你自己的主机名


最后这个需要先使用hadooop classpath先获取,然后替换掉原本的

OK,现在大部分工作我们都做完了,现在将master上的hadoop,通过scp发送到其他三台从机上

 sudo scp -r ./hadoop/ master@slave1:~sudo scp -r ./hadoop/ master@slave2:~sudo scp -r ./hadoop/ master@slave3:~记得需要给hadoop从~移动到opt下,三台机器都需要sudo mv ./hadoop /opt

开始为三台从机配置环境

sudo vim /etc/profile#HADOOP_HOME
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin刷新环境变量
source /etc/profile

ok,大功告成,我们来试试能不能用吧,成败在此一举

# 格式化(只在主节点上运行)
hdfs namenode -formatstart-dfs.sh
start-yarn.sh# 该命令用于主节点无法正常启动只有SecondNameNode 的情况
hdfs namenode -recover# 测试
hdfs dfsadmin -report
hdfs:   http://master:9870 
yarn:   http://master:8088
# 如果没有啥报错,恭喜你,成功了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/896762.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

task1_2.c

include<stdio.h> int main() { printf(" 0 \n"); printf("\n"); printf("I I\n"); printf(" 0 \n"); printf("\n"); printf("I I\n"); return 0; }

No.44 ES6---Babel转码器(安装有点问题,用到再说)

一、Babel转码器Babel是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在老版本的浏览器执行。 这意味着,你可以用 ES6 的方式编写程序,又不用担心现有环境是否支持。 1.浏览器支持性查看https://caniuse.com/2.Babel 官网https://babeljs.io/3.转码示例原始…

kubesphere中查看argocd登陆密码

获取argocd密码PASSWORDkubectl get secret argocd-initial-admin-secret -nargocd -o jsonpath="{.data.password}"|base64 -d 登陆: admin/PASSWORD

rockchip sdk使用make menuconfig无法删除选项文字(MobaXterm)

问题:在使用make menuconfig编辑内核配置时,按退格键删除不了相关选项,如下图所示:解决办法: 1. 在全局设置部分,把这里的退格键发送^H取消勾选:2. 在开启一个新会话时,进行同样的设置:

线控转向控制系统SbW

线控转向控制系统是一种将驾驶员对方向盘的操作信号转换为电信号,再传递给转向机,从而控制车轮完成相应的转向动作的技术。经纬恒润推出的线控转向控制系统SbW,分为路感模拟器与转向执行器,皆采用全冗余设计及主从控制方案,同时,按照ISO26262与DIN70065进行功能安全与降级…

uniapp使用scroll-view嵌套时不触发滚动事件

参考链接:微信文档:https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html uniapp文档: https://uniapp.dcloud.net.cn/component/scroll-view.html布局代码:<scroll-view scroll-y class="scroll-box" bindscrolltolower="scro…

OpenCL 调用关系

学习 OpenCL,概念很多,理解不深,所以看示例代码时比较糊涂。 于是,把调用关系简单画了个图:希望能加深理解吧。

SAP SMW0 配置EXCEL 上载模板,供其他tcode 下载模板

本文演示如何在自定义的tcoe 中,可以点击下载保存好的默认excel模板: 1. 打开 SMWO: 筛选 直接点新增 点浏览,找你本机的 excel 模板,进行上载 上载完后, 回到上载程序,点击,就能弹出需要下载的excel模板了

OP51常见问题(自动安装座板)

座板放置歪斜 1.夹爪夹住座板后,上升-->翻转180-->横移-->下降放置。需要准确放入铆钉内。 2.因为座板和夹爪都是金属件,所以旋转和横移过程中可能会发生水平方向的偏移,导致放置时对孔失败。 如果放置失败座板浮起,对光检测到了,上方的大压块会下压一次,尝试将…

YASKAWA点焊机器人维修的流程

在现代工业生产中,工业机器人发挥着至关重要的作用,而YASKAWA点焊机器人更是其中的佼佼者。然而,就像任何设备一样,机器人也会遭遇故障,这时候安川机器人维修、YASKAWA机器人维修以及工业机器人维修就显得尤为关键。一、机器人故障的常见类型YASKAWA点焊机器人在长时间的工…

Camstar中ToggleContainer标题样式改成建模框一样的

😘宝子:除非不再醒来,除非太阳不再升起,不然都请你好好生活,挣扎着前进,开心的笑。(●◡●)

Unpivot Columns与Pivot Columns的连用

一、背景 需要进行数据清洗二、 数据准备 三、操作步骤 3.1 上传数据 +3.2 UnpivotOtherColumns3.3 AddColumn 3.4 RemoveColumns3.5 Pivot