文章目录

  • 前言
  • 1. Hadoop 集群搭建模式
  • 2. 伪分布式集群搭建环境准备
    • 2.1 SSH免密登录设置
    • 2.2 Java 环境准备
    • 2.3 Hadoop环境准备
    • 2.4 其他环境准备
  • 3. Hadoop初始配置
    • 3.1 创建Hadoop用户
    • 3.2 创建目录
    • 3.3 认识Hadoop相关配置文件
      • 3.3.1 配置文件的优先级
      • 3.3.2 配置Hadoop守护进程环境变量
      • 3.3.3 配置Hadoop核心属性(core-site.xml)
      • 3.3.4 配置Mapreduce(mapred-site.xml)
      • 3.3.5 配置Yarn(yarn-site.xml)
      • 3.3.6 配置HDFS(hdfs-site.xml)
  • 4. 操作集群
    • 4.1 格式化集群
    • 4.2 启动HDFS与YARN集群
    • 4.3 关闭HDFS与YARN集群
  • 5. 伪分布式集群虚拟机环境
  • 总结

前言

为了保证应用高可用性,一般我们都会搭建一个应用的集群环境,这样即使其中一个应用出现故障,集群中的其他应用仍可继续对外提供访问。本章将介绍如何安装和配置一个伪分布式集群。

以下是本章主要内容:

  • hadoop环境准备
  • 搭建一个简单的伪分布式Hadoop集群
  • 操作hadoop集群
  • 使用hadoop运行测试程序

1. Hadoop 集群搭建模式

官方给我们提供了三种安装Hadoop集群的方式如下图所示:

  • 单机模式(Standalone )

hadoop默认情况是以非分布式单机方式运行的,所有的Hadoop服务都是运行在一个JVM虚拟机上,这种模式下Hadoop采用操作系统本地文件而不是HDFS(Hadoop File System)进行数据的存储。此种模式适合开发人员进行代码测试工作。

  • 伪分布式(Pseudo-Distributed )

此模式可以模拟真实的多节点集群,可以让Hadoop守护进程(DataNode、NameNode和ResourceManager)运行在单一服务器上,但这也意味着这种单节点的Hadoop集群无法保证高可用性与数据的安全性,生产环境不推荐使用。

  • 全分布式(Fully-Distributed)

Hadoop守护进程(DataNode、NameNode和ResourceManager)在不同的机器上运行着,这种模式可以保证Hadoop集群的高可用性、数据安全性。常应用在生产环境中。

2. 伪分布式集群搭建环境准备

在实际安装集群前,必须满足如下要求,才能够成功在Linux环境下安装软件。

2.1 SSH免密登录设置

Hadoop应用提供了很多脚本用来管理和维护Hadoop守护进程,这其中就用了SSH登录相关命令,所以这里需要配置一个免密登录localhost的配置,具体步骤如下:

  • 生成SSH密钥
## 生成密钥命令:ssh-keygen -t rsa
[root@hadoop104 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:81ORH1ajaBDTFlQPo+yWLWTVXzeVe9QWooqqYbSbRr4 root@hadoop104
The key's randomart image is:
+---[RSA 2048]----+
|         ++oo*.oB|
|          +o=.*=B|
|          .Oo.o+*|
|        . * o+ oo|
|   .   .S. =... .|
|  ... .  o...    |
|  o+ .    o      |
|  .o=      .     |
|  .E.            |
+----[SHA256]-----+
  • 拷贝公钥
## 将公钥拷贝到~/.ssh/authorized_keys 下
[root@hadoop104 ~]# ssh-copy-id root@localhost
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:YjPIJdatopqmPsZtdK/5JyTSgahk7tdP+QIuLbuw81U.
ECDSA key fingerprint is MD5:02:6f:99:e3:62:3b:e1:28:d8:05:34:70:dc:d3:99:89.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@localhost's password:
## 输入用户名与密码
Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'root@localhost'"
and check to make sure that only the key(s) you wanted were added.
  • 使用ssh免密登录本地
## 免密登录
[root@hadoop104 ~]# ssh root@localhost
Last login: Wed Sep 28 12:08:58 2022 from 192.168.10.1
## 退出当前连接
[root@hadoop104 ~]# exit
logout
Connection to localhost closed.
[root@hadoop104 ~]#

2.2 Java 环境准备

hadoop 3.x版本目前要求最低的JDK版本为1.8版本,所以这里我们在服务器配置一下JDK环境即可:

这里可以直接访 oracle 官网 直接下载JDK8,也可以使用我提供的百度云网址如下:

链接:https://pan.baidu.com/s/10e19hoiDjW61rHrhh-KtBQ?pwd=zyk5
提取码:zyk5

然后将JDK安装包上传到Linux服务器上,解压并配置Java环境变量。具体操作步骤如下:

  • 创建目录
# 1. 创建安装包保存路径与解压安装包路径
[root@hadoop104 ~]# mkdir -p /soft/{service,packages}
  • 上传安装包
    - 解压安装包
# 解压到指定目录
[root@hadoop104 packages]# tar -zxvf jdk-8u341-linux-x64.tar.gz -C /soft/service/
  • 配置环境变量
[root@hadoop104 ~]# vim /etc/profile.d/java.sh

编辑环境脚本内容如下:

## 刷新环境变量
[root@hadoop104 ~]# source /etc/profile
## 验证JDK环境
[root@hadoop104 ~]# java -version
java version "1.8.0_341"
Java(TM) SE Runtime Environment (build 1.8.0_341-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)
[root@hadoop104 ~]#

2.3 Hadoop环境准备

## 设置Hadoop环境变量
[hdfs@hadoop104 hadoop]$ vim /etc/profile.d/hadoop.sh

2.4 其他环境准备

  • 安装epel-release
yum install -y epel-release
  • 安装vim
yum install -y vim*
  • 安装 net-tools
yum install -y net-tools
  • 同步时间
yum install -y ntpdate
ntpdate ntp4.aliyun.com
  • 停用防火墙
systemctl stop firewalld
## 查看防火墙状态
firewall-cmd --state

3. Hadoop初始配置

首先我们需要从官网上下载Hadoop安装包,这里选用3.1.4版本进行安装。

cd /softwget https://archive.apache.org/dist/hadoop/common/hadoop-3.1.4/hadoop-3.1.4.tar.gz

解压安装包:

## 将hadoop3.1.4安装包解压到/soft/service 目录下
[root@hadoop104 packages]# tar -zxvf hadoop-3.1.4.tar.gz -C /soft/service/

配置Hadoop环境变量:

export HADOOP_HOME=/soft/service/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

验证hadoop是否安装成功:

## 查看hadoop安装版本
[root@hadoop104 hadoop-3.1.4]# hadoop version

输出如下结果则Hadoop安装成功

3.1 创建Hadoop用户

hadoop每个关键的守护进程都需要造单独的用户下运行,所以这里创建三个用户用来对应不同的hadoop守护进程:

用户 说明
yarn 用来管理ResourceManager服务
mapred 用来管理MapReduce服务
hdfs 用来管理HDFS文件系统
## 创建hadoop组
[root@hadoop104 packages]# groupadd hadoop
## 创建yarn用户
[root@hadoop104 packages]# useradd -g hadoop yarn
## 创建hdfs用户
[root@hadoop104 packages]# useradd -g hadoop hdfs
## 创建mapred用户
[root@hadoop104 packages]# useradd -g hadoop mapred

3.2 创建目录

在Hadoop中我们需要明确 NameNodeSecondaryNameNodeDataNode 的数据目录以及日志目录,下面创建以下目录

  • 创建NameNode数据目录
mkdir -p /soft/data/hadoop/hdfs/nn
  • 创建SecondaryNameNode数据目录
mkdir -p /soft/data/hadoop/hdfs/snn
  • 创建DataNode数据目录
 mkdir -p /soft/data/hadoop/hdfs/dn
  • 授权目录给hdfs用户
chown -R  hdfs:hadoop /soft/data/hadoop/
  • 创建yarn用户日志目录
 mkdir -p /soft/log/hadoop/logs
  • 授权目录给yarn用户
chown -R  yarn:hadoop /soft/log/hadoop/

3.3 认识Hadoop相关配置文件

Hadoop使用了多个配置文件,且每一个都会影响集群操作的不同方面,如HDFS操作、Yarn操作、MapReduce操作,每一个操作都有与之对应的配置文件,这些配置文件基本上都是XML格式的,Hadoop的配置文件有很多参数,如果没有自定义配置参数的值,大部分都会使用默认值,总的来说Hadoop中一共有以下类型的配置文件:

  • 环境变量文件

    Hadoop为启动和停止Hadoop应用提供了以上三个环境变量脚本,其中 hadoop-env.sh用来设置hadoop运行环境相关的配置mapred-env.sh用来指定mapReduce操作环境相关配置、yarn-env.sh是用来指定yarn使用的环境变量的值。

  • 默认配置文件

    默认配置文件如上,顾名思义当我们没有在自定义配置文件中配置参数对应的值,则默认以xx.default.xml配置的值为准,否则以自定义xx.site的值为准,下面介绍每个配置文件的作用:

    • core-default.xml:hadoop核心配置文件,可以在core-site.xml中设置变量来覆盖此文件的默认配置值。
    • hdfs-default.xml :HDFS相关服务的默认配置文件,可以设置hdfs-site.xml覆盖此文件中的默认配置值。
    • yarn-default.xml:YARN默认配置文件,可以设置yarn-site.xml覆盖此文件中默认配置值。
    • mapred-default.xml:MapReduce默认配置文件,可以设置mapred-site.xml覆盖此文件中默认配置值。
  • site专用配置文件

    site自定义配置文件是我们在实际中需要经常打交道的配置文件,此类型文件设置的值会默认覆盖xx-default.xml中配置的默认值。

3.3.1 配置文件的优先级

主节点上的 hdfs-site.xmlyarn-site.xmlhdfs-default.xmlyarn-default.xml 并不是唯一可以配置HDFSYARN的方法,假设已经在hdfs-site.xml文件中将:dfs.replication参数设置值为3,即设置文件副本个数为6。如果在客户端的代码中配置了此参数的值为6。实际上文件上传后文件副本个数为3,在Hadoop中配置文件参数的优先级从大到小如下:

如果有时候并不希望客户端修改配置的参数值,即让上图中优先级为4服务器自定义配置文件参数值优先级最高,例如我们设置文件副本个数为3,客户端不可修改。只需要在hdfs-site.xml中这样配置:

  <property><name>fs.replication</name><value>3</value><final>true</final></property>

如果在生产开发中,遇到了有些参数客户端不可修改的需求时,这个时候就可以将参数标记为final即可。

3.3.2 配置Hadoop守护进程环境变量

hadoop中默认为我们设置了 hadoop-env.shmapred-env.shyarn-env.sh,可以使用如下参数配置每个hadoop守护程序:

参数 说明
YARN_RESOURCEMANAGER_OPS 设置ResourceManager JVM变量值
YARN_NODEMANAGER_OPS 设置NodeManagerJVM变量值
HADOOP_NAMENODE_OPS 设置NameNode JVM变量值
HADOOP_DATANODE_OPS 设置DataNode JVM变量值
HADOOP_SECONDARYNAMENODE_OPS 设置SecondaryNameNodeJVM变量值
例如设置上述每一个守护进程最大堆内存大小为2g:

YARN_RESOURCEMANAGER_OPS = Xmx2g
YARN_NODEMANAGER_OPS = Xm2g
HADOOP_NAMENODE_OPS = Xmx2g
HADOOP_DATANODE_OPS = Xmx2g
HADOOP_SECONDARYNAMENODE_OPS = Xmx2

3.3.3 配置Hadoop核心属性(core-site.xml)

  • fs.defaultFS

设置文件系统的名称以及NameNode所在主机和端口信息:

<property><name>fs.defaultFS</name><value>hdfs://hadoop104:8020</value>
</property>
  • hadoop.http.staticuser.user

设置操作hdfs为用户为hdfs:

<property><name>hadoop.http.staticuser.user</name><value>hdfs</value>
</property>
  • hadoop.tmp.dir

设置hadoop本地数据存储目录:

<property><name>hadoop.tmp.dir</name><value>/soft/data/hadoop/tmpDir</value>
</property>
  • fs.trash.interval

设置Hadoop文件存储在垃圾箱中的时间,默认值为0,即永久删除被删除的所有文件库,这里我们默认设置1440分钟(1天)

<property><name>fs.trash.interval</name><value>1440</value>
</property>

3.3.4 配置Mapreduce(mapred-site.xml)

  • mapreduce.framework.name

设置hadoop使用YARN作为执行MapReduce的框架。

  <property><name>mapreduce.framework.name</name><value>yarn</value></property>
  • yarn.app.mapreduce.am.env

指定mapruce APP MASTER 环境变量

  <property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property>
  • mapreduce.map.env

指定mapreduce Reuce Task 环境变量

  <property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property>
  • mapreduce.reduce.env

指定mapreduce Reuce Task 环境变量

  <property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property>

3.3.5 配置Yarn(yarn-site.xml)

  • yarn.nodemanager.aux-services

此属性可以让NodeManager指定MapReduce容器从map任务到reduce任务所需要执行的shuffle操作,只有设置了这个值才可以运行MapReduce任务。

  <property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
  • yarn.nodemanager.aux-services.mapreduce_shuffle.class

设置YARN使用这个设置值对应的类执行shuffle操作

  <property><name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property>
  • yarn.nodemanager.resource.memory-mb

设置YARN在每一个节点消耗的总内存值单位MB

   <property><name>yarn.nodemanager.resource.memory-mb</name><value>2048</value></property>
  • yarn.scheduler.minimum-allocation-mb

设置每一个启动的容器节点最小内存单位MB

   <property><name>yarn.scheduler.minimum-allocation-mb</name><value>512</value></property>
  • yarn.scheduler.maximum-allocation-mb

设置每一个启动容器最大的内存单位MB

  <property><name>yarn.scheduler.maximum-allocation-mb</name><value>1024</value></property>
  • yarn.nodemanager.vmem-pmem-ratio

设置容器虚拟内存与真实物理内存直接比率

 <property><name>yarn.nodemanager.vmem-pmem-ratio</name><value>2</value></property>

3.3.6 配置HDFS(hdfs-site.xml)

  • dfs.namenode.secondary.http-address

设置SecondaryNameNode运行主机和端口

  <property><name>dfs.namenode.secondary.http-address</name><value>hadoop104:9868</value></property>
  • dfs.replication

此参数配置默认的文件块数量为3,但我们这里搭建伪分布式所以需要设置为1

  <property><name>dfs.replication</name><value>1</value></property>
  • dfs.datanode.data.dir

设置DataNode数据快本地存储目录

   <property><name>dfs.datanode.data.dir</name><value>file:/soft/data/hadoop/hdfs/dn</value></property>
  • dfs.namenode.name.dir

设置NameNode核心文件如fsimage如edit日志文件存储位置,只有NameNode服务可以读取和写入这些文件。

  <property><name>dfs.namenode.name.dir</name><value>file:/soft/data/hadoop/hdfs/nn</value></property>
  • dfs.namenode.checkpoint.dir

指定SecondaryNameNode存储元数据文件位置

  <property><name>dfs.namenode.checkpoint.dir</name><value>file:/soft/data/hadoop/hdfs/snn</value></property>

4. 操作集群

上面的配置文件配置好了,接下来就是来启动集群了,不过在正常启动集群前还需要进一步操作

4.1 格式化集群

使用hdfs用户执行NameNode格式化,需要注意的是NameNode的格式化只需要做一次就够了。

[hdfs@hadoop104 hadoop]$ hdfs namenode -format

执行完后如果有下图 successfully format 字样,则表明格式化成功
可以看到在 /soft/data/hadoop/hdfs/nn 目录下已经有格式化好的current文件夹如下所示:

4.2 启动HDFS与YARN集群

  • 启动NameNode
 hdfs --daemon start namenode
  • 启动DataNode
hdfs --daemon start secondarynamenode
  • 启动SecondaryNameNode
hdfs --daemon start secondarynamenode
  • 启动ResourceManager
yarn --daemon start resourcemanager
  • 启动NodeManager
 yarn --daemon start nodemanager

查看进程:

访问HDFS管理端地址:http://192.168.10.128:9870/管理端首页如下:

访问 Yarn管理端地址:http://192.168.10.128:8088/cluster

4.3 关闭HDFS与YARN集群

  • 启动NameNode
 hdfs --daemon stop namenode
  • 启动DataNode
hdfs --daemon stop secondarynamenode
  • 启动SecondaryNameNode
hdfs --daemon stop secondarynamenode
  • 启动ResourceManager
yarn --daemon stop resourcemanager
  • 启动NodeManager
 yarn --daemon stop nodemanager

5. 伪分布式集群虚拟机环境

链接:https://pan.baidu.com/s/1MdUQp96yiR9EnFknhGekKQ?pwd=id4n
提取码:id4n

总结

本文中我们使用一台机器完成了Hadoop的伪分布式集群部署,在实际的生成活动中,此种模式只能用于开发人员进行测试使用,下一章将介绍如何搭建一个Hadoop的完全分布式集群,敬请期待。

创建并配置一个伪分布式Hadoop3.x版本集群(三)相关推荐

  1. linux中jdk环境配置,安装MySQL,配置Hadoop伪分布式,配置hive环境

    1.修改虚拟机名称 vi /etc/hostname 进入命令模式输入[:wq]保存退出 2.修改虚拟机映射 vi /etc/hosts 输入端口号+虚拟机名称,保存退出[:wq] 3.重启虚拟机 r ...

  2. hadoop历史背景hdfs分布式文件系统hadoop的集群模式单机模式伪分布

    hadoop历史背景&hdfs分布式文件系统&hadoop的集群模式&单机模式&伪分布 1.hadoop的历史背景 lucense ---->nutch----& ...

  3. 如何创建一个用户、授权操作k8s集群的过程?

    本篇带给大家如何创建一个用户.授权操作k8s集群的过程.希望对你有所帮助! 背景 172.16.99.128是的我k8s集群的master节点,此处是从这里获取集群的证书. 创建访问architech ...

  4. 大数据之-Hadoop完全分布式_完全分布式模式下的集群配置---大数据之hadoop工作笔记0034

    然后前面我们准备好了,完全分布式下用的集群环境,下面我们,开始配置hadoop集群 我们这里用hadoop102,hadoop103,hadoop104 这3台机器. 需要hadoop102,103, ...

  5. Zookeeper命令操作(初始Zookeeper、JavaAPI操作、分布式锁实现、模拟12306售票分布式锁、Zookeeper集群搭建、选举投票)

    Zookeeper命令操作(初始Zookeeper.JavaAPI操作.分布式锁实现.模拟12306售票分布式锁.Zookeeper集群搭建.选举投票) 1.初始Zookeeper Zookeeper ...

  6. 如何从0到1构建一个稳定、高性能的Redis集群?(附16张图解)

    阅读本文大约需要 13 分钟. 大家好,我是 Kaito. 这篇文章我想和你聊一聊 Redis 的架构演化之路. 现如今 Redis 变得越来越流行,几乎在很多项目中都要被用到,不知道你在使用 Red ...

  7. 搭建高吞吐量 Kafka 分布式发布订阅消息 集群

    搭建高吞吐量 Kafka 分布式发布订阅消息 集群 简介 Kafka 是一种高吞吐的分布式发布订阅消息系统,能够替代传统的消息队列用于解耦合数据处理,缓存未处理消息等,同时具有更高的吞吐率,支持分区. ...

  8. 16 张图教你如何从 0 到 1 构建一个稳定、高性能的 Redis 集群!

    作者 | Magic Kaito   责编 | 张文 来源 | 水滴与银弹(ID:waterdrop_bullet) 这篇文章我想和你聊一聊 Redis 的架构演化之路. 现如今 Redis 变得越来 ...

  9. Ubuntu18.04 安装搭建 hadoop-3.3.0 集群

    Ubuntu18.04 安装搭建 hadoop-3.3.0 集群 参考博文:https://blog.csdn.net/sunxiaoju/article/details/85222290?ops_r ...

最新文章

  1. php扩展xdebug安装以及用kcachegrind系统分析
  2. JAVA四圣降临,和平精英四圣降临模式攻略
  3. 快速乘法(防止数过大相乘超出long long)
  4. springboot最佳实践-SpringBoot应用如何编写
  5. input发送a.jax_JAX-RS 2.0的新功能– @BeanParam批注
  6. PagerAdapter学习
  7. java私塾 java篇_Java私塾跟我学系列——JAVA篇 五、
  8. python设计模式21-策略模式
  9. 简易售货机JAVA sql_自动售货机 - 笨拙的小Q的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. Python实现批量图片添加数字水印
  11. 接口测试-接口定义功能-前端-实现动态增删表单
  12. 拓端tecdat|R语言混合时间模型预测对时间序列进行点估计
  13. 如何用英文向论文作者索要源代码--邮件模板
  14. 如何使用C4D的反射通道创建一个金属外观?
  15. 亚马逊AWS免费云服务实战
  16. 学习方法之——费曼技巧学习
  17. 华硕路由器官方固件开机自动运行脚本方法
  18. ros编译文件出现Invoking “make -j20 -l20“ failed
  19. 如何获取浏览器的user-agent
  20. 笔记本英雄联盟界面服务器停止运行,关于LOL选完大区(主界面)后马上闪退的正确解决方法...

热门文章

  1. 什么是虚拟主机?虚拟主机是什么意思
  2. Java转Go语言 -4
  3. Java多态性:Java什么是多态?
  4. 深圳奥特迅现金流量——RESSET数据库
  5. 查看linux系统CPU和内存命令
  6. 无外接屏幕使用树莓派
  7. nginx cache 总结
  8. 红米5 plus 位置服务器,红米5 Plus解锁system系统分区的教程_红米5Plus解系统分区...
  9. 13-TCP 协议(FIN_WAIT2)
  10. 编译原理晦涩难懂-2-正则表达式