大数据开源框架环境搭建(四)——HDFS完全分布式集群的安装部署

这篇具有很好参考价值的文章主要介绍了大数据开源框架环境搭建(四)——HDFS完全分布式集群的安装部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:本实验的所有路径均为本人计算机路径,有些路径需要看自己的,跟着我的一起做最好。普通用户下大部分命令需要加sudo,root模式下不用。如果怕麻烦,直接在root用户下操作。

目录

实验环境:

实验步骤:

一、配置NAT网络 ,分配静态IP地址

1.打开VMware,选择编辑,选择虚拟网络编辑器,选择NAT模式,取消选择使用本地DHCP服务将IP地址分配给虚拟机(进行完此操作,虚拟机应该是没网了)

 2.点击上图中的NAT设置,查看并记住网关IP(要以自己电脑的为准)

3.打开控制面板\网络和 Internet\网络连接,右键VMnet8,查看属性,选择Ipv4,点击属性:

 4.打开终端,查看网卡名称:

5.打开网络配置文件,配置网络:

6.执行 reboot  命令重启系统(非必须)。

7.用 ping 命令验证网络是否通达(其实打开浏览器搜索试一下也可以):

 二、关闭防火墙(可以防止后续ssh登录出现问题)

三、为了方便,修改host用户名(安装虚拟机的时候就直接起对名字就好了)

四、配置主机名与ip映射:

 五、配置Java jdk1.8

1.在宿主机下载jdk1.8然后通过共享文件夹传到虚拟机

 2.可以通过图形界面进入共享文件夹目录然后右键在终端打开:

 3.使用命令进行解压,使用命令tar -zxf 刚才复制的名字 -C /usr/local(我选择将jdk安装至 /usr/local/ 中为例,也可以装在其他地方)

4.配置环境变量

5.刷新环境变量:(一定要做)

6.测试java命令是否可用:

 六、安装配置hadoop

 1.在宿主机下载hadoop然后通过共享文件夹传到虚拟机

 2.可以通过图形界面进入共享文件夹目录然后右键在终端打开:

3.然后使用命令sudo tar -zxf 刚才复制的名字 -C /usr/local(我选择将 Hadoop 安装至 /usr/local/ 中为例,也可以装在其他地方)

4. 进入/usr/local/进行操作:

5. Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息(不查看也行,配置完环境变量查看即可):

6.配置环境变量(root模式下)

七、 安装配置ssh,配置root用户ssh登录 

1.SSH介绍

2.配置root用户ssh登录:

八、克隆两个虚拟机

九、本机以及不同主机之间的ssh免密登录

1.先说一下原理:

2.自身免密的步骤,以A主机(假设登录名为name,相当于master的lee)为例:

3.主机之间免密登录(假设A:192.168.75.111,B:192.168.75.113。A登录名为lee,host名为Node1;B登录名为lee,host名为Node3)

4.总结(master,salve1,slave2本机的ssh免密登录以及相互之间的免密登录,登录名均为lee)

十、最终配置与调试

1.修改配置文件

2.将配置好的Hadoop分发到其他主机

3.格式化namenode

4.启动hadoop

 5.浏览器web测试


本框架的分布式集群如下图所示(IP地址不一定跟图中一样)

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

实验环境:

ubuntu18.04

Hadoop版本:3.1.3

JDK版本:1.8

实验步骤:

一、配置NAT网络 ,分配静态IP地址

1.打开VMware,选择编辑,选择虚拟网络编辑器,选择NAT模式,取消选择使用本地DHCP服务将IP地址分配给虚拟机(进行完此操作,虚拟机应该是没网了)

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 2.点击上图中的NAT设置,查看并记住网关IP(要以自己电脑的为准)

我的是192.168.75.2:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

实际上就是文章开头图中的这个:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

3.打开控制面板\网络和 Internet\网络连接,右键VMnet8,查看属性,选择Ipv4,点击属性:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

(选择使用下面的IP地址)查看ip地址,当这个地址跟虚拟机NAT设置里的网关(也就是上文所说的192.168.75.2)一样时,需要改变

当不一样时,改为192.168.75.x(即前三段数字与网关ip一样),x不能为2,以免与网关冲突,最好也不为0(注意要以自己电脑的为准)

这里我把ip地址设为192.168.75.1:

 hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 这个IP地址就是文章开头图片的这个:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 然后修改默认网关为192.168.75.2与网关ip一样

 hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 4.打开终端,查看网卡名称:

输入ip addr 查看网卡名称(后续要用),本人网卡名称为ens33(基本上都是这个名字):hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

输入ls /etc/netplan查看配置文件:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

从图上可以看出网络配置文件名为:01-network-manager-all.yaml

5.打开网络配置文件,配置网络:

输入(如果提示权限不够就用root模式):

vi /etc/netplan/01-network-manager-all.yaml
或vim /etc/netplan/01-network-manager-all.yaml
或gedit /etc/netplan/01-network-manager-all.yaml(仅适用于图形界面,最方便)

 注:未安装vim时,使用vi命令可能会出bug,处理方法见我其他文章(未完待做)

 修改文件如下(一定要注意缩进):

network:
  ethernets:
    ens33:
#配置的网卡名称
      dhcp4: no
#关闭dhcp4
      dhcp6: no
#关闭dhcp6
      addresses: [192.168.75.115/24]
#设置本机IP地址(192.168.75.x,不能与下边的网关一样)及掩码
      gateway4: 192.168.75.2
#设置网关(即虚拟机NAT设置里的网关)
      nameservers:
        addresses: [114.114.114.114,8.8.8.8]
#设置DNS

我的Node1(master)节点配置如下:

配置完应该是这样的(一定要注意缩进,空格和tab键不能一起用):

network:
  ethernets:
    ens33:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.75.111/24] 
      gateway4: 192.168.75.2
      nameservers:
        addresses: [114.114.114.114,8.8.8.8]
  version: 2
  renderer: NetworkManager

其中gateway4就是上文说的的网关即192.168.75.2

addresses是linux虚拟机即节点的IP地址,也就是文章开头图中的(需要三个节点):

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 前三位与网关一样,最后一位自己分配,即192.168.75.x,为了防止冲突,这里的x不能是2,1(192.168.75.1是宿主机的VMnet8这个虚拟网络的IP地址),最好不要是0。我分配的是192.168.75.111,另外两个节点(slave1 slave2)是192.168.75.112和192.168.75.113(这两个节点可以先不分配,先配置完master的部分环境,再克隆两个即可,注意,克隆的两个虚拟机只需要改addresses即可)。

Node1(后边改名为master):

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 改完之后一定要保存设置!!!

即一定要执行(sudo)netplan apply(普通用户要加sudo)命令可以让配置直接生效

sudo netplan apply

如果回车之后什么都没提示说明,配置成功,否则失败,需要检查上方的操作(缩进,漏输入,多输入)


6.执行 reboot  命令重启系统(非必须)。

7.用 ping 命令验证网络是否通达(其实打开浏览器搜索试一下也可以):

ping -c 4 baidu.com

下图为正常情况

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 二、关闭防火墙(可以防止后续ssh登录出现问题)

在root用户下,输入以下命令即可关闭防火墙(同样地,根据命令字面意思,打开防火墙也就会了吧):

ufw disable

三、为了方便,修改host用户名(安装虚拟机的时候就直接起对名字就好了)

即把Node改为master,Node2改为slave1,Node3改为slave2。(一个主节点,两个从节点)

图形界面(很简单):

打开Ubuntu设置->共享,然后修改即可

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

重启才能真正生效!!! 

命令行界面(图形界面也可以用)

ubuntu 18.04不能直接修改/etc/hostname中主机名称,重启后又恢复到安装时设置的主机名称.
正确的修改步骤如下:

修改主机名(永久),root用户不用加sudo

sudo vi /etc/hostname 

然后改为需要的主机名后保存

保存后重启

sudo reboot

如果是root模式,不用加sudo

四、配置主机名与ip映射:

sudo vi /etc/hosts  插入下列内容

192.168.75.xxx(这里是你的ip地址,上一步设置过了) 主机名

以master为例,应该是

192.168.75.111 master

完整的如下图:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

ip地址每个人都不一样,用你自己配的!

如果没记住,可以使用以下命令查看(记住请略过)

ifconfig

如果发生以下错误,说明你没有安装net相关组件,直接复制它的提示

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 根据提示,使用命令安装net相关组件

sudo apt install net-tools

如果出现以下报错:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

那么先执行sudo apt-get update,再sudo apt install net-tools

sudo apt-get update

再次使用ifconfig,可以查看自己的ip地址:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 五、配置Java jdk1.8

1.在宿主机下载jdk1.8然后通过共享文件夹传到虚拟机

设置共享文件夹:

(30条消息) 大数据开源框架环境配置(三)——打开Ubuntu虚拟机,设置root密码,安装VMware Tools,设置共享文件夹_木子一个Lee的博客-CSDN博客

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 2.可以通过图形界面进入共享文件夹目录然后右键在终端打开:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 也可以在终端使用cd /mnt/hgfs/share进入(我的共享文件夹目录是/mnt/hgfs/share,以自己的为准,/mnt/hgfs/是一样的,第三级每个人不同)

提前复制好压缩包的名字,我的是jdk-8u311-linux-x64.tar.gz

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 3.使用命令进行解压,使用命令tar -zxf 刚才复制的名字 -C /usr/local(我选择将jdk安装至 /usr/local/ 中为例,也可以装在其他地方)

sudo tar -zxvf ./jdk-8u311-linux-x64.tar.gz -C /usr/local

sudo tar -zxf ./jdk-8u311-linux-x64.tar.gz -C /usr/local

注意:每个人下载的jdk1.8版本可能不一样,也就是压缩包名字可能不一样

4.配置环境变量

为了方便,先修改文件名:
进入/usr/local

cd /usr/local

执行:

mv jdk1.8.0_311 jdk

将原文件夹名改为jdk

然后设置环境变量(需要在root用户下):

关于环境变量的相关问题,请看:

(30条消息) 解决配置了/etc/profile/下环境路径刷新后,重新打开或切换用户失效的问题_木子一个Lee的博客-CSDN博客

(30条消息) Linux(Ubuntu)配置不同用户的环境变量_木子一个Lee的博客-CSDN博客_linux不同用户的环境变量 (30条消息) ubuntu配置环境变量的方法_ubuntu设置环境变量_木子一个Lee的博客-CSDN博客

(30条消息) ubuntu中环境变量文件/etc/profile、.profile、.bashrc、/etc/bash.bashrc之间的区别和联系_木子一个Lee的博客-CSDN博客_ubuntu 环境变量文件

cd
vi /etc/profile

vim /etc/profile

gedit /etc/profile(仅限于图形界面)

在最后加入环境变量(直接复制过去会有乱码,仔细检查一下):

以下路径(/usr/local/jdk)是以我自己的为准

export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

或:

export JAVA_HOME=/usr/local/jdk
export PATH=.:$JAVA_HOME/bin:$PATH

5.刷新环境变量:(一定要做

source /etc/profile

6.测试java命令是否可用:

java -version

如果提示Command ‘java’ not found…..,说明环境变量配置错误,需要检查一下

出现以下内容说明成功了: 

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 六、安装配置hadoop

 1.在宿主机下载hadoop然后通过共享文件夹传到虚拟机

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 2.可以通过图形界面进入共享文件夹目录然后右键在终端打开:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

也可以在终端使用cd /mnt/hgfs/share进入

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

提前复制好压缩包的名字,每个人可能不一样,我的是hadoop-3.1.3.tar.gz

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

3.然后使用命令sudo tar -zxf 刚才复制的名字 -C /usr/local(我选择将 Hadoop 安装至 /usr/local/ 中为例,也可以装在其他地方)

如果是root用户下,不需要加sudo(下同)

sudo tar -zxvf ./hadoop-3.1.3.tar.gz -C /usr/local

sudo tar -zxf ./hadoop-3.1.3.tar.gz -C /usr/local

注意:每个人下载的hadoop版本可能不一样,也就是压缩包名字可能不一样

4. 进入/usr/local/进行操作:

cd /usr/local/

将文件夹名改为hadoop

sudo mv ./hadoop-3.1.3/ ./hadoop

5. Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息(不查看也行,配置完环境变量查看即可):

cd /usr/local/hadoop
./bin/hadoop version

以上两条命令可以用一条代替:

/usr/local/hadoop/bin/hadoop version

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

6.配置环境变量(root模式下)

vi /etc/profile

vim /etc/profile

gedit /etc/profile(仅限于图形界面)

添加(同样,路径/usr/local/hadoop也是每个人都不一样的,即安装目录):

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

保存退出后刷新环境变量!

source /etc/profile

这时候就可以直接用hadoop version(不需要找到指定目录)查看Hadoop版本了,验证是否配置成功

七、 安装配置ssh,配置root用户ssh登录 

1.SSH介绍

ssh为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。首先查看系统是否启动了SSH进程

root模式下,

安装ssh服务:

apt install openssh-server

安装完成后启动SSH进程:

service ssh start

2.配置root用户ssh登录:

默认情况下Ubuntu不允许使用root用户进行SSH登录,需对配置文件/etc/ssh/sshd_config进行如下修改:(也可以在root用户下进行,不用输入sudo)

sudo vi /etc/ssh/sshd_config

sudo vim /etc/ssh/sshd_config

或(仅限于图形界面)

sudo gedit /etc/ssh/sshd_config

将配置项PermitRootLogin 设为yes

可以直接把PermitRootLogin prohibit-passwd前面的#去掉,然后改成

PermitRootLogin yes

也可以跟下图一样,直接添加

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

然后重启ssh服务(一定要做!):

service ssh restart

八、克隆两个虚拟机

克隆操作:

保证虚拟机在关机状态,点击虚拟机:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

然后选择管理->克隆,点击下一步: 

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 默认:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 选择完整克隆,下一步

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 修改名字和位置(最好不要在C盘),完成:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

克隆后的两个虚拟机(salve1、slave2)

开机后,用ifconfig看看IP地址,发现跟master一样,需要重新改一下ip地址。

跟步骤一一样,在网络配置文件里修改ip地址即可

slave1:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

slave2:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

也要记得保存设置:

sudo netplan apply

发现jdk也已经搞好了

java -version

查看VMware Tools,发现也装好了

Root密码也是一样的

防火墙状态也是一样的

Hadoop也安装好了

修改完ip之后,在mobaxterm里边远程登录,发现是可以的

mobaxterm请看:

(30条消息) 使用MobaXterm进行远程登录_木子一个Lee的博客-CSDN博客

用户名(master是lee,slaves也是lee)也是一样的,可以选择改,不改也没关系

如果你在克隆之前做了不同主机之间的ssh免密登录(一般放在下一步做),那么克隆之后是不行的,要重新配置

所以最好克隆之后再配置不同主机之间ssh免密登录

九、本机以及不同主机之间的ssh免密登录

如果不想看1 2 3啰嗦就直接往下翻,看4.总结

1.先说一下原理:

假如有两台(或多台)同局域网的服务器A:192.168.75.111,B:192.168.75.113。让A,B这两台服务器之间能两两互相免密登录,并且每台服务器都可以自我免密登录(自我免密登录即:ssh localhost 时不需要密码)。

免密登录需要授权,假设把A公钥id_rsa.pub交给B授权,那么A就可以免密登录B,如果A的公钥id_rsa.pub给了自己,那么A就可以免密登录自己。

2.自身免密的步骤,以A主机(假设登录名为name,相当于master的lee)为例:

首先生成公钥、私钥:ssh-keygen -t rsa,然后一直回车;

然后查看A主机生成密钥文件,默认在用户目录中的.ssh文件夹内(在普通用户下生成的公钥,密钥文件只在普通用户的.ssh文件里,root用户里的没有,而且连.ssh文件夹都没有(只有生成密钥,才会创建.ssh文件夹),反之也是如此):

普通用户:/home/name/.ssh/   name是登录名,如果换成master节点,我的master的登录名是lee,所以位置在/home/lee/.ssh/

对于root用户,位于/root/.ssh下

其中:id_rsa为私钥文件,id_rsa.pub为公钥文件

如下图所示

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

然后对于普通用户,查看/home/name/.ssh/有没有管理密码登录权限的authorized_keys文件

如果按照我的master节点,就是/home/lee/.ssh

命令依次为:

cd /home/name/.ssh/
ls

对于root用户,查看/root/.ssh有没有authorized_keys文件

cd /root/.ssh/
ls

若有,直接执行

cat id_rsa.pub >> authorized_keys

若没有,则先创建“authorized_keys”文件,并修改权限为“600”:

touch authorized_keys
chmod 600 authorized_keys

然后执行

cat id_rsa.pub >> authorized_keys

最后测试一下自身免密登录:

ssh localhost

如果出现:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

则修改/etc/ssh/ssh_config文件中的配置(sudo vi /etc/ssh/ssh_config 或sudo vim /etc/ssh/ssh_config或sudo gedit /etc/ssh/ssh_config,root用户不需要加sudo),添加如下两行配置:

StrictHostKeyChecking no

UserKnownHostsFile /dev/null

 注:普通用户和root用户的免密登录配置是独立的,也就是说,如果以上操作都是在普通用户下进行的,那么root用户下就不能免密登录(得需要免密),反之也是这样。如果两种用户都要免密,那么就要还需在root模式下执行以上操作

3.主机之间免密登录(假设A:192.168.75.111,B:192.168.75.113。A登录名为lee,host名为Node1;B登录名为lee,host名为Node3)

首先,A生成密钥:

ssh-keygen -t rsa

然后一直回车;

然后查看A主机生成密钥文件,默认在用户目录中的.ssh文件夹内(在普通用户下生成的公钥,密钥文件只在普通用户的.ssh文件里,root用户里的没有,反之也是如此):

普通用户:/home/lee/.ssh/ (cd /home/lee/.ssh/回车,ls,回车)  

对于root用户,位于/root/.ssh下(cd /root/.ssh/,回车,ls,回车)

其中:id_rsa为私钥文件,id_rsa.pub为公钥文件

接下来,即把A生成的公钥给B的管理密码登录权限的authorized_keys文件(才能实现A免密登录B)。这就意味着B也要生成密钥(authorized_keys.ssh文件夹里。只有生成密钥,才会创建.ssh文件夹)

打开B的终端,生成密钥(ssh-keygen -t rsa),查看有无authorized_keys文件(一般没有),创建authorized_keys文件并修改权限为“600”(touch authorized_keys

chmod 600 authorized_keys),即跟上边的操作一样。

然后很关键的一步:把A的公钥追加到B的authorized_keys文件里

打开A的终端,

普通用户:进入/home/lee/.ssh/ (cd /home/lee/.ssh/,回车)

Root 用户:进入/root/.ssh(cd /root/.ssh/,回车)

利用scp命令把A的公钥发到B的tmp(可以自己选一个)文件夹下:

执行(192.168.75.113为B的IP地址):

scp id_rsa.pub 192.168.75.113:/tmp

打开B的终端,把A的公钥id_rsa.pub复制到B的.ssh文件夹下(普通用户在/home/lee/.ssh/,root用户在/root/.ssh)

普通用户执行:

cat /tmp/id_rsa.pub>>/home/lee/.ssh/authorized_keys

cp /tmp/id_rsa.pub /home/lee/.ssh/authorized_keys

root用户执行:

cat /tmp/id_rsa.pub>>/root/.ssh/authorized_keys

cp /tmp/id_rsa.pub /root/.ssh/authorized_keys

最后测试一下,成功:(可以有4种测试方法:ssh ip地址、ssh 登录名@IP地址、ssh 登录名@host名、ssh host名):

ssh 192.168.75.113

相当于(因为在前面已经做过地址与host名的映射了)

ssh Node1

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

注:普通用户和root用户的免密登录配置是独立的,也就是说,如果以上操作都是在普通用户下进行的,那么root用户下就不能免密登录(得需要免密),反之也是这样。如果两种用户都要免密,那么就要还需在root模式下执行以上操作。

同样实现BA的免密登录,也是同上

4.总结(master,salve1,slave2本机的ssh免密登录以及相互之间的免密登录,登录名均为lee)

自身免密登录:

首先生成公钥、私钥(三个节点都要这样做):

ssh-keygen -t rsa

然后一直回车;

然后创建“authorized_keys”文件,并修改权限为“600”:

touch authorized_keys
chmod 600 authorized_keys

然后执行

cat id_rsa.pub >> authorized_keys

最后测试一下自身免密登录:

ssh localhost

如果出现:

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

则修改/etc/ssh/ssh_config文件中的配置(sudo vi /etc/ssh/ssh_config 或sudo vim /etc/ssh/ssh_config或sudo gedit /etc/ssh/ssh_config,root用户不需要加sudo),添加如下两行配置:

StrictHostKeyChecking no

UserKnownHostsFile /dev/null

不同主机之间的免密登录 :

将master的公钥发送到slave1:

scp id_rsa.pub 192.168.75.112:/tmp

打开slave1的终端,把master的公钥id_rsa.pub复制到slave1的.ssh文件夹下(普通用户在/home/lee/.ssh/,root用户在/root/.ssh)

普通用户执行:

cat /tmp/id_rsa.pub>>/home/lee/.ssh/authorized_keys

cp /tmp/id_rsa.pub /home/lee/.ssh/authorized_keys

root用户执行:

cat /tmp/id_rsa.pub>>/root/.ssh/authorized_keys

cp /tmp/id_rsa.pub /root/.ssh/authorized_keys

最后测试一下(可以有4种测试方法:ssh ip地址、ssh 登录名@IP地址、ssh 登录名@host名、ssh host名)

同样地,重复上方操作,注意ip地址的改变

master还要发给slave2,

slave1要发给master和slave2,

slave2要发给master和slave1

十、最终配置与调试

1.修改配置文件

先找到目录:

cd /usr/local/hadoop/etc/hadoop

(0) 修改hadoop-env.sh

vim hadoop-env.sh

添加java路径:

export JAVA_HOME=/usr/local/jdk

(1)修改文件workers

需要把所有数据节点的主机名写入该文件,每行一个,默认为 localhost(即把本机作为数据节点),所以,在伪分布式配置时,就采用了这种默认的配置,使得节点既作为名称节点也作为数据节点。在进行分布式配置时,可以保留localhost,让Master节点同时充当名称节点和数据节点,或者也可以删掉localhost这行,让Master节点仅作为名称节点使用。

vim workers

本教程master节点仅作为名称节点使用,因此将workers文件中原来的localhost删除,只添加如下内容:

slave1
slave2

(2)修改文件core-site.xml

vim core-site.xml

或更方便的: 

gedit core-site.xml

把core-site.xml文件修改为如下内容:

<configuration>

<!--指定namenode的地址-->

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://master:9000</value>

        </property>

<!--用来指定使用hadoop时产生文件的存放目录-->

        <property>

                <name>hadoop.tmp.dir</name>

                <value>file:/usr/local/hadoop/tmp</value>

                <description>Abase for other temporary directories.</description>

        </property>

<!--用来设置检查点备份日志的最长时间-->

        <property>

                <name>fs.checkpoint.period</name>

                <value>3600</value>

        </property>

</configuration>

(3)修改文件hdfs-site.xml(gedit命令更方便)

vim hdfs-site.xml

对于Hadoop的分布式文件系统HDFS而言,一般都是采用冗余存储,冗余因子通常为3,也就是说,一份数据保存三份副本。但是,本教程有2个slave节点作为数据节点,即集群中有2个数据节点,数据能保存2份,所以 ,dfs.replication的值设置为 2。hdfs-site.xml具体内容如下:

<configuration>

        <property>

                <name>dfs.namenode.secondary.http-address</name>

                <value>master:50090</value>

        </property>

<!--指定hdfs保存数据的副本数量-->

        <property>

                <name>dfs.replication</name>

                <value>2</value>

        </property>

<!--指定hdfs中namenode的存储位置-->

        <property>

                <name>dfs.namenode.name.dir</name>

                <value>file:/usr/local/hadoop/tmp/dfs/name</value>

        </property>

<!--指定hdfs中datanode的存储位置-->

        <property>

                <name>dfs.datanode.data.dir</name>

                <value>file:/usr/local/hadoop/tmp/dfs/data</value>

        </property>

</configuration>

(4)修改文件mapred-site.xml(gedit命令更方便)

“/usr/local/hadoop/etc/hadoop”目录下有一个mapred-site.xml.template,需要修改文件名称,把它重命名为mapred-site.xml,(命令:mv mapred-site.xml.template mapred-site.xml)(也可能不需要重命名)

vim mapred-site.xml

然后,把mapred-site.xml文件配置成如下内容:

<configuration>

<!-- 指定MR运行在yarn上 -->

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

        <property>

                <name>yarn.app.mapreduce.am.env</name>

                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>

        </property>

        <property>

                <name>mapreduce.map.env</name>

                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>

        </property>

        <property>

                <name>mapreduce.reduce.env</name>

                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>

        </property>

</configuration>

(5)修改文件 yarn-site.xml(gedit命令更方便)   

vim yarn-site.xml

把yarn-site.xml文件配置成如下内容:

<configuration>

<!--指定Yarn的ResourceManager地址-->

        <property>

                <name>yarn.resourcemanager.hostname</name>

                <value>master</value>

        </property>

<!--指定Yarn的NodeManager获取数据的方式是shuffle-->

        <property>

                <name>yarn.nodemanager.aux-services</name>

                <value>mapreduce_shuffle</value>

        </property>

<!--Yarn打印工作日志-->   

        <property>   

                <name>yarn.log-aggregation-enable</name>

                <value>true</value>   

        </property>

</configuration>

2.将配置好的Hadoop分发到其他主机

上述5个文件全部配置完成以后,需要把master节点上的“/usr/local/hadoop”文件夹复制到各个节点上:

scp -r /usr/local/hadoop root@slave1:/usr/local/
scp -r /usr/local/hadoop root@slave2:/usr/local/

3.格式化namenode

hdfs namenode -format

4.启动hadoop

先启动HDFS:

start-dfs.sh

再启动YARN:

start-yarn.sh

启动后可以在Web页面查看hadoop信息:

http://mini1:50070

为了防止start-dfs.sh后报错:

在/usr/local/hadoop/sbin路径下

将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

以下警告可以忽略(也可能没有警告):

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop

 5.浏览器web测试

输入

master:9870

hdfs部署,大数据开源,教程分享,hdfs,分布式,hadoop文章来源地址https://www.toymoban.com/news/detail-742669.html

到了这里,关于大数据开源框架环境搭建(四)——HDFS完全分布式集群的安装部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Docker搭建hdfs分布式实验环境

    理论知识 Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任

    2023年04月08日
    浏览(32)
  • Linux环境搭建Hadoop及完全分布式集群

    Hadoop是一个开源的分布式计算框架,旨在处理大规模数据集和进行并行计算。核心包括两个组件:HFDS、MapReduce。 配置方案 各虚拟机的用户名分别为test0、test1、test2,主机名为hadoop100、hadoop101、hadoop102 虚拟机的分配如下: hadoop100:NameNode + ResourceManager hadoop101:DataNode + NodeM

    2024年03月23日
    浏览(28)
  • 【教程】Hadoop完全分布式环境搭建全过程

    保姆级入门教程:图片讲解 + 各种问题解决方案 集群服务器:hadoop102、hadoop103和hadoop104 虚拟机版本:CentOS7-1804 资源分享处(文章最后)提供CentOS7和Hadoop各组件压缩包(也可以自行下载,要注意版本兼容的问题),有需要自取~ 1, 模板虚拟机准备 2, 克隆三台虚拟机,作为

    2024年02月06日
    浏览(38)
  • Hadoop3.x完全分布式环境搭建Zookeeper和Hbase

    集群规划 IP地址 主机名 集群身份 192.168.138.100 hadoop00 主节点 192.168.138.101 hadoop01 从节点 192.168.138.102 hadoop02 从节点 Hadoop完全分布式环境搭建请移步传送门 先在主节点上进行安装和配置,随后分发到各个从节点上。 1.1 解压zookeeper并添加环境变量 1)解压zookeeper到/usr/local文件夹

    2024年02月04日
    浏览(31)
  • 头歌Hadoop 开发环境搭建及HDFS初体验(第2关:配置开发环境 - Hadoop安装与伪分布式集群搭建)

    注: 1 头歌《Hadoop 开发环境搭建及HDFS初体验》三关在一个实验环境下,需要三关从前往后按顺序评测,跳关或者实验环境结束后重新打开 不能单独评测通过 2 复制粘贴请用右键粘贴,CTRL+C/V不管用哦~ 第1关:配置开发环境 - JavaJDK的配置: 解压: 配置环境变量: 细节: vi

    2024年02月08日
    浏览(108)
  • hadoop完全分布式集群搭建(超详细)-大数据集群搭建

    本次搭建完全分布式集群用到的环境有: jdk1.8.0 hadoop-2.7.7 本次搭建集群所需环境也给大家准备了,下载链接地址:https://share.weiyun.com/dk7WgaVk 密码:553ubk 本次完全分布式集群搭建需要提前建立好三台虚拟机,我分别把它们的主机名命名为:master,slave1,slave2 一.配置免密登陆 首先

    2024年02月10日
    浏览(34)
  • 大数据内容分享(九):Hadoop-生产集群搭建(完全分布式)

    目录 Hadoop运行模式——完全分布式 1、准备3台虚拟机(关闭防火墙、配置静态IP 和 主机名称) 2、安装JDK 和 Hadoop 并配置JDK和Hadoop的环境变量 3、配置完全分布式集群 4、集群配置 1)集群部署规划 2)配置文件说明 3)配置集群 5、集群启动 与 测试 1)workers的配置 2)启动集

    2024年02月21日
    浏览(84)
  • 大数据开发·关于虚拟机Hadoop完全分布式集群搭建教程

    官网链接 进入后网站如图,各位按需下载 官网链接 进入页面点击下载 再根据我们需要下载的软件进入下载页面 点击右侧红框内的免费授权页面获取免费许可 进入后如图,两者我们都需要所以都勾选,填写的邮箱用于接收下载链接,下载后进行安装即可 这里先和大家强调一

    2024年02月07日
    浏览(38)
  • Hbase数据库完全分布式搭建以及java中操作Hbase

    基础的环境准备不在赘述,包括jdk安装,防火墙关闭,网络配置,环境变量的配置,各个节点之间进行免密等操作等。使用的版本2.0.5. 参考官方文档 分布式的部署,都是在单节点服务的基础配置好配置,直接分发到其他节点即可。 jdk路径的配置,以及不适用内部自带的zk. 配

    2024年02月03日
    浏览(35)
  • 部署HDFS集群(完全分布式模式、hadoop用户控制集群、hadoop-3.3.4+安装包)

    目录 前置 一、上传解压 (一 )上传 (二)解压 二、修改配置文件 (一)配置workers文件 (二)配置hadoop-env.sh文件 (三)配置core-site.xml文件 (四)配置hdfs-site.xml文件 三、分发到hp2、hp3, 并设置环境变量 (一)准备数据目录    (二)配置环境变量 四、创建数据目录,并

    2024年04月14日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包