《PySpark大数据分析实战》-11.Spark on YARN模式安装Hadoop

📋 博主简介

  • 💖 作者简介:大家好,我是wux_labs。😜
    热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。
    通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP)、TiDB数据库认证SQL开发专家(PCSD)认证。
    通过了微软Azure开发人员、Azure数据工程师、Azure解决方案架构师专家认证。
    对大数据技术栈Hadoop、Hive、Spark、Kafka等有深入研究,对Databricks的使用有丰富的经验。
  • 📝 个人主页:wux_labs,如果您对我还算满意,请关注一下吧~🔥
  • 📝 个人社区:数据科学社区,如果您是数据科学爱好者,一起来交流吧~🔥
  • 🎉 请支持我:欢迎大家 点赞👍+收藏⭐️+吐槽📝,您的支持是我持续创作的动力~🔥

《PySpark大数据分析实战》-11.Spark on YARN模式安装Hadoop

  • 《PySpark大数据分析实战》-11.Spark on YARN模式安装Hadoop
    • 前言
    • 安装Hadoop集群
      • 配置环境变量
      • 配置Hadoop集群
      • 环境信息同步
    • 格式化NameNode
    • 结束语

《PySpark大数据分析实战》-11.Spark on YARN模式安装Hadoop

前言

大家好!今天为大家分享的是《PySpark大数据分析实战》第2章第4节的内容:Spark on YARN模式安装Hadoop。

Spark独立集群模式还可以部署成高可用模式,在集群中部署多个Master节点,其中一个Master是Active的,其余是StandBy的。Spark独立集群、Spark高可用独立集群都是可用于生产环境的集群部署模式,在这两种集群模式下,Spark除了担任计算引擎,还需要承担资源管理的工作。Spark本身定位于一个计算引擎,而不是资源管理框架,Spark已经将资源管理模块做了抽象,支持外部资源管理框架对Spark的集群资源进行管理,再用独立集群模式自己做资源管理调度就没那么必要了。

在企业中,涉及大数据处理的,通常都会部署Hadoop集群、HDFS文件系统,同时就会有YARN资源管理调度框架,完全可以将Spark的资源管理工作交给YARN来做,YARN承担资源管理调度工作,Spark专注于计算,因此就有了Spark on YARN的集群模式。本节将介绍Spark on YARN的安装,Spark on YARN的安装,至少需要3台服务器,在安装之前,按照本章第1节步骤准备好3台服务器。

安装Hadoop集群

Hadoop的安装非常简单,将下载的Hadoop软件安装包解压到目标位置、配置Hadoop相关的环境变量即安装完成。Spark on YARN模式下,Spark应用程序在提交执行的时候,YARN会根据集群的资源情况选择分配执行应用程序的节点,从选中的节点启动Spark,为了保证Spark能启动成功,需要在Hadoop集群的每台服务器节点上都安装有Spark软件。Hadoop和Spark软件解压到目录路径,命令如下:

$ tar -xzf hadoop-3.3.5.tar.gz -C apps
$ tar -xzf spark-3.4.0-bin-hadoop3.tgz -C apps

需要在集群的每个节点上都安装Hadoop和Spark,可以复制软件安装包到每个节点进行分别安装,也可以将安装好软件的apps目录同步到每个节点上。
Hadoop的目录结构如图所示。

  • bin目录下存放的是Hadoop相关的常用命令,例如操作HDFS的hdfs命令,以及hadoop、yarn等命令。
  • etc目录下存放的是Hadoop的配置文件,对HDFS、MapReduce、YARN以及集群节点列表的配置都在这个里面。
  • sbin目录下存放的是管理集群相关的命令,例如启动集群、启动HDFS、启动YARN、停止集群等的命令。
  • share目录下存放了一些Hadoop的相关资源,例如文档以及各个模块的Jar包。

配置环境变量

在集群的每个节点上都配置Hadoop和Spark相关的环境变量,Hadoop集群在启动的时候可以使用start-all.sh一次性启动集群中的HDFS和YARN,而Spark的集群启动命令也是start-all.sh,在Spark on YARN下不需要启动Spark集群,为了防止在启动Hadoop集群的时候命令冲突,需要将Hadoop相关的路径配置在PATH变量的前面部分,Spark相关的路径配置在PATH变量的后面部分,执行启动集群start-all.sh的时候会优先寻找到并使用Hadoop的启动命令,正确启动Hadoop集群。在node1上配置环境变量,命令如下:

$ vi .bashrc

环境变量配置内容如下:

export HADOOP_HOME=/home/hadoop/apps/hadoop-3.3.5
export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop-3.3.5/etc/hadoop
export YARN_CONF_DIR=/home/hadoop/apps/hadoop-3.3.5/etc/hadoop
export SPARK_HOME=/home/hadoop/apps/spark-3.4.0-bin-hadoop3
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export PATH

环境变量配置完成后,执行命令让新配置的环境变量生效,命令如下:

$ source ~/.bashrc

配置Hadoop集群

Hadoop软件安装完成后,每个节点上的Hadoop都是独立的软件,需要进行配置才能组成Hadoop集群。Hadoop的配置文件在$HADOOP_HOME/etc/hadoop目录下,主要配置文件有:

  • hadoop-env.sh主要配置Hadoop环境相关的信息,例如安装路径、配置文件路径等。
  • core-site.xml是Hadoop的核心配置文件,主要配置Hadoop的NameNode的地址、Hadoop产生的文件目录等。
  • hdfs-site.xml是HDFS相关的配置文件,主要配置文件的副本数、HDFS文件系统在本地对应的目录等。
  • mapred-site.xml是MapReduce相关的配置文件,主要配置MapReduce如何运行、依赖类库路径等。
  • yarn-site.xml是YARN相关的配置文件,主要配置YARN的管理节点ResourceManager的地址、NodeManager获取数据的方式等。
  • workers是集群中节点列表的配置文件,只有在这个文件里面配置了的节点才会加入到Hadoop集群中,否则就是一个独立节点。

这几个配置文件如果不存在,可以通过复制配置模板的方式创建,也可以通过创建新文件的方式创建。需要保证在集群的每个节点上这6个配置保持同步,在node1上配置所有配置文件。

hadoop-env.sh配置命令如下:

$ vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh

hadoop-env.sh配置内容如下:

export JAVA_HOME= /usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/home/hadoop/apps/hadoop-3.3.5
export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop-3.3.5/etc/hadoop
export HADOOP_LOG_DIR=/home/hadoop/logs/hadoop

core-site.xml配置命令如下:

$ vi $HADOOP_HOME/etc/hadoop/core-site.xml

core-site.xml配置内容如下:

<configuration>
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://node1:8020</value>
    </property>
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hadoop/works/hadoop/temp</value>
    </property>
    <property>
      <name>hadoop.proxyuser.hadoop.hosts</name>
      <value>*</value>
    </property>
    <property>
      <name>hadoop.proxyuser.hadoop.groups</name>
      <value>*</value>
    </property>
</configuration>

hdfs-site.xml配置命令如下:

$ vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml

hdfs-site.xml配置内容如下:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>/home/hadoop/works/hadoop/hdfs/name</value>
    </property>
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>/home/hadoop/works/hadoop/hdfs/data</value>
    </property>
</configuration>

mapred-site.xml配置命令如下:

$ vi $HADOOP_HOME/etc/hadoop/mapred-site.xml

mapred-site.xml配置内容如下:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>

yarn-site.xml配置命令如下:

$ vi $HADOOP_HOME/etc/hadoop/yarn-site.xml

yarn-site.xml配置内容如下:

<configuration>
    <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
    </property>
      <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node1</value>
    </property>
</configuration>

workers配置命令如下:

$ vi $HADOOP_HOME/etc/hadoop/workers

workers配置内容如下:

node1
node2
node3

环境信息同步

确保3台服务器上的配置文件完全一致,为了防止配置出错,直接使用命令将node1上的配置文件复制到其他服务器上,复制命令如下:

$ scp -r .bashrc apps node2:~/
$ scp -r .bashrc apps node3:~/

格式化NameNode

所有节点上都安装完成Hadoop、Spark的软件,完成所有节点的环境变量配置、域名解析配置、配置文件配置,在启动集群之前还需要进行NameNode的格式化操作,在NameNode所在的node1节点上执行格式化,命令如下:

$ hdfs namenode -format

NameNode格式化完成后,在目录/home/hadoop/works/hadoop/hdfs/name下会生成current目录,在current目录中会包含fsimage文件,它是NameNode的一个元数据文件,记录了当前HDFS文件系统中的所有目录和文件的元数据信息。

结束语

好了,感谢大家的关注,今天就分享到这里了,更多详细内容,请阅读原书或持续关注专栏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/251136.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue学习计划-Vue2--VueCLi(七)nextTick、、浏览器本地缓存、脚手架配置代理

1. nextTick 语法&#xff1a; this.$nextTick(回调函数)作用&#xff1a;在下一次DOM更新结束后执行其指定的回调什么时候用&#xff1a; 当改变数据后&#xff0c;要基于更新后的新DOM进行某些操作时&#xff0c;要在nextTick所指定的回调函数中执行 **举个栗子&#xff1a;…

B+树与索引

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 对于60%的程序员而言&a…

【 某景点舆情分析:Python、Echarts、Flask、文本处理技术的应用】

某景点舆情分析&#xff1a;Python、Echarts、Flask、文本处理技术的应用 前言技术栈数据获取与准备景点数据统计分析评论数据处理与分析词频统计分词与文本处理情感分析 数据可视化Web应用搭建结语 前言 随着旅游行业的蓬勃发展&#xff0c;越来越多的人通过网络平台获取关于…

SQL 入门指南:从零开始学习 SQL

当今时代&#xff0c;数据已经成为了我们生活中不可或缺的一部分。无论是企业的经营决策&#xff0c;还是个人的日常消费习惯&#xff0c;都需要通过对数据的收集、分析和应用来实现更好的结果。 而关系型数据库系统&#xff0c;作为最常见的数据存储和管理方式&#xff0c;SQ…

HNU-数据库系统-实验1-数据定义/数据操纵

数据库系统 课程实验1数据定义/数据操纵 计科210X 甘晴void 202108010XXX 目录 文章目录 数据库系统 课程实验1<br>数据定义/数据操纵实验目的实验样例实验环境实验内容1.1 数据库定义1&#xff09;实验内容与要求2&#xff09;实验重难点3&#xff09;实验基础知识①模…

设计模式之结构型设计模式(二):工厂模式 抽象工厂模式 建造者模式

工厂模式 Factory 1、什么是工厂模式 工厂模式旨在提供一种统一的接口来创建对象&#xff0c;而将具体的对象实例化的过程延迟到子类或者具体实现中。有助于降低客户端代码与被创建对象之间的耦合度&#xff0c;提高代码的灵活性和可维护性。 定义了一个创建对象的接口&…

node.js mongoose简述

目录 官方文档 mongoose Schema Model Query document 关系 官方文档 Mongoose v8.0.3: Getting Started mongoose Mongoose 是一个 Node.js 环境下 MongoDB 的对象建模工具。它提供了一种在应用程序中与 MongoDB 数据库进行交互的方式&#xff0c;使得开发者能够使用…

数据可视化?这些平台能处

图表在各行各业都起到举重若轻的作用&#xff0c;无论是项目汇报、业绩分析&#xff0c;亦或是数据挖掘、统计分析&#xff0c;良好的可视化可以为我们的阐述起到画龙点睛的效果。在一篇文章中&#xff0c;如果只有密密麻麻的文字堆积&#xff0c;无论是谁恐怕都无法长期保持注…

mysql !=索引为什么失效

可以先看这个&#xff1a;Mysql查询条件为大于时&#xff0c;不走索引失效场景-CSDN博客 如下建立了联合索引&#xff0c; 注意查询phone是用不对劲了索引&#xff0c;key_len82 改为 !时&#xff0c; key key_len没内容&#xff0c;说明没有走索引&#xff0c;为什么没有走&…

DIY电脑装机机箱风扇安装方法

作为第一次自己diy一台电脑主机的我&#xff0c;在经历了众多的坑中今天来说一下如何安装机箱风扇的问题 一、风扇的数量 1、i3 xx50显卡 就用一个cpu散热风扇即可 2、i5 xx60 一个cpu散热风扇 一个风扇即可 3、i7 xx70 一个cpu散热 4个风扇即可 4、i9 xx80 就需要7个以…

Ubuntu安装蓝牙模块pybluez以及问题解决方案【完美解决】

文章目录 简介问题及解决办法总结 简介 近期因工程需要在Ubuntu中使用蓝牙远程一些设备。安装Bluetooth的Python第三方软件包pybluez时遇到很多问题&#xff0c;一番折腾后完美解决。此篇博客进行了梳理和总结&#xff0c;供大家参考。 问题及解决办法 pip install pybluez安…

数据迁移测试经验分享

以下为作者观点&#xff1a; 数据迁移&#xff0c;是在保证新旧系统业务连续性的前提下&#xff0c;将数据从旧数据库迁移到新数据库的过程&#xff0c;测试前通过迁移策略和方案了解新旧系统数据如何重构与关联&#xff0c;测试过程需确保数据迁移的正确性&#xff0c;主要体…

Lambda 表达式与C++并发编程

Lambda 表达式&#xff08;lambda expression&#xff09;是一个匿名函数&#xff0c;Lambda表达式基于数学中的λ演算得名&#xff0c;直接对应于其中的lambda抽象&#xff08;lambda abstraction&#xff09;&#xff0c;是一个匿名函数&#xff0c;即没有函数名的函数。 // …

Easy Excel生成复杂下Excel模板(下拉框)给用户下载

引言 文件的下载是一个非常常见的功能&#xff0c;也有一些非常好的框架可以使用&#xff0c;这里我们就介绍一种比较常见的场景&#xff0c;下载Excel模版&#xff0c;导入功能通常会配有一个模版下载的功能&#xff0c;根据下载的模版&#xff0c;填充数据然后再上传。 需求…

CAN 五: CAN编程实践

1、CAN基本驱动步骤 (1)CAN参数初始化 工作模式、波特率等函数&#xff1a;HAL_CAN_Init (2)使能CAN时钟和初始化相关引脚 GPIO模式设为复用功能模式函数&#xff1a;HAL_CAN_MspInit(CAN的初始化回调函数) (3)设置过滤器 过滤器的配置函数&#xff1a;HAL_CAN_ConfigFil…

客户端SDK测试是什么?如何测?

01、是什么 客户端SDK是为第三方开发者提供的软件开发工具包&#xff0c;包括SDK接口、开发文档和Demo示例等。SDK和应用之间是什么关系呢&#xff1f;以云信即时消息服务为例&#xff0c;如下图所示&#xff0c;应用客户端通过调用云信SDK接口&#xff0c;进行消息等数据查询…

用EnumSet代替位域

在Java中&#xff0c;可以使用EnumSet来代替位域&#xff0c;以提高代码的可读性和类型安全性。下面是一个简单的例子&#xff0c;演示如何使用EnumSet来管理一组枚举值&#xff1a; import java.util.EnumSet;// 定义一个枚举类型表示权限 enum Permission {READ, WRITE, EXE…

【Java】使用递归的方法获取层级关系数据demo

使用递归来完善各种业务数据的层级关系的获取 引言&#xff1a;在Java开发中&#xff0c;我们通常会遇到层层递进的关系型数据的获取问题&#xff0c;有时是树状解构&#xff0c;或金字塔结构&#xff0c;怎么描述都行&#xff0c;错综复杂的关系在程序中还是可以理清的。 这…

【MySQL】SQL通用语法 、介绍SQL分类

SQL通用语法 1.SQL语句可以单行或多行书写&#xff0c;以分号结尾 2.MySQL数据库的SQL语句不区分大小写&#xff0c;关键字建议使用大写。 3.注释&#xff1a; 单行注释&#xff1a; -- 或 # 多行注释: /* */ SQL分类 SQL分类主要分为4类 分别是 DDL DML DQL DCL

向华为学习:基于BLM模型的战略规划研讨会实操的详细说明,含研讨表单(一)

前面&#xff0c;华研荟用了三篇文章介绍华为战略规划的时候使用的其中一个工具&#xff1a;五看三定。一句话来说&#xff0c;五看三定是通过“五看”来知己知彼&#xff0c;然后设计业务&#xff0c;在选定的业务领域&#xff08;方向&#xff09;确定战略控制点&#xff0c;…