手把手Hadoop伪分布集群搭建+hadoop完全分布式集群搭建

话不多说,安装完全分布式的血泪史太长了,这次直接给自己把安装过程全部弄正确记录下来。所谓完美的安装过程。

一. 创建模板机

创建新的虚拟机

二. 魔板机调试配置

2.1 测试是否可上网

ping

Ctrl+z 退出联网测试

在这里插入图片描述

2.2 安装工具

1.安装epel-release
yum install -y epel-release

2.安装net-tools工具:包含ifconfig工具
yum install -y net-tools

3.安装ntp
yum install -y ntp

在这里插入图片描述

配置免密登录

1.生成密钥

在这里插入图片描述

2.进入/root/.ssh,将公钥O导入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W7kRDEuS-1647959275631)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\1647763484119.png)]

2.3关闭防火墙 关闭防火墙开机自启动

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

在这里插入图片描述

2.4 创建atguigu用户,更改密码

1.创建atguigu用户
useradd atguigu

2.更改密码
passwd atguigu

3.添加atguigu  sudo具有root权限
vim /etc/sudoers

在%wheel  ALL=(ALL)       ALL下一行添加:
atguigu   ALL=(ALL)     NOPASSWD:ALL

:wq!强制保存

在这里插入图片描述

2.5 切换到atguigu用户,创建文件夹

1.切换到atguigu用户
su - atguigu

在这里插入图片描述

2.创建文件夹
sudo mkdir /opt/module //安装路径
sudo mkdir /opt/software //存放安装包
在这里插入图片描述
3.修改module、software文件夹的所有者和所属组均为atguigu用户
chown atguigu:atguigu /opt/module
chown atguigu:atguigu /opt/software
在这里插入图片描述

4.查看module、software文件夹的所有者和所属组
cd /opt/
ll
在这里插入图片描述

2.7 修改克隆机主机名

1.修改主机名称

vim /etc/hostname

在这里插入图片描述

  1. 配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts
vim /etc/hosts

添加
192.168.10.100 hadoop100

在这里插入图片描述

3.修改windows的主机映射文件(hosts文件)

C:\Windows\System32\drivers\etc中

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

在这里插入图片描述

2.8 root用户修改静态ip

1.vim /etc/sysconfig/network-scripts/ifcfg-ens33
在这里插入图片描述
2.添加

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"



IPADDR=192.168.10.100

PREFIX=24

GATEWAY=192.168.10.2

DNS1=192.168.10.2

在这里插入图片描述

3.查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8
在这里插入图片描述
在这里插入图片描述

  1. 查看Windows系统适配器VMware Network Adapter VMnet8的IP地址
    在这里插入图片描述
    在这里插入图片描述

4.保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。

5.重启

reboot

在这里插入图片描述

2.8 在魔板机安装jdk(atguigu用户)

在这里插入图片描述

1.解压jdk到/opt/module

tar -zxvf xxxxxxx -C /opt/module/

在这里插入图片描述

2.配置JDK环境变量

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

(2)添加
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

(3)让新的环境变量PATH生效
source /etc/profile

在这里插入图片描述

2.10 在魔板机安装hadoop

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

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

2.配置hadoop环境变量
在这里插入图片描述

3.使环境变量生效

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-byZYBoIf-1647959275642)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\1647763721577.png)]

伪分布搭建

在这里插入图片描述


建立hadoop工作目录/var/hadoop 

<configuration>

<tconfime>fs.defaultFS</name>

   <value>hdfs://hadoop100:9000</value>

</property>


 <property>

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

  <value>/opt/hadoopTmp/</value>

</property>

</configuration>

在这里插入图片描述

 vi etc/hadoop/hdfs-site.xml 

在这里插入图片描述

格式化hdfs命令:

hdfs namenode -format

成功

yarn配置

 vi  etc/hadoop/yarn-site.xml 
<configuration>
 <property>
    <name>yarn.resourcemanager.hostsname</name>
    <value>BigData01</value>
 </property>
 <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
 </property>
</configuration>
配置mapred-site.xml 

在这里插入图片描述

<configuration>
<property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
</property>
</configuration>
启动

在这里插入图片描述

hbase单机

<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost</value>
</property>

<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>

<property>
<name>hbase.unsafe.stream.capability.enforce</name>
#使用我们电脑的文件系统,作为数据存储。
<value>false</value>
</property>

<property>
<name>hbase.master.ipc.address</name>
<value>0.0.0.0</value>
</property>

<property>
<name>hbase.regionserver.ipc.address</name>
<value>0.0.0.0</value>
</property>
</configuration>

三. 完全分布式准备

3.1 克隆虚拟机

克隆出 3台虚拟机 Hadoop102  hadoop103  hadoop104

3.2 打开虚拟机

打开虚拟机,ifconfig命令查看ip,方面在连接工具上连接虚拟机。

3.3 更改主机名

Root用户,更改各个虚拟机主机名(如hadoop102)

在这里插入图片描述

3.4 配置静态ip

Root用户,配置各个虚拟机静态IP(如hadoop102)
3.4.1 编辑ifcf-ens33文件

在这里插入图片描述

3.4.2 配置信息
使用这个配置信息,更改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"



IPADDR=192.168.10.102

PREFIX=24

GATEWAY=192.168.10.2

DNS1=192.168.10.2


3.4.3 重启虚拟机
此时已经修改成自己想要的ip

在这里插入图片描述

3.5 配置每台主机映射hosts文件

在这里插入图片描述

重启:reboot

3.6 修改windows的主机映射文件(hosts文件)

进入C:\Windows\System32\drivers\etc路径找到hosts
1.修改windows的主机映射文件(hosts文件)
2.修改windows的主机映射文件(hosts文件)

在这里插入图片描述

四·完全分布式搭建

4.1 准备三台客户机

要求:关闭防火墙,已配置静态IP,主机名称完善

4.1.1 虚拟机准备

看第三章

4.1.2 编写集群分发脚本xsync

在这里插入图片描述

1.使用三种命令在主机之间传输文件
 (1)scp  
 (2)rsync
 (3)xsync
  
<1>scp
2.scp:可以实现服务器与服务器之间的数据拷贝,拷贝,拷贝!!
 (1)语法:
 scp  -r   $pdir/fname       $user@hosr:$pdir/fname
 命令 递归  文件路径/文件名称    目的地用户@主机:目的地路径/名称
 
 (2)使用前提:虚拟机器中有相同文件夹或者文件,并且权限归自定义用户所有

案例:在hadoop102上 把/opt/module/hadoop-2.7.3目录拷贝到hadoop103,hadoop104

在这里插入图片描述

出现连接错误,需要将对应的IP加到/etc/hosts中。

在这里插入图片描述

解决问题后成功:

在这里插入图片描述

<2>rsync同步工具
1.rsync:主要用于备份和镜像,速度快,可以变复制相同内容和支持符号链接的优点
2.rsync和scp区别:用rsync做文件的复制比scp复制所用时间短,rsync只对差异文件做复制,scp是复制所有文件。
3.基本语法:
 rsync  -av   $pdir/$fname    $user@host:$pdir/fname
 命令  选项参数 文件路径/文件名   目的地用户@主机:目的地路径/名称
 
4.参数说明:
  (1)-a      归档拷贝
  (2)-v      显示复制过程

案例:

(1)删除hadoop103中的/opt/module/hadoop-2.7.3/bin文件(只是实验,平时不能随便删除bin目录)

补充知识点:删除安装的tar包
rm -r 安装包路径/安装包名称
在这里插入图片描述
(2)同步hadoop102中的/opt/module/hadoop-2.7.3/bin文件到hadoop103
在这里插入图片描述

<3>xsync集群分发脚本
1.需求:循环复制文件到所有节点的相同目录下
2.rsync原始命令拷贝

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

1.期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)
在这里插入图片描述

2.在根目录创建bin文件夹
在这里插入图片描述

3.在/home/atguigu/bin 目录下创建xsync脚本

sudo vim xsync

在这里插入图片描述

!!!!!!注意粘贴一定要先按i,不然脚本可能没用!!!!!!



#!/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
                                                          

4.给脚本赋予权限

chmod 777 xsync

在这里插入图片描述

文件赋予权限之后变成绿色,可以使用脚本了

5.同步当前bin目录到hadoop103
在这里插入图片描述

6.当sudo xsync绝对路径 赋值文件,就可以赋值给root用户
在这里插入图片描述

4.2 配置ssh免密登录

在这里插入图片描述

主机之间互相登录不需要输入密码就可以登录

1.进入家目录 /home/atguigu
在这里插入图片描述

2.ls -all 查看所有隐藏文件
在这里插入图片描述

3.进入 .ssh文件,发现一个known_hosts文件
在这里插入图片描述

known_hosts文件中有访问数据,说明有主机访问过
在这里插入图片描述
4.现在配置hadoop102无密登录hadoop103

ssh-keygen -t rsa  (3次回车搞定)

在这里插入图片描述

此时在查看ssh中九多了一个公钥,一个私钥
在这里插入图片描述

私钥:在这里插入图片描述

公钥:在这里插入图片描述

5.拷贝hadoop102的公钥到hadoop03,hadoop104(第一次需要输入密码)
在这里插入图片描述

6.测试,成功登录
在这里插入图片描述

7.配置hadoop102无密登录hadoop104
在这里插入图片描述

此时再使用xsync不用再输入密码
在这里插入图片描述

4.3 单点启动

4.4 配置集群

4.4.1 集群配置原则

在这里插入图片描述

原则:
    (1)NameNode和SecondaryNode不要放在同一台机器上,因为都很耗费内存
    (2)
    
4.4.2 配置文件说明
hadoop配置文件有两类:
     默认配置文件:
     自定义配置文件:只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值

(1)默认配置文件:

要获取的默认文件文件存放在Hadoop的jar包中的位置
[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.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml
四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。
4.4.3 配置文件

1.core-site.xml
在这里插入图片描述


<configuration>
<!-- 指定NameNode的地址 -->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://hadoop102:8020</value>
</property>

<!-- 指定hadoop数据的存储目录 -->
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/module/hadoop-2.7.3/data</value>
</property>

<!-- 配置HDFS网页登录使用的静态用户为atguigu -->
<property>
  <name>hadoop.http.staticuser.user</name>
  <value>atguigu</value>
</property>
</configuration>

>[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8KOqiOfc-1647959275653)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\1647306182723.png)]
2.hdfs-site.xml
在这里插入图片描述

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

在这里插入图片描述

3.yarn-site.xml
在这里插入图片描述

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

在这里插入图片描述

4.mapred-site.xml
在这里插入图片描述

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

在这里插入图片描述

4.4.4 分发hadoop

1.把/opt/module/hadoop-2.7.3/etc/hadoop文件分发给hadoop103,hadoop104
在这里插入图片描述

成功:可以在hadoop103看到
在这里插入图片描述

4.5 群起并测试集群

4.5.1 配置slaves

1.配置slaves,默认是localhost
在这里插入图片描述

2.添加工作的节点(不允许有空格)
在这里插入图片描述

3.分发slaves

在这里插入图片描述

4.5.2 启动集群
1.初始化集群
注意:首次启动,需要在hadoop102格式化NameNode
---------------------------------------------------------
 (注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)
 ---------------------------------------------------

1.在hadoop102格式化NameNode

在这里插入图片描述

2.出现成功
在这里插入图片描述

3.ls -all 查看所有文件,包括隐藏文件 新出现data,logs
在这里插入图片描述在这里插入图片描述

解决办法(非必要):
在这里插入图片描述

2.正式启动集群

1.进入/opt/module/hadoop-2.7.3/sbin,里面有启动命令
在这里插入图片描述

2.输入hadoop102输入命令启动namenode
在这里插入图片描述

3.hadoop103输入命令启动resourcemanger

start-yarn.sh

4.jps查看各个主机进程
在这里插入图片描述

4.5.3 Web端查看HDFS的NameNode

(1) Web端查看HDFS的NameNode 浏览器中输入:

​ http://hadoop102:9870 查看HDFS上存储的数据信息
在这里插入图片描述

(2)Web端查看YARN的ResourceManager 浏览器中输入:

​ http://hadoop103:8088 查看YARN上运行的Job信息
在这里插入图片描述

4.6 配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器。

1.配置mapred-site.xml
在这里插入图片描述

2.分发配置
在这里插入图片描述

3.在hadoop102 启动历史服务器

mr-jobhistory-daemon.sh start historyserver

在这里插入图片描述

4.查看进程jps,是否启动成功

在这里插入图片描述

5.查看JobHistory
在这里插入图片描述

4.7 配置日志聚集

在这里插入图片描述

1.配置yarn-site.xml
在这里插入图片描述

<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>  
<name>yarn.log.server.url</name>  
<value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

2.分发配置
在这里插入图片描述

3.关闭NodeManager 、ResourceManager和HistoryServer
在这里插入图片描述

4.启动NodeManager 、ResourceManager和HistoryServer
在这里插入图片描述
5.查看日志:当有过作业就会有日志文件(这里还没有作业)

历史服务器地址
http://hadoop102:19888/jobhistory

在这里插入图片描述
在这里插入图片描述

4.8 集群启动停止方式总结

各个模块分开启动/停止(配置ssh是前提)常用
1.整体启动/停止HDFS
start-dfs.sh/stop-dfs.sh

2.整体启动/停止YARN
start-yarn.sh/stop-yarn.sh

3.整体启动/停止historyserver
mr-jobhistory-daemon.sh start/stop historyserver



各个服务组件逐一启动/停止
1.分别启动/停止HDFS组件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
2.启动/停止YARN
yarn --daemon start/stop  resourcemanager/nodemanager

4.9 hadoop集群常用脚本

4.9.1 hadoop启动、停止脚本

1.进入atguigu/bin,创建myhadoop.sh脚本
cd /home/atguigu/bin
vim myhadoop.sh

在这里插入图片描述

2.加入如下内容
#!/bin/bash

if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi

case $1 in
"start")
        echo " =================== 启动 hadoop集群 ==================="

        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-2.7.3/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-2.7.3/sbin/start-yarn.sh"
        echo " --------------- 启动 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-2.7.3/bin/mapred --daemon start historyserver"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="

        echo " --------------- 关闭 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-2.7.3/bin/mapred --daemon stop historyserver"
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-2.7.3/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-2.7.3/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
esac

在这里插入图片描述

3.赋予脚本权限
chmod +x myhadoop.sh

在这里插入图片描述

4.9.2 查看三台服务器进程脚本:jpsall
1.进入·/home/atguigu/bin,创建jpsall文件
cd /home/atguigu/bin
vim jpsall

在这里插入图片描述

2. 输入
#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
        echo =============== $host ===============
        ssh $host jps 
done

在这里插入图片描述

3.赋予脚本权限
chmod +x jpsall

在这里插入图片描述

4分发/home/atguigu/bin目录
xsync /home/atguigu/bin/

在这里插入图片描述

测试成功

在这里插入图片描述

4.10 集群时间同步

1.安装ntp插件

yum install ntp

在这里插入图片描述
2.进入/etc 看到出现文件夹ntp,ntp.conf文件

在这里插入图片描述
3.开始ntpd服务

syatemctl start ntpd

在这里插入图片描述
4.编辑 修改ntp.conf文件

vim /etc/ntp.conf

在这里插入图片描述在这里插入图片描述

5.编辑ntpd

vim  /etc/sysconfig/ntpd

在这里插入图片描述
6.开始时间服务

systemctl start ntpd
systemctl enable ntpd

在这里插入图片描述

  • 3
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值