📋 博主简介
- 💖 作者简介:大家好,我是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文件系统中的所有目录和文件的元数据信息。
结束语
好了,感谢大家的关注,今天就分享到这里了,更多详细内容,请阅读原书或持续关注专栏。