Spark(10)配置Hadoop集群-集群配置

一.Hadoop的组成

对普通用户来说, Hadoop就是一个东西,一个整体,它能给我们提供无限的磁盘用来保存文件,可以使用提供强大的计算能力。但是,我们要把它搭建起起来,就必须要了解它的基本组成,知道它的内部分工。

在Hadoop3.X中,hadoop一共有个组成部分:MapReduce,Yarn,HDFS。它们的作用如下:

  1. MapReduce: 用来提供计算。
  2. HDFS:用来提供文件存储功能。
  3. Yarn: 用来协调调度。
二.HDFS

Hadoop Distributed File System, 简称HDFS,是一个分布式文件系统。在hadoop体系中,它用存储文件。

例如,当我们把一个文件(例如500M),保存到hadoop中时,它的背后要实现两个效果:

  1. 如果文件较大(>128M)把大文件拆小,并分别传输。
  2. 存储3份在不同的主机上。

在它的内部,有三个角色,分别如下:

(1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在的DataNode等。

(2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。

(3)Secondary NameNode(2nn): 每隔一段时间对NameNode元数据备份。

三.YARN

Yet Another Resource Negotiator,简称YARN,另一种资源协调者,是Hadoop的资源管理器。

(1)ResourceManager(RM):整个集群资源(内存,CPU等)的管理者

(2)NodeManager(NM): 单个节点服务器资源的管理者

Yarn和HDFS的关系说明:逻辑上分离物理上在一起

逻辑上分离不是说非要启动HDFS集群才能启动YARN集群,不是先有哪个再有哪个?每个框都是一个进程,可能都运行在一台主机上,但是,属于不同的集群。

物理上在一起:每一台机器上都有NN, NM。

四.MapReduce

MapReduce用来提供计算的能力。它将计算过程分为两个阶段:Map和Reduce

(1)Map阶段并行处理输入数据

(2)Reduce阶段对Map结果进行汇总

五.集群配置规划

集群部署规划建议:

1.NameNode和SecondaryNameNode不要安装在同一台服务器

2.ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

根据我们的实际情况,我们配置如下

hadoop100

hadoop101

hadoop102

HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

ResourceManager

NodeManager

NodeManager

六.修改配置文件

这里一共有5个文件要配置:分别是core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml,workers 五个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径

(1)core-site.xml核心配置文件

当前要操作的文件是:/opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml我们使用编辑器,将它的文件内容修改如下:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

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

 <property>

        <name>fs.defaultFS</name>

        <value>hdfs://hadoop100:8020</value>

    </property>

    <!-- 指定hadoop数据的存储目录 -->

    <property>

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

        <value>/opt/module/hadoop-3.1.3/data</value>

    </property>

    <!-- 配置HDFS网页登录使用的静态用户为root-->

    <property>

        <name>hadoop.http.staticuser.user</name>

        <value>root</value>

    </property>

</configuration>

(2)HDFS配置文件

接下来配置第二个文件,/opt/module/hadoop-3.1.3/etc/hadoop/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>hadoop100:9870</value>

    </property>

<!-- 2nn web端访问地址-->

    <property>

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

        <value>hadoop102:9868</value>

    </property>

</configuration>

(3)YARN配置文件

配置/opt/module/hadoop-3.1.3/etc/hadoop/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>hadoop101</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)MapReduce配置文件

配置/opt/module/hadoop-3.1.3/etc/hadoop/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>

(5配置workers

要修改的文件是:/opt/module/hadoop-3.1.3/etc/hadoop/workers该文件中增加如下内容:

hadoop100

hadoop101

hadoop102

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

七.同步分发配置文件

刚才我们是在hadoop100这台机器上进行了正确的设置,但是,其他的2台机器也要做相同的配置。所以我们用上一节课封装的xsync 命令来进行文件同步。

把这个配置文件同步给其他的主机,使用命令如下:

[root@hadoop100 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/

八.启动集群

1)如果集群是第一次启动,需要hadoop100节点指定为namenode的节点格式化NameNode(注意:格式化NameNode会产生新的集群id

命令是:hd。具体如下:

[root@hadoop100 hadoop-3.1.3]$ hdfs namenode -format

2启动HDFS

[root@hadoop100 hadoop-3.1.3]$ sbin/start-dfs.sh

提醒:此时会报错不允许使用root用户来启动HDFS!

在环境变量中添加/etc/profile.d/my_env.sh

#添root加环境变量

#告诉 Hadoop 使用 root 用户来启动和管理相应的服务

export HDFS_NAMENODE_USER=root

export HDFS_DATANODE_USER=root

export HDFS_SECONDARYNAMENODE_USER=root

export YARN_RESOURCEMANAGER_USER=root

export YARN_NODEMANAGER_USER=root

同步给其他的机器,并使用source命令,让环境变量生效!

再来试一次。

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

[root@hadoop101 hadoop-3.1.3]$ sbin/start-yarn.sh

九.查看集群运行效果

1Web端查看HDFSNameNode

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

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

2Web端查看YARNResourceManager

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

3)查看YARN上运行的Job信息

 

  • 十.重置集群

如果集群出现了异常,可以尝试如下操作(你将失去所有的数据,请谨慎)

  1. 停止hdfs. stop-dfs.sh
  2. 停止 yarn。 stop-yarn.sh
  3. 删除 所有设备上的 /data,  /log
  4. 重新初始化集群。hdfs namenode -format

重新启动hdfs, yarn。 start-dfs.sh   start-yarn.s

### 配置 Hadoop 本地库以兼容特定 Spark Docker 镜像 对于希望配置 Hadoop 本地库以便与 `gettyimages/spark:2.3.0-hadoop-2.8` 版本的 Docker 镜像协同工作的场景,以下是具体方法: #### 创建并设置工作环境 选择合适的位置创建一个新的文件夹来存放所有的配置文件以及集群的相关数据。考虑到后续管理维护方便,建议提前规划好存储位置。 ```bash mkdir -p /home/hadoop_spark_cluster cd /home/hadoop_spark_cluster ``` #### 编辑必要的配置文件 针对所使用的 Spark Hadoop 组合版本,需调整相应的环境变量依赖关系。特别是当涉及到不同版本间的适配时,确保所有组件之间的兼容性至关重要[^1]。 ##### 修改或新建 `.env` 文件定义环境变量 此文件可以用来设定一些全局性的参数,比如 Java 家目录、Hadoop 的家目录等重要路径信息。这有助于简化其他地方对该类常量值的引用方式。 ```properties # .env file content example JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ HADOOP_HOME=/opt/hadoop SPARK_VERSION=2.3.0 HADOOP_VERSION=2.8.0 ``` #### 准备 Docker Compose 文件 编写适合当前需求的 `docker-compose.yml` 来描述服务架构服务间的关系。这里特别注意要指明基础镜像是 `gettyimages/spark:2.3.0-hadoop-2.8` 并且正确挂载主机上的共享卷到容器内部相应位置,从而使得外部构建好的 Hadoop 库能被容器内程序识别利用。 ```yaml version: '3' services: spark-master: image: gettyimages/spark:2.3.0-hadoop-2.8 ports: - "8080:8080" - "7077:7077" environment: - SPARK_MASTER_HOST=spark-master volumes: - ./hadoop-lib:/opt/hadoop/lib # 假设这是你放置自定义编译后的Hadoop jar包的地方 ... ``` #### 更新系统软件包列表并安装 Git 工具 为了获取最新的源码或其他资源,可能还需要更新系统的软件仓库索引,并通过命令行工具如 YUM 或 APT 安装 Git 及其相关依赖项。如果遇到网络连接方面的问题,则考虑编辑 `/etc/hosts` 文件加入 GitHub IP 地址映射条目以改善访问速度稳定性[^4]。 ```bash yum update && yum install git -y echo "IP_ADDRESS github.com" >> /etc/hosts ``` 以上操作完成后,应该已经成功设置了基于指定版本的 Spark Hadoop 的开发测试平台。接下来就可以按照实际项目的需求进一步定制化配置了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值