Hadoop+微服务 环境搭建笔记

准备工作

  相关软件和资料

   链接:https://pan.baidu.com/s/1CPGqJSH2e6rnPvfXGYo8ow

  提取码:pe9c

 

目标:VMware(虚拟机)安装

双击开始安装

下一步

接受许可,下一步

 修改路径,下一步

 取消勾选,下一步

 下一步

 安装

 安装中....

 安装完成

 双击打开

 输入秘钥,点击“继续”,密钥找度娘一大把

 完成

 安装完毕

 

 

目标:Centos7.5软硬件安装

注意内容:

1、在安装系统之前需要检查自己虚拟机的bios的虚拟化是否打开(大部分的电脑都是打开的,大家可以先尝试直接安装,如果出现错误再去调试,没有出错就不用管了)

以下是查看虚拟机bios是否开启的方式

(1)Windows10

CPU,性能查看

(2)Windows7里面看不到(得到bios里面看)

(3)如果发现bios虚拟化没有开启怎么办,重启电脑,在加载界面时按f1-f10,或者电脑旁边一个小洞,具体怎么进入得去查一下(按照自己电脑的型号去查)

(4)修改虚拟化为开启(thinkpad为例)找到security里面的VT并改成enabled

创建新的虚拟机

 选择“自定义”,下一步

 下一步

 选择“稍后安装操作系统”,下一步

 选择客户机操作系统为“Linux”,版本为“CentOS 7 64位”,下一步

 修改虚拟机名称为“hadoop100”,修改安装位置,下一步

 修改处理器数量和每个处理器的内核数量,下一步

注意:处理器数量和每个处理器的内核数量的总和不能超过自己系统的CPU总数

 修改虚拟机内存,向下兼容一般设置为4G,下一步

 网络类型选择“使用网络地址转换(NAT)”,下一步

 I/0选择器类型选择推荐的即可,下一步

 磁盘类型选择默认推荐的

 选择“创建新虚拟磁盘”,下一步

 修改最大磁盘大小为“50G”,下一步

 修改磁盘文件路径到当前虚拟机目录下,方便统一管理。下一步

 点击“完成”

 这就是刚刚安装的虚拟机,名字是刚刚自己取的

 继续安装操作系统,步骤如下:

 点击“CD/DVD”选择插入一块硬盘

 选择“使用ISO映像文件”插入镜像文件,确定

 插入镜像文件之后,“开启此虚拟机”

 开启之后,进入页面直接Enter回车,正常安装

 等待安装中.....

.

 来到了欢迎页面

 选择“中文”,继续

 点击“日期和时间”设置时间

 选择“亚洲”,“上海”之后,设置好时间,点击“完成”

 完整日期时间设置后,点击“软件选择”

 选择“桌面”版安装,点击完成

注意:也可以选择“最小安装”,区别:最小系统没有图形化页面,全部命令行操作,本人学习阶段选择的是桌面版本

 接下来点击“安装位置”

 选择“我要配置分区”,然后“添加磁盘”,点击完成

 弹出以下页面,点击“+”,弹出页面选择挂载点和容量,并将文件系统设置为“ext4”

 这个过程中,我配置了三个挂载点,分别为

/boot 1g  、  swap  4g   、   /  45g

添加完毕,点击完成

 接受并更改

 点击“KDUMP”

 去掉勾选“kdump”,学习阶段崩溃不备份,并点击“完成”

 点击“网络和主机名”

 修改主机名为“hadoop100”,打开网络,点击完成

 点击“SECURITY POUCY”

 保持默认打开即可,点击完成

 所有准备完毕,开始安装

 等待安装中........

 安装过程中顺便配置一下ROOT密码

 设置密码为123456,点击完成

 经过十几分钟的等待,安装完毕,点击“重启”

 回车

 进入主页面,点击“LICENSIGN”

 勾选同意,点击完成

 点击“完成配置”

 直接“前进”

 前进

 前进

 允许访问

 输入“上海”,前进

 跳过

 设置账号,atguigu

 设置密码123456,前进

 至此,该虚拟机设置完毕

 

目标: ip和主机名称配置

1、配置VM的ip地址

VMware点击“编辑”,选择“虚拟网络编辑器”

 点击“VMnet8”,“更改设置”

 再次打开“虚拟网络编辑器”,点击“VMnet8”,选择NAT模式,修改子网掩码为:192.168.10.0,点击“NAT设置”

 修改NAT设置网关IP为:192.168.10.2,点击确定

点击确定

 2、修改win10的的ip地址

“控制面板”找到“网络和Internet”,找到“网络连接”,右键VMnet8,选择属性

双击“Internet协议版本4”

 

 修改ip地址和网关如下,点击确定保存

  注意:如果你的网络连接页面没有出现VMnet8,则打开VMware的“虚拟网络编辑”页面,点击“还原默认设置”按钮,操作完毕之后就会出现VMnet8

 3、修改主机ip

 回到VMware页面,输入密码登录

 右键“打开终端”,打开如下页面。显示当前用户是atguigu

 输入以下命令

#切换到root用户
su root

#输入密码
123456

#vim打开ifcfg-ens33文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33

 得到以下页面,按照截图所示操作

IPADDR=192.168.10.100
GATEWAY=192.168.10.2
DNS1=192.168.10.2

修改主机名称

#vim打开修改主机名称
vim /etc/hostname

进入后发现主机名称默认为hadoop100(创建虚拟机的时候设置的),不用修改,直接退出

 

 修改hosts主机文件,输入以下命令

vim /etc/hosts

 

 打开hosts文件之后,添加以下配置,并保存退出

192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108

 重启主机

#reboot命令:重启主机
reboot

重启之后以root账号重新登录虚拟机,并打开终端

 输入以下命令,验证ip地址,发现ip地址已更新

#输入命令验证ip地址
ifconfig

 ping一下百度,看是否能ping通

ping www.baidu.com

 查看主机名称

hostname

 

 

目标:Xshell远程访问工具

傻瓜式下一步安装xshell工具,这里不做介绍了

输入ip地址192.168.10.100连接,以atguigu账号连接入

 

下面我们的目的是将ip地址和主机名称关联起来:修改Windows的主机映射文件(host文件)

(1)如果操作系统是window7,可以直接修改

 (a)进入C:\Windows\System32\drivers\etc路径找到hosts文件

 打开hosts文件并添加如下内容,然后保存

192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108

(2)如果操作系统是window10,先拷贝出来,修改保存以后,再覆盖即可

a)进入C:\Windows\System32\drivers\etc路径

(b)拷贝hosts文件到桌面

c)打开桌面hosts文件并添加如下内容

192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108

(d)将桌面hosts文件覆盖C:\Windows\System32\drivers\etc路径hosts文件

修改完毕之后,重新连接xshell,这次输入名称和主机为hadoop100,仍然以atguigu账号登录

 接着傻瓜式安装xftp工具

 

目标:模板虚拟机准备完成

输入以下命令,切换到root账号

 切换目录,并且查看网络状态

输入以下命令,安装epel-release:是一个软件仓库

yum install -y epel-release

 发现有一个pid被占用,用kill命令杀掉进程

kill -9 3030

再次执行命令:yum install -y epel-release

 注意:如果Linux安装的是最小系统版,还需要安装如下工具;如果安装的是Linux桌面标准版,不需要执行如下操作

  • net-tool:工具包集合,包含ifconfig等命令
yum install -y net-tools
  • vim:编辑器
yum install -y vim

关闭防火墙,关闭防火墙开机自启

#关闭防火墙
systemctl stop firewalld

#关闭防火墙开机自启
systemctl disable firewalld.service

 注意:在企业开发时,通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安全的防火墙

配置atguigu用户具有root权限,方便后期加sudo执行root权限的命令

vim /etc/sudoers

修改/etc/sudoers文件,在%wheel这行下面添加一行,保存并退出,如下所示:

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
atguigu   ALL=(ALL)     NOPASSWD:ALL

 

 测试一下是否好用

#切换到/opt目录
cd /opt/

#查看目录内容
ll

#退出到aiguigu用户,因为我们是从atguigu用户切换进来的
exit

#再次切换到/opt目录
cd /opt/

#查看目录内容
ll

#删除掉rh文件(root权限),发现权限不足
rm -rf rh/

#sudo执行删除
sudo rm -rf rh/

#查看是否删除,发现已经删除了rh文件
ll

做准备工作

#在当前路径/opt创建module文件夹(软件安装目录),当前操作账号是atguigu
sudo mkdir module

#查看目录文件
ll

#创建software文件夹
sudo mkdir software

#查看目录文件,发现module、software文件夹的所有者和所属组均为root用户
ll

#修改module、software文件夹的所有者和所属组均为atguigu用户
#注意:需要切换到root账号操作 chown atguigu:atguigu
/opt/module chown atguigu:atguigu /opt/software #查看module、software文件夹的所有者和所属组 ll

 发现modulesoftware文件夹的所有者和所属组都已经变为atguigu了

卸载虚拟机自带的JDK

注意:如果你的虚拟机是最小化安装不需要执行这一步

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

rpm -qa:查询所安装的所有rpm软件包
grep -i:忽略大小写
xargs -n1:表示每次只传递一个参数
rpm -e –nodeps:强制卸载软件

 最后重启虚拟机

reboot

 

 

目标:克隆三台虚拟机

此次的目标是利用模板机hadoop100,克隆三台虚拟机:hadoop102   hadoop103   hadoop104

注意:克隆的时候,要先关闭hadoop100

右键hadoop100--->管理--->克隆

 

下一步

 

下一步

 选择“创建完整克隆”,点击下一步

 修改虚拟机名称,选择安装位置,点击完成

 克隆等待中

 一模一样的操作过程,克隆出103和104,并将虚拟机新建目录进行管理

 启动虚拟机hadoop102,root用户登录,并打开终端

 修改克隆虚拟机hadoop102的静态IP

vim /etc/sysconfig/network-scripts/ifcfg-ens33

 修改虚拟机hadoop102名称

vim /etc/hostname

查看hosts文件是否都已经修改了

vim /etc/hosts

发现之前都已经修改过了,不用修改

 重启机器

reboot

一模一样的流程修改hadoop103和hadoop104

(1)启动虚拟机hadoop103(4),root用户登录,并打开终端

(2)命令vim /etc/sysconfig/network-scripts/ifcfg-ens33打开,修改IPADDR=192.168.10.100为IPADDR=192.168.10.103(4)

(3)命令vim /etc/hostname虚拟机hadoop103(4)名称 

(4)重启虚拟机

xshell工具链接hadoop102、hadoop103、hadoop104

 

目标:JDK安装

注意:安装JDK之前,一定要确保提前删除了虚拟机自带的JDK

用XShell传输工具将JDK导入到opt目录下面的software文件夹下面

 切换到/opt/software目录,查看是否上传成功

 解压JDK到/opt/module目录下

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

解压完毕后切换目录到/opt/module/jdk1.8.0_212下

配置JDK环境变量

(1)新建/etc/profile.d/my_env.sh文件

sudo vim /etc/profile.d/my_env.sh

注意截图里面是已经切换到/etc/profile.d目录了

添加如下内容

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

 2)保存后退出

:wq

3source一下/etc/profile文件,让新的环境变量PATH生效

source /etc/profile

测试JDK是否安装成功

java -version

如果能看到以下结果,则代表Java安装成功。

java version "1.8.0_212"

注意:重启(如果java -version可以用就不用重启

 

 

目标:hadoop安装

XShell文件传输工具将hadoop-3.1.3.tar.gz导入到opt目录下面的software文件夹下面

 进入到hadoop安装包路径下

cd /opt/software/

解压安装文件到/opt/module下面

tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

查看是否解压成功

ls /opt/module/

将hadoop添加到环境变量

(1)打开/etc/profile.d/my_env.sh文件

sudo vim /etc/profile.d/my_env.sh

my_env.sh文件末尾添加如下内容:(shift+g

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

 保存并退出

(2)让修改后的文件生效

source /etc/profile

测试是否安装成功

hadoop version

重启(如果hadoop命令不能用再重启虚拟机)

 

 

目标:本地运行模式

 主机hadoop102切换目录到/opt/module/hadoop-3.1.3,在此下面新建一个wcinput文件夹

mkdir wcinput

在wcinput文件夹下创建一个word.txt文件

#进入创建的wcinput文件夹
cd wcinput/

#创建word.txt文件
vim word.text

编辑word.txt文件,在文件中输入如下内容,保存并退出

hadoop yarn
hadoop mapreduce
atguigu
atguigu

回到hadoop目录 /opt/module/hadoop-3.1.3

执行以下命令

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput

查看结果

cat wcoutput/part-r-0000
看到如下结果:

atguigu 2

hadoop  2

mapreduce       1

yarn    1

 

 

目标:完全分布式运行模式

1、scpsecure copy安全拷贝

1scp定义

scp可以实现服务器与服务器之间的数据拷贝。from server1 to server2

  2)基本语法

scp    -r        $pdir/$fname             $user@$host:$pdir/$fname

命令   递归     要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

3)案例实操

前提:hadoop102hadoop103hadoop104都已经创建好的/opt/module/opt/software两个目录,并且已经把这两个目录修改为atguigu:atguigu

sudo chown atguigu:atguigu -R /opt/module

 备注:由于我们在克隆主机之前就已经设置好了,所以这里不需要设置

  a在hadoop102上,hadoop102/opt/module/jdk1.8.0_212目录拷贝到hadoop103上。

scp -r /opt/module/jdk1.8.0_212  atguigu@hadoop103:/opt/module

首次连接需要密码,拷贝时间比较长

  (b在hadoop103上,hadoop102/opt/module/hadoop-3.1.3目录拷贝到hadoop103上。

scp -r atguigu@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/

  (c)在hadoop103上操作,将hadoop102/opt/module目录下所有目录拷贝到hadoop104上。

scp -r atguigu@hadoop102:/opt/module/* atguigu@hadoop104:/opt/module

2、rsync远程同步工具

  rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

  rsyncscp区别:rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

  (1)基本语法

    rsync    -av       $pdir/$fname             $user@$host:$pdir/$fname

    命令   选项参数   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

      选项参数说明

 

选项

功能

-a

归档拷贝

-v

显示复制过程

     (2)案例实操

    (a)删除hadoop103中/opt/module/hadoop-3.1.3/wcinput

cd /opt/module/hadoop-3.1.3
rm -rf wcinput/

发现主机hadoop103上的wcinput文件已经被删除了

    (b)同步hadoop102中的/opt/module/hadoop-3.1.3hadoop103

cd /opt/module
rsync -av hadoop-3.1.3/ atguigu@hadoop103:/opt/module/hadoop-3.1.3/

 

 并且hadoop102上的wcinput文件已经被同步到hadoop103

发现这次同步时间比上次快

 3、xsync集群分发脚本

  (1)需求:循环复制文件到所有节点的相同目录下

  (2需求分析:

    (arsync命令原始拷贝:

rsync  -av     /opt/module    atguigu@hadoop103:/opt/

    (b)期望脚本:

      xsync要同步的文件名称

举例子:

创建a.txt文件

 

 

 期望执行 xsync 同步文件名称 命令将a.tx同步到hadoop102和hadoop103上

    (c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

echo $PATH

   (3)脚本实现

a/home/atguigu/bin目录下创建xsync文件

cd

mkdir bin

ll

cd bin/

pwd

vim xsync

该文件中编写如代码

#!/bin/bash

#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
    echo ====================  $host  ====================
    #3. 遍历所有目录,挨个发送

    for file in $@
    do
        #4. 判断文件是否存在
        if [ -e $file ]
            then
                #5. 获取父目录
                pdir=$(cd -P $(dirname $file); pwd)

                #6. 获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done

 保存并退出

ll

 发现这个脚本没有可执行的权限

(b)修改脚本xsync具有执行权限

chmod +x xsync

 修改完毕,该脚本具有可执行权限了

(c)测试脚本

测试之前hadoop1003上没有bin目录

 

 在主机hadoop102上执行脚本

cd 

ll

xsync /home/atguigu/bin

 查看hadoop103和hadoop104上是否已经同步

 

 发现已经同步过去

(d)分发同步虚拟机hadoop102上的环境变量到hadoop103和hadoop104

xsync /etc/profile.d/my_env.sh

发现分发的时候权限被拒绝了,排查发现是找不到路径为绝对路径

修改命令如下:

cd

sudo ./bin/xsync /etc/profile.d/my_env.sh

 分别在hadoop103和hadoop104上查看环境变量是否同步

cd

vim /etc/profile.d/my_env.sh

发现同步完毕,最后记得分别重新加载一下环境变量

source /etc/profile

 

 

目标:ssh免密登录

1、配置ssh

  (1)基本语法

    ssh另一台电脑的IP地址

  2ssh连接时出现Host key verification failed的解决方法

ssh hadoop103

  Ø 如果出现如下内容

  Are you sure you want to continue connecting (yes/no)?

  Ø 输入yes,并回车

  (3退回到hadoop102

exit

2、无密钥配置

  (1免密登录原理 

 

  (2)生成公钥和私钥

虚拟机hadoop102执行

cd 

pwd

ls -al

cd .ssh/

ll

cd 

 期望目标:hadoop102可以无密登录hadoop103和hadoop104,语法如下

#生成公私钥
ssh-keygen -t rsa

#查看私钥
cat id_rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

  (3)将公钥拷贝到要免密登录的目标机器上

#将hadoop102的公钥拷贝到hadoop103
ssh-copy-id hadoop103

#测试是否可以ssh免密登录hadoop103
ssh hadoop103

#测试当前是否已登录到hadoop103
hostname

#退出
exit


#将hadoop102的公钥拷贝到hadoop104
ssh-copy-id hadoop104

#测试是否可以ssh免密登录hadoop104
ssh hadoop104

#测试当前是否已登录到hadoop104
hostname

#退出
exit

 测试hadoop102是否可以ssh免密登录自己,发现不能之后,说明自己也要配置ssh免密登录才行

#测试hadoop102是否可以ssh免密登录自己
ssh hadoop102

#将hadoop102的公钥拷贝到hadoop102
ssh-copy-id hadoop103

#测试是否可以ssh免密登录hadoop102
ssh hadoop102

#测试当前是否已登录到hadoop102
hostname

 注意

  还需要在hadoop103采用atguigu账号配置一下无密登录到hadoop102hadoop103hadoop104服务器上。

  还需要在hadoop104采用atguigu账号配置一下无密登录到hadoop102hadoop103hadoop104服务器上。

  还需要在hadoop102采用root账号,配置一下无密登录到hadoop102hadoop103hadoop104

此处相关操作与hadoop102一模一样,不再记录

 3、.ssh文件夹下~/.ssh的文件功能解释

known_hosts

记录ssh访问过计算机的公钥public key

id_rsa

生成的私钥

id_rsa.pub

生成的公钥

authorized_keys

存放授权过无密登录服务器公钥

 

 

目标:集群配置

1、集群部署规划

注意:

Ø NameNodeSecondaryNameNode不要安装在同一台服务器

Ø ResourceManager也很消耗内存,不要和NameNodeSecondaryNameNode配置在同一台机器上。

 

hadoop102

hadoop103

hadoop104

HDFS

 

NameNode

DataNode

 

DataNode

SecondaryNameNode

DataNode

YARN

 

NodeManager

ResourceManager

NodeManager

 

NodeManager

 2、配置文件说明

Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

1)默认配置文件:

获取的默认文件

文件Hadoopjar包中的位置

[core-default.xml]

hadoop-common-3.1.3.jar/core-default.xml

[hdfs-default.xml]

hadoop-hdfs-3.1.3.jar/hdfs-default.xml

[yarn-default.xml]

hadoop-yarn-common-3.1.3.jar/yarn-default.xml

[mapred-default.xml]

hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml

  (2)自定义配置文件:

  core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上用户可以根据项目需求重新进行修改配置。

 

 3、配置集群

  1核心配置文件

   配置core-site.xml

cd $HADOOP_HOME/etc/hadoop

vim core-site.xml

文件内容如下:

 保存退出

   2HDFS配置文件

   配置hdfs-site.xml

vim hdfs-site.xml

  文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- nn web端访问地址-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
    <!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>

  (3YARN配置文件

   配置yarn-site.xml

vim yarn-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>

    <!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

   4MapReduce配置文件

   配置mapred-site.xml

vim mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

 4、在集群上分发配置好的Hadoop配置文件

xsync /opt/module/hadoop-3.1.3/etc/hadoop/

5、去103和104上查看文件分发情况

cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml

 

 

目标:集起集群并测试

1、配置workers

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

该文件中增加如下内容(默认localhost删除掉):

hadoop102
hadoop103
hadoop104

 注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

同步所有节点配置文件

xsync /opt/module/hadoop-3.1.3/etc 

 2、启动集群

  1如果集群是第一次启动,需要在hadoop102节点格式化NameNode注意:格式化NameNode会产生新的集群id导致NameNodeDataNode的集群id不一致,集群不到已数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要停止namenodedatanode进程,并且要删除所有机器的datalogs目录,然后再进行格式化。

hdfs namenode -format

初始化完毕之后,发现多了data和log目录

   2)启动HDFS

sbin/start-dfs.sh

 启动之后,hadoop102、hadoop103、hadoop104

   (3)在配置了ResourceManager的节点(hadoop103启动YARN

sbin/start-yarn.sh

 注意:一定要在hadoop103上启动

启动之后,

hadoop102

hadoop103

hadoop104

   4Web端查看HDFS的NameNode

    (a)浏览器中输入http://hadoop102:9870

    (b)查看HDFS上存储的数据信息

  (5)Web端查看YARN的ResourceManager

    (a)浏览器中输入http://hadoop103:8088

    (b)查看YARN上运行的Job信息

3、集群基本测试

  (1)上传文件到集群

  • 上传小文件
cd

hadoop fs -mkdir /input

  • 上传大文件
hadoop fs -put  /opt/software/jdk-8u212-linux-x64.tar.gz  /

   (2)上传文件后查看文件存放在什么位置

  • 查看HDFS文件存储路径
cd /opt/module/hadoop-3.1.3/

ll

cd data/

ll

cd dfs/

ll

cd data/

ll

cd current/

ll

cd BP-1475925467-192.168.10.102-1634967224222/

ll

cd finalized/

ll

cd subdir0/

ll

 发现存储目录是

/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1475925467-192.168.10.102-1634967224222/current/finalized/subdir0/subdir0

  (3)拼接

cat blk_1073741826>>tmp.tar.gz

cat blk_1073741827>>tmp.tar.gz

ll

 解压完毕

 删除压缩文件和解压文件

 

 

目标:ZooKeeper 本地安装

本地模式安装

1、安装前准备

  (1)安装JDK

  (2) 拷贝apache-zookeeper-3.5.7-bin.tar.gz 安装包到 Linux 系统下

  (3)解压到指定目录

cd /opt/software/

ll

tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/

 

   (4)修改名称

#切换目录
cd /opt/module

#修改文件名称
mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7

 2、配置修改

  (1)将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg;

cd /opt/module/zookeeper-3.5.7/conf/

mv zoo_sample.cfg  zoo.cfg

ll

  (2)打开 zoo.cfg 文件,修改 dataDir 路径:

vim zoo.cfg
  修改如下内容:
dataDir=/opt/module/zookeeper-3.5.7/zkData

 保存退出

  (3)在cd /opt/module/zookeeper-3.5.7/这个目录上创建zkData文件夹

mkdir zkData

ll

3、操作Zookeeper

  (1)启动Zookeeper

bin/zkServer.sh start

   (2)查看进程是否启动

jps

  (3)查看状态

bin/zkServer.sh status

  (4)启动客户端

bin/zkCli.sh

  (5)退出客户端

quit

  (6)停止Zookeeper

#停止ZooKeeper
bin/zkServer.sh stop

#查看状态
bin/zkServer.sh status

 

 

 

目标:ZooKeeper 集群安装

 分布式安装部署

1、集群规划

  在hadoop102、hadoop103和hadoop104三个节点上部署Zookeeper

2、解压安装

  (1)解压Zookeeper安装包到/opt/module/目录下

tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/

  具体解压安装修改名称操作见本地安装模式,不再详细描述

  (2)同步/opt/module/zookeeper-3.5.7目录内容到hadoop103、hadoop104

xsync zookeeper-3.5.7/

 

3、配置服务器编号

  (1)在/opt/module/zookeeper-3.5.7/ 这个目录下创建zkData

mkdir -p zkData

  由于我在单机本地安装模式已经操作过,这里就不演示了

  (2)在/opt/module/zookeeper-3.5.7/zkData 目录下创建一个myid的文件,并编辑myid文件

  注意:添加myid文件,注意一定要在Linux里面创建,在notepad++里面很可能乱码

cd /opt/module/zookeeper-3.5.7/

ll

cd zkData/

vim myid

  在文件中添加与server对应的编号:

2

  (3)拷贝配置好的zookeeper到其他机器上

xsync myid

并分别在hadoop103、hadoop104上修改myid文件中内容为3、4

 

 

 4、配置zoo.cfg文件

(1)将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg;

cd /opt/module/zookeeper-3.5.7/conf/

mv zoo_sample.cfg  zoo.cfg

ll

  注意,hadoop102的文件名称在单机本地安装模式的时候已经修改了

  (2)打开 zoo.cfg 文件,修改 dataDir 路径:

vim zoo.cfg
  修改数据存储路径配置
dataDir=/opt/module/zookeeper-3.5.7/zkData

   增加如下配置

#######################cluster##########################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

 

  (3)同步zoo.cfg配置文件

xsync zoo.cfg

 

   (4)配置参数解读

server.A=B:C:D

A是一个数字,表示这个是第几号服务器;
    集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server

B是这个服务器的地址;

C是这个服务器Follower与集群中的Leader服务器交换信息的端口;

D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

 5、集群操作

  (1)分别启动ZooKeeper 

bin/zkServer.sh start

 

  同样的方式,启动hadoop003、hadoop004

   (2)查看状态

bin/zkServer.sh status

 

  注意:如果hadoop003和hadoop004上的ZooKeeper 没启动就会显示上面的状态,当我们把hadoop003和hadoop004分别启动之后,结果如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-10-23 15:56  沧海一粟hr  阅读(197)  评论(0编辑  收藏  举报