不会linux也能搭建Hadoop集群(完全分布式)


查看本机地址

查看方式1

win+R 快捷键,输入cmd,打开终端;输入ipconfig,查看本机IP的信息。

查看方式2

点击网络和共享技术

点击查看

dainji

查看详细信息

记住这4个地址

这里的地址可能与后面不同(连接了不同WiFi,所以你们主机和虚拟机为准,记住这4个地址

查看网关

设置master虚拟机

网络配置(桥接模式)

打开终端输入下面命令,查看网卡文件名字(大部分为ens33)

提示

找到网络配置路径名字(记不住名字可以进行查看或者看看是不是这个名字ens33)
find /etc -name ifcfg*
find /etc -name *ens*

用文本编辑器vi(或vim)打开文件ifcfg-ens33

cd / 如果在根的目录下就不用这一步操作
[root@localhost ye]# vi  etc/sysconfig/network-scripts/ifcfg-ens33

然后进行网络配置

查看自己主机地址进行配置
IPADDR:设置和宿主机同网段ip
NETMASK:子网掩码和宿主机相同
GATEWAY: 默认网关和宿 主机相同
DNS: 跟宿主一样

注意:这里的IPADDR地址最后一位不能跟本地主机的ip地址和网关一样(最后一位)且这里的IPADDR地址是上面查看网关虚拟机的地址(且进行了修改)

改完之后,shift+:,然后输入 : wq 保存退出(Esc

退出到命令行界面,然后输入重启命令reboot,重启一下系统即可

关闭selinux

vi /etc/selinux/config

在这里插入图片描述

关闭防火墙和防火墙自启,查看防火墙状态

[root@localhost ~]# systemctl stop firewalld 关闭防火墙
[root@localhost ~]# systemctl disable firewalld 防火墙开机禁用

退出到命令行界面,然后输入重启命令reboot,重启一下系统即可

reboot或者
service network restart(建议这个)

修改节点的主机名

vi  /etc/hostname(手动修改)
或者
hostnamectl set-hostname master(直接修改)

然后重启

service network restart

配置host文件

添加子节点

vi /etc/hosts

先设置子节点,到时候克隆的时候(另外2台虚拟机)就按你设置的节点进行网络配置

SSH免密配置以及验证(所有节点

Hadoop 运行过程中需要管理远端 Hadoop 守护进程,在 Hadoop 启动以后,NameNode是通过 SSH(Secure Shell)来启动和停止各个 DataNode 上的各种守护进程的。这就必须在节点 之间执行指令的时候是不需要输入密码来执行的形式。我们需要配置 SSH 运用无密码公钥认证的形式,这样NameNode 就可以使用 SSH 无密码登录并启动 DataNode 上的各种守护进程,同样原理 DataNode 上也能使用 SSH 无密码登录到 NameNode

然后创建hadoop用户有2种方式(2种方式创建的时候也需要添加内容)

第一种通过命令行

创建用户 useradd hadoop
设置密码 passwd hadoop

第二种(创建虚拟机的时候创建用户)

以上2种都必须添加内容

创建用户完成后对hadoop用户启动sudo命令

vi /etc/sudoers

输出命令后打开后添加权限

安装和启动ssh协议

首先查看ssh是否安装

#rpm 命令用于管理套件;-qa代表query;a代表all;grep代表文件内字符串查询

rpm -qa |grep openssh

有这3个就不用安装了(一般克隆也都有这3个)

如果没有安装可通过命令行安装

#yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
#yum的命令形式一般是如下:yum –选项命令包其中选项是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。[command]为所要进行的操作,[package ...]是操作的对象。
yum install openssh*

注意以上都是root用户操作

克隆

然后克隆2台节点虚拟机(ip地址设置必须是刚刚上面提前设置好的ip地址)

image-20210307214128024

克隆完后也要进行网络配置,这一步操作跟上面设置master虚拟机网络配置差不多(其实修改ip地址和名字【名字是slave1的机子就修改成slave1】就好了)

slave1虚拟机

image-20210307214819750

slave2虚拟机也一样改为10.60.0.30还有名字也要改

#更改名字,不加sudo可能权限不够
sudo vi /etc/hostname

image-20210307222627339

改完名字和ip地址切记要重启

#Systemctl是一个系统管理守护进程、工具和库的集合,用于取代System V、service和chkconfig命令,初始进程主要负责控制systemd系统和服务管理器
#重启命令
systemctl reboot -i

然后master虚拟机切换成hadoop用户(以下所有的操作都是hadoop用户下操作)

#切换成hadoop用户
su hadoop

使用ssh-keygen生成私钥和公钥

注意:3台虚拟机都必须同样的操作,且配置成功后第一次是需要输入密码的,但之后ssh就不需要输密码了。

每个节点生成密匙对

#参数 -t rsa 表示使用rsa算法进行加密,执行后,会在/home/当前用户/.ssh目录下找到id_rsa(私钥)和id_rsa.pub(公钥)
#使用-t选项指定要生成的密钥的类型。如果在不带任何参数的情况下调用ssh-keygen会为在SSH协议2连接中使用。
#三台虚拟机都必须执行这个命令
ssh-keygen -t rsa

然后一直默认回车就可以了

image-20210307220947038

接着将公钥发送到免密登录的节点上(包括本机)

#ssh-copy-id命令可以把本地主机的公钥复制到远程主机authorized_keys文件上
#如果这个 “-i”选项已经给出了,然后这个认证文件(默认是~/.ssh/id_rsa.pub)被使用,不管在你的ssh-agent那里是否有任何密钥。
#三台虚拟机都必须执行这个命令
ssh-copy-id -i master
ssh-copy-id -i slave1
ssh-copy-id -i slave2

然后根据提示输入yes,然后输入免密节点的密码

image-20210307221642363

验证是否免密登录成功

ssh master
ssh slave1
ssh slave2
image-20210307233915525

如果失败看看是不是没有切换到su hadoop用户下操作或者漏了某台的虚拟机没有生成密匙对配对(成功后第一次是需要输入密码的,但之后ssh就不需要输密码了)

下载Xshell和Xftp软件(用于操作虚拟机和上传文件)

连接

登录

Java环境安装(所有节点都必须配置)

导入jar包

image-20210310212542920

然后新建java目录

#英文全拼:make directory
sudo mkdir /usr/java

java的安装包(jar)解压到另一个文件(java目录)

#创建解压文件夹
sudo mkdir /usr/unpack
#tar:解压缩命令;-z:有gzip属性的;-x:解压;-v:可选,显示压缩的详细信息;-f <压缩文件名>后面必须指定文件名;-C 切换到指定目录
sudo tar -zxvf /usr/java/jdk-8.tar.gz -C /usr/unpack

配置环境变量

sudo vi/etc/profile
export JAVA_HOME=/usr/unpack/jdk1.8.0_201
export JRE_HOME=$JAVA_HOME/jre
#在linux中,小数点“.”表示当前路径,冒号“:”在此表示分隔符。
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

这里可选(提前配置的话下一步配置Hadoop环境的时候就不用配置了)

export HADOOP_HOME/usr/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

使环境生效

. /etc/profile

最后一步验证安装是否成功

java -version
javac

在master虚拟机上安装Hadoop

上面已经把所有的jar包导进来了,所以直接创建文件夹、解压就行了

hadoop安装包(jar)解压到/usr/hadoop目录下

tar -zxvf /usr/java/hadoop-3.1.2.tar.gz -C /usr

重命名安装路径

sudo mv /usr/hadoop-3.1.2/ /usr/hadoop

配置Hadoop环境变量(可以在配置java环境时提前配置)

sudo vi /etc/profile
export HADOOP_HOME=/usr/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

使配置环境变量生效

. /etc/profile

配置Hadoop-env.sh文件

sudo vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh

#修改配置文件里面的JAVA_HOME
JAVA_HOME=/usr/unpack/jdk1.8.0_201

配置core-site.xml文件

sudo vi $HADOOP_HOME/etc/hadoop/core-site.xml
<configuration>
    <property>
        <-- 文件管理系统名称 -->
        <name>fs.defaultFS</name>
            <-- hdfs://虚拟机名[master]:9000 -->
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <-- 临时文件存储路径 -->
        <name>hadoop.tmp.dir</name>
            <-- 任意存在的路径 -->
        <value>/home/hadoopData/tmp/</value> 
    </property>
</configuration>

配置hdfs-site.xml文件

在配置文件添加:保存文件副本数量、hdfs的namenode数据存储目录、hdfs的datanode数据存储目录、hdfs的web访问地址

sudo vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <-- 副本数量 replication(复制)-->
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <-- hdfs的namenode数据存储目录 -->
        <name>dfs.namenode.name.dir</name>
        <value>/home/hadoopData/name</value>
    </property>
    <property>
        <-- hdfs的datanode数据存储目录-->
        <name>dfs.datanode.data.dir</name>
        <value>/home/hadooData/data</value>
    </property>
    <property>
        <-- hdfs的web访问地址  address(地址)-->
        <name>dfs.namenode.http-address</name>
        <value>0.0.0.0:50070</value>
    </property>
</configuration>

配置yarn-site.xml文件

sudo vi $HADOOP_HOME/etc/hadoop/yarn-site.xml
<configuration>
    <property>
        <-- 资源管理器 主机名-->
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <-- 获取数据的方式为shuffle-->
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

配置mapred.site.xml文件

sudo vi $HADOOP_HOME/etc/hadoop/mapred-site.xml
<configuration>
    <property>
        <-- mapreduce 框架名 运行在yarn-->
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <-- mapreduce 历史任务地址 -->
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
    </property>
    <property>
        <-- 域名将作为 浏览器可访问 历史任务web访问地址-->
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
    </property>
</configuration>

配置workers文件

sudo vi $HADOOP_HOME/etc/hadoop/workers
slave1
slave2

master节点上的安装文件同步到slave1slave2节点上

#scp 命令主要用来在不同主机之间做数据的安全拷贝的
sudo scp -r /usr/hadoop/ slave1:/usr/
sudo scp -r /usr/hadoop/ slave2:/usr/

新建数据文件目录(也就是配置文件配置的地址)(所有节点

#-p:来创建多级文件夹
sudo mkdir -p /home/hadoopData/tmp
sudo mkdir -p /home/hadoopData/name
sudo mkdir -p /home/hadoopData/data

修改hadoop文件属主权限(所有节点

#chown 用于修改文件;将当前前目录下的所有文件与子目录的拥有者皆设为 
hadoop,群体的使用者 hadoop

sudo chown -R hadoop:hadoop /usr/hadoop
sudo chown -R hadoop:hadoop /home/hadoopData/

初始化Hadoop

格式化namenodemaster节点)

hdfs namenode -format

启动hadoopmaster节点)

#注意启动后验证完必须关掉
start-all.sh

#关闭
stop-all.sh

查看master的守护进程

jps

master虚拟机

image-20210310212909401

slave1虚拟机

image-20210310213053045

slave2虚拟机

image-20210310213107625

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值