Apache-Hadoop3.3.3集群安装

1.Haoop集群安装前准备

1.1 安装虚拟机&操作系统

安装虚拟机及操作系统(CentOS 7),配置虚拟机网络环境。
参考:VMware 创建虚拟机&安装CentOS 7 Linux系统

1.2 克隆虚拟机

对安装完成操作系统的虚拟机进行克隆,克隆至3台虚拟机,主机名分别为node01/node02/node03。
参考:VMware克隆虚拟机

1.3 Hadoop资源下载

hadoop: https://hadoop.apache.org/#
hive: https://dlcdn.apache.org/hive/
hbase: https://hbase.apache.org/downloads.html
zookeeper: https://zookeeper.apache.org/releases.html
spark: https://spark.apache.org/downloads.html

*注意:hadoop及相关各组件使用需要考虑版本的兼容性,hadoop对应各组件兼容版本可查阅官方文档

1.4 配置主机映射及免密登录

① 配置主机映射

vim /etc/hosts

在这里插入图片描述

集群所有服务器都需配置主机映射。

② 配置免密登录
在所有虚拟机节点上使用 ssh-keygen 命令生成一对公钥和私钥, ssh-keygen -t rsa 回车敲击四下即可生成
在这里插入图片描述

查看一下生成的公钥和私钥

cd /root/.ssh/

在这里插入图片描述

在所有虚拟机上把公钥拷贝给其他机器,机器就是你需要远程免密登录的机器

ssh-copy-id node01
ssh-copy-id node02
ssh-copy-id node03

验证是否能够成功免密登录到其他机器

ssh node01
ssh node02
ssh node03

1.5 编写集群文件同步脚本

①rsync集群同步脚本参考:
rsync集群同步脚本①

②shell集群同步脚本参考:包括:集群分发文件脚本&批量执行命令脚本
shell集群同步脚本②

1.6 安装JDK8

①上传文件至/opt/package路径,解压JDK压缩包

tar -zxvf jdk-8u261-linux-x64.tar.gz -C …/soft/

②配置JDK环境变量

vim /etc/profile

export JAVA_HOME=/opt/soft/jdk1.8.0_261
export PATH=$PATH:$JAVA_HOME/bin

注意:执行source /etc/profile

③验证JDK是否安装成功

java -version

#显示java版本即安装成功
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

1.7 禁止Selinux

①使用批量执行命令脚本执行命令:

ssh_do_all.sh ~/bin/node.list “setenforce 0”

在这里插入图片描述

②修改配置文件,在配置文件中修改 参数 (所有机器)

vim /etc/selinux/config
SELINUX=disabled

在这里插入图片描述

③同步文件到其他节点

xsync /etc/selinux/config

在这里插入图片描述

1.8 关闭防火墙

①批量关闭节点的防火墙

ssh_do_all.sh ~/bin/node.list “systemctl stop firewalld”

②设置开机不启动防火墙

ssh_do_all.sh ~/bin/node.list “systemctl disable firewalld”

③查看防火墙状态

ssh_do_all.sh ~/bin/node.list “systemctl status firewalld”

1.9 配置时钟同步

① 所有节点卸载chrony

ssh_do_all.sh ~/bin/node.list “yum -y remove chrony”

② 所有节点下载安装ntp服务

sh ssh_do_all.sh ~/bin/node.list “yum -y install ntp”

③修改配置文件
在Master(node01)节点修改/etc/ntp.conf文件

vim /etc/ntp.conf
#添加一下内容
server 127.127.1.0 
fudge 127.127.1.0 stratum 10
#注释掉其他时间服务器和不用的参数

④从节点(node02/node03)添加master的地址

vim /etc/ntp.conf
server node01  #(该节点IP地址为CM的IP地址)

⑤启动ntp服务,查看同步状态

sh ssh_do_all.sh ~/bin/node.list “systemctl start ntpd”
sh ssh_do_all.sh ~/bin/node.list “systemctl enable ntpd”
sh ssh_do_all.sh ~/bin/node.list “systemctl status ntpd”
sh ssh_do_all.sh ~/bin/node.list “ntpq -p”

在这里插入图片描述
左边出现*号表示同步成功。

注意:可以使用下面可以强制同步时钟

ntpdate -u 主节点IP

2 Hadoop集群部署

2.1 Hadoop安装包目录结构

①安装目录为/opt/soft,解压安装包, 并传输给所有节点。

tar -zxvf hadoop-3.3.3.tar.gz -C /opt/soft

②安装包目录结构如下:
注意:安装文件的用户及属组修改为root
在这里插入图片描述

③hadoop目录解析:

bin:Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop。

etc:Hadoop配置文件所在的目录,包括core-site,xml、hdfs-site.xml、mapred-site.xml等从Hadoop1.0继承而来的配置文件和yarn-site.xml等Hadoop2.0新增的配置文件。

include:对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序。

lib:该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用。

libexec:各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动参数(比如JVM参数)等基本信息。

sbin:Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本。
share:Hadoop各个模块编译后的jar包所在的目录,官方自带示例。

2.2 配置Hadoop环境变量

①添加环境变量
vim /etc/profile

export HADOOP_HOME=/opt/soft/hadoop-3.3.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

②同步配置文件到其他节点

ssh_do_scp.sh ~/bin/node.list /etc/profile /etc

注意:每个节点执行source /etc/profile

ssh_do_all.sh ~/bin/node.list “source /etc/profile”

③验证是否成功

hadoop version

在这里插入图片描述

2.3 Hadoop集群规划

node01node02node03
HDFSNamNode DataNodeDataNodeSecondary NameNode DataNode
YARNNodeManagerResourceManager NodeManagerNodeManager

2.4 修改配置文件

①核心配置文件,进入配置文件目录

cd $HADOOP_HOME/etc/hadoop

②配置core-site.xml

vim core-site.xml

<configuration>
  <!-- 指定NameNode的地址 -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://node01:8020</value>
  </property>
  
  <!-- 指定hadoop数据的存储目录 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/soft/hadoop-3.3.3/data</value>
  </property>
  
  <!-- 配置HDFS网页登录使用的静态用户 -->
  <property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
  </property>
</configuration>

③配置hdfs-site.xml

vim hdfs-site.xml

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

④配置yarn-site.xml

vim 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>node02</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>

⑤配置mapred-site.xml

vim mapred-site.xml

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

⑥ 配置workers
在该文件中增加如下内容:

vim workers

node01
node02
node03

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

⑦配置JAVA环境变量

vim hadoop-env.sh

export JAVA_HOME=/opt/soft/jdk1.8.0_261

⑦ 所有节点都已有hadoop安装包,同步所有节点的配置文件

ssh_do_scp.sh ~/bin/node.list $HADOOP_HOME/etc/hadoop/ $HADOOP_HOME/etc/

2.5 服务启动权限配置

在安装包目录下的启动脚本添加服务启动权限配置,不然启动脚本会报错。
①在sbin/start-dfs.sh和sbin/stop-dfs.sh文件添加如下内容

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

② 在sbin/start-yarn.sh和sbin/stop-yarn.sh文件添加如下内容

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

③同步配置至其他节点

ssh_do_scp.sh ~/bin/node.list /opt/soft/hadoop-3.3.3/sbin/ /opt/soft/hadoop-3.3.3/

2.6 启动集群

集群&服务启动停止命令

HDFSYARN
集群启动start-dfs.shstart-yarn.sh
集群停止stop-dfs.shstop-yarn.sh
服务启动hdfs --daemon start namenode/datanode/secondarynamenodehdfs --daemon stop namenode/datanode/secondarynamenode
服务停止yarn --daemon start resourcemanager/nodemanageryarn --daemon stop resourcemanager/nodemanager

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

hdfs namenode -format

②在node01上启动HDFS

start-dfs.sh

在这里插入图片描述

③在node02上启动YARN

start-yarn.sh

在这里插入图片描述

④Web端查看HDFS的NameNode
(a)浏览器中输入:http://node01:9870
(b)查看HDFS上存储的数据信息
在这里插入图片描述

⑤Web端查看YARN的ResourceManager
(a)浏览器中输入:http://node02:8088
(b)查看YARN上运行的Job信息
在这里插入图片描述

注意:通过主机映射访问需要配置windows C:\Windows\System32\drivers\etc\hosts映射文件

2.7 集群基本测试

①上传文件到集群
Ø上传小文件

[root@node01 ~]# hadoop fs -mkdir /input
[root@node01 ~]# hadoop fs -put test.txt /input
[root@node01 ~]# hadoop fs -ls /input/
Found 1 items
-rw-r--r--   3 root supergroup          0 2022-06-01 21:22 /input/test.txt

Ø上传大文件

[root@node01 ~]# hadoop fs -put  /opt/soft/jdk1.8.0_261/  /input

[root@node01 ~]# hadoop fs -ls /input/
Found 2 items
drwxr-xr-x   - root supergroup          0 2022-06-01 21:24 /input/jdk1.8.0_261
-rw-r--r--   3 root supergroup          0 2022-06-01 21:22 /input/test.txt

②查看HDFS文件存储路径、磁盘存储文件内容

[root@node01 subdir4]# cat blk_1073742908
test hadoop input file

[root@node01 subdir4]# pwd
/opt/soft/hadoop-3.3.3/data/dfs/data/current/BP-158062577-192.168.31.101-1654087916304/current/finalized/subdir0/subdir4

③ 下载文件

[root@node01 ~]# hadoop fs -get /input/test.txt ./

[root@node01 ~]# ll
total 902524
-rw-r--r--  1 root root        23 Jun  1 21:31 test.txt

④删除文件

[root@node01 ~]# hadoop fs -rm /input/test.txt
Deleted /input/test.txt

[root@node01 ~]# hadoop fs -ls /input/
[root@node01 ~]#

⑤执行wordcount程序

hadoop jar /opt/soft/hadoop-3.3.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount /input /output

2.8 配置JobHistory历史服务

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:
① 配置mapred-site.xml, 添加下列参数

vim mapred-site.xml (目录:$HADOOP_HOME/etc/hadoop/)

 <!-- 历史服务器端地址 -->
 <property>
     <name>mapreduce.jobhistory.address</name>
     <value>node01:10020</value>
 </property>

 <!-- 历史服务器web端地址 -->
 <property>
     <name>mapreduce.jobhistory.webapp.address</name>
     <value>node01:19888</value>
 </property>

② 分发配置

ssh_do_scp.sh ~/bin/node.list $HADOOP_HOME/etc/hadoop/mapred-site.xml $HADOOP_HOME/etc/hadoop/

(3) 在node01启动历史服务器

[root@node01 ~]# mapred --daemon start historyserver
[root@node01 ~]# jps
5124 NameNode
11620 JobHistoryServer
5301 DataNode
11642 Jps
5627 NodeManager

(5) 查看JobHistory
http://node01:19888/jobhistory
在这里插入图片描述

2.9 配置Yarn日志的聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryServer。

开启日志聚集功能具体步骤如下:
① 配置yarn-site.xml,在该文件里面增加如下配置。

vim yarn-site.xml

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

② 分发配置

ssh_do_scp.sh ~/bin/node.list $HADOOP_HOME/etc/hadoop/yarn-site.xml $HADOOP_HOME/etc/hadoop/

③ 关闭NodeManager 、ResourceManager和HistoryServer

mapred --daemon stop historyserver

stop-yarn.sh

④ 启动NodeManager 、ResourceManage和HistoryServer

start-yarn.sh

mapred --daemon start historyserver

⑤ 删除HDFS上已经存在的输出文件

hadoop fs -rm -r /output

⑥ 执行WordCount程序

hadoop jar /opt/soft/hadoop-3.3.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount /input /output

⑦查看日志
(1)历史服务器地址
http://node01:19888/jobhistory
(2)历史任务列表
在这里插入图片描述

(3)查看任务运行日志
在这里插入图片描述

(4)运行日志详情
在这里插入图片描述

3 编写集群常用脚本

3.1 Hadoop集群启停脚本

①启停脚本包含HDFS,Yarn,Historyserver

cd ~/bin/
vim myhadoop.sh

#!/bin/bash

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

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

        echo "-----------------启动hdfs----------------"
        ssh node01 "/opt/soft/hadoop-3.3.3/sbin/start-dfs.sh"
        echo "-----------------启动yarn----------------"
        ssh node02 "/opt/soft/hadoop-3.3.3/sbin/start-yarn.sh"
        echo "-----------------启动historyserver----------------"
        ssh node01 "/opt/soft/hadoop-3.3.3/bin/mapred --daemon start historyserver"
;;
"stop")
        echo "=================关闭Hadoop集群==============="

        echo "-----------------关闭historyserver----------------"
        ssh node01 "/opt/soft/hadoop-3.3.3/bin/mapred --daemon stop historyserver"
        echo "-----------------关闭yarn----------------"
        ssh node02 "/opt/soft/hadoop-3.3.3/sbin/stop-yarn.sh"
        echo "-----------------关闭hdfs----------------"
        ssh node01 "/opt/soft/hadoop-3.3.3/sbin/stop-dfs.sh"
;;
*)
        echo "Input Args Error.."
;;
esac

②赋予脚本执行权限

chmod 755 myhadoop.sh

3.2 查看集群java进程脚本

①查看三台服务器Java进程脚本:jpsall

cd ~/bin/
vim jpsall

#!/bin/bash
for host in node01 node02 node03
do
   echo =============== $host ===============
   export JAVA_HOME=/opt/soft/jdk1.8.0_261
   ssh $host jps 
done

②赋予脚本执行权限

chmod 755 jpsall

③ 异常问题:
bash: jps: command not found
解决方法:bash: jps: command not found

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值