Hadoop3.x完全分布式搭建(详细)
环境准备
- vm虚拟机(自行安装Centos7系统)
- hadoop3.x安装包(linux版本)
- java1.8安装包(linux版本)
- 不要不看文字直接复制粘贴
- 操作命令的用户很重要,否则后续会引发关于权限的问题
- ftp 与 终端工具需要自己操作使用本教程不涵盖操作,如有需要,自行百度,本教程均使用终端shell工具截图,其性质与linux系统右键打开终端相同。
- 使用root用户登录,用一个单独的用户管理hadoop集群,所以要用管理员(root)用户创建一个名字为hadoop的用户。
[root@hadoop102 ~]# useradd hadoop
- 设置 hadoop 用户的密码
[root@hadoop102 ~]# passwd hadoop
- 给 hadoop 用户提权,编辑如下路径文件
[root@hadoop102 ~]# vim /etc/sudoers
? 将文件此处修改为这样(在100行左右)
文章图片
- 修改静态IP
[root@hadoop102 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
? 静态ip文件修改如下
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="385ea190-1b85-42cf-9df4-916f2dd86bc7"
DEVICE="ens33"
ONBOOT="yes"
#ip 写自己设置的
IPADDR=192.168.127.112
#子网掩码 固定的
NETMASK=255.255.255.0
#网关 就是将你ip最后一段改成1
GATEWAY=192.168.127.1
- 修改主机名
[root@hadoop102 ~]# vim /etc/hostname
? 文件内写入自己的主机名字即可
- ![](https://img2022.cnblogs.com/blog/1900844/202203/1900844-20220309231329713-802217411.png)
- 修改主机域名映射
[root@hadoop102 ~]# vim /etc/hosts
? hosts文件内容如下
文章图片
- 关闭防火墙(运行b即可永久关闭)
- 一次性关闭 -- 重启之后系统会默认打开防火墙
[root@hadoop102 ~]# systemctl stop firewalld
- 永久关闭防火墙
[root@hadoop102 ~]# systemctl disable firewalld
- 【Hadoop3.x完全分布式搭建(详细)】查看当前防火墙状态
[root@hadoop102 ~]# systemctl status firewalld
状态截图
文章图片
- 一次性关闭 -- 重启之后系统会默认打开防火墙
- 重启机器,生效所有配置,注意 下次登录直接使用 hadoop 账户信息登录系统,这样子直接创建目录权限就是属于hadoop的
- 如果想要终端连接虚拟机,待重启之后即可输入ip与用户信息即可登录终端。
[root@hadoop102 ~]# reboot
- 创建javajdk 和 hadoop 安装所需目录
- 创建软件安装包存放目录
- software目录用于存放安装包
- module目录用于软件的安装目录(或者叫解压目录)
[hadoop@hadoop102 /]$ sudo mkdir /opt/software [hadoop@hadoop102 /]$ sudo mkdir /opt/module
- 赋予software目录上传权限,可以看到下面的权限已经允许外部读取写入
[root@hadoop102 opt]# chmod +777 /opt/software /opt/module [root@hadoop102 opt]# ll 总用量 12 drwxrwxrwx. 2 root root 4096 3月9 21:56 module drwxr-xr-x. 2 root root 4096 10月 31 2018 rh drwxrwxrwx. 2 root root 4096 3月9 21:56 software
- 上传hadoop和java安装包(本操作不涵盖,注意:使用任意的ftp工具登录连接时候请使用 hadoop 用户登录操作)
- 解压至module目录
[hadoop@hadoop102 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C ../module/ [hadoop@hadoop102 software]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C ../module/
- 创建软件安装包存放目录
- 配置java 和 hadoop的环境变量
- 切换至root用户操作系统文件,操作完成之后切换成hadoop用户
[hadoop@hadoop102 software]$ su root
- 使用root用户修改环境变量文件,在文件末尾追加如下信息,如果你的安装路径跟我不同这里需要写你自己的,跟着教程走且是同一个版本安装包或者同一个安装文件夹名字的不需要任何修改
#java export JAVA_HOME=/opt/module/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin#hadoop3.1.3 export HADOOP_HOME=/opt/module/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin
- 切换至hadoop用户,并生效配置文件,查看效果
[hadoop@hadoop102 software]$ source /etc/profile
- 自行运行如下命令进行环境测试,足够自行不测试也可以的。
[hadoop@hadoop102 software]$ java [hadoop@hadoop102 software]$ javac [hadoop@hadoop102 software]$ java -version [hadoop@hadoop102 software]$ hadoop version
- 切换至root用户操作系统文件,操作完成之后切换成hadoop用户
- 配置hadoop
- 编辑core-site.xml文件
[hadoop@hadoop102 /]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
fs.defaultFS hdfs://hadoop102:8020 hadoop.tmp.dir /opt/module/hadoop-3.1.3/data
- 编辑hdfs-site.xml文件
[hadoop@hadoop102 /]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
dfs.namenode.http-address hadoop102:9870 dfs.namenode.secondary.http-address hadoop104:9868
- 编辑yarn-site.xml文件
[hadoop@hadoop102 /]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml
yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname hadoop103 yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
- 编辑mapred-site.xml文件
[hadoop@hadoop102 /]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml
mapreduce.framework.name yarn
- 编辑hadoop-env.sh文件
[hadoop@hadoop102 /]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/hadoop-env.sh
- 文件末尾追加一行
export JAVA_HOME=/opt/module/jdk1.8.0_212
- 编辑workers文件
[hadoop@hadoop102 hadoop]$ vim workers
- 写入如下内容
hadoop102 hadoop103 hadoop104
- 编辑core-site.xml文件
- 到此步骤,关闭虚拟机,克隆两台,请自行百度,待克隆完成之后,开启两个克隆的机器,不要通过终端连接,然后做下面操作,在vm中进行。
- 三台主机都使用root用户登录
- 修改克隆1机器的主机名
[root@hadoop102 hadoop]# vim /etc/hostname
内容如下
hadoop103
- 修改克隆1的ip
[root@hadoop102 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
内容如下
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="385ea190-1b85-42cf-9df4-916f2dd86bc7" DEVICE="ens33" ONBOOT="yes" IPADDR=192.168.127.113 NETMASK=255.255.255.0 GATEWAY=192.168.127.1
- 修改克隆2机器的主机名
[root@hadoop102 hadoop]# vim /etc/hostname
内容如下
hadoop104
- 修改克隆2机器的ip
[root@hadoop102 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
内容如下
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="385ea190-1b85-42cf-9df4-916f2dd86bc7" DEVICE="ens33" ONBOOT="yes" IPADDR=192.168.127.114 NETMASK=255.255.255.0 GATEWAY=192.168.127.1
- 重启两台克隆机器,使配置重新加载生效。
[root@hadoop102 ~]#reboot
- 修改克隆1机器的主机名
- 三台主机都使用root用户登录
- 配置免密登录
- hadoop102生成免密并发送给其余两个节点(hadoop102,hadoop103,hadoop104)
[hadoop@hadoop102 .ssh]$ ssh-keygen -t rsa [hadoop@hadoop104 .ssh]$ ssh-copy-id hadoop102 [hadoop@hadoop102 .ssh]$ ssh-copy-id hadoop103 [hadoop@hadoop102 .ssh]$ ssh-copy-id hadoop104
- hadoop103生成免密并发送给其余两个节点(hadoop102,hadoop103,hadoop104)
[hadoop@hadoop103 .ssh]$ ssh-keygen -t rsa [hadoop@hadoop103 .ssh]$ ssh-copy-id hadoop102 [hadoop@hadoop104 .ssh]$ ssh-copy-id hadoop103 [hadoop@hadoop103 .ssh]$ ssh-copy-id hadoop104
- hadoop104生成免密并发送给其余两个节点(hadoop102,hadoop104,hadoop103)
[hadoop@hadoop104 .ssh]$ ssh-keygen -t rsa [hadoop@hadoop104 .ssh]$ ssh-copy-id hadoop102 [hadoop@hadoop104 .ssh]$ ssh-copy-id hadoop103 [hadoop@hadoop104 .ssh]$ ssh-copy-id hadoop104
- hadoop102生成免密并发送给其余两个节点(hadoop102,hadoop103,hadoop104)
- 格式化(必须主节点操作,既hadoop102这个节点)
[hadoop@hadoop102 sbin]$ hdfs namenode -format
- 然后可以通过如下文本查看对应的信息
192.168.127.112:9870--访问hadoop集群前台页面 192.168.127.113:8088--访问hadoop的所有应用页面 还可以通过各个节点jps命令查看启动的任务节点状态。
推荐阅读
- java分布式面试降级组件Hystrix的功能特性
- 腾讯云|首例“微服务+国产分布式数据库”架构,TDSQL助力昆山农商行换“心”
- 程序员|快速了解阿里微服务热门开源分布式事务框架——Seata
- 分布式|微服务分布式事务解决方案实战(理论基础篇)
- java|java 分布式控制_微服务架构的分布式事务控制解决方案(资料完整)
- 微服务架构的分布式事务解决方案
- “分布式”|“分布式” 开发规范治理 - Phodal | Phodal - A Growth Engineer
- 分布式任务调度(你知道和不知道的事)
- springboot|SpringBoot集成Minio搭建自己的分布式文件服务器(Minio集成篇)
- Bert不完全手册1.|Bert不完全手册1. 推理太慢(模型蒸馏)