Yarn集群的搭建、Yarn的架构和WordCount程序在集群提交方式

本文详细介绍了Yarn集群的搭建过程,包括资源配置、集群启动与关闭,以及如何通过修改配置文件运行WordCount程序。同时,深入解析了Yarn集群的架构,包括ResourceManager和NodeManager的功能。

一、Yarn集群概述及搭建

  1.Mapreduce程序运行在多台机器的集群上,而且在运行是要使用很多maptask和reducertask,这个过程中需要一个自动化任务调度平台来调度任务,分配资源,这个平台就是Yarn!

  2.Yarn提交任务的流程:

    当我们向Yarn集群提交任务后,Yarn通过Resourcemanager给任务分配资源,然后由NodeManager开辟运算空间来执行任务,在这个运算空间中开辟maptask和reducetask来运行任务。

  3.Yarn集群的搭建

  修改配置文件yarn.site.xml,添加配置信息

<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>hd1-1</value>
</property> 
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>

  将配置好的文件传输到集群其他机器,修改slaves文件(hdfs集群配置比较麻烦,本人没有总结,请见谅)

  启动yarn集群  start-yarn.sh

  关闭yarn集群  stop-yarn.sh

  可以访问yarn的网页客户端,resourcemanager的ip加端口号8088,如:

  192.168.50.183:8088

 

二、Yarn集群的架构

  Yarn集群中包含的组件:

  1.ResourceManager,功能:

    1)处理客户端提交的任务;

    2)监控NodeManager;

    3)自动和监控程序的运行;

    4)资源的分配和调度。

  2.NodeManager,功能:

    1)管理单个节点的资源;

    2)处理来自ResourceManager‘的命令;

    3)处理程序的命令;

    4)它包含两个小的组件:container、Appmaster

    container:一种抽象的表示,包含了许多资源如内存、磁盘、网络信息等;

    Appmaster:它主要负责数据切片、申请资源、任务的监控和容错。

 

三、WordCount程序提交到集群运行

  1.修改配置文件mapred-site.xml,添加配置:

<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

  2.将修改好的配置文件发送到集群其他机器

  3.启动hdfs、yarn集群,将wordCount程序打包上传到集群

  4.运行命令:

    hadoop jar WordCount.jar com.wyh.mr.WordCountDriver

 

转载于:https://www.cnblogs.com/HelloBigTable/p/10586695.html

### 搭建Spark的Yarn集群 #### 1. 环境准备 确保已经安装并配置好 Hadoop 集群(包括 HDFS YARN),同时下载并解压 Spark 安装包到各个节点。 #### 2. 配置 Spark - **修改 `spark-env.sh`**: 在 Spark 安装目录下的 `conf` 文件夹中,复制 `spark-env.sh.template` 为 `spark-env.sh`,并添加以下配置: ```bash export JAVA_HOME=/path/to/java export HADOOP_CONF_DIR=/path/to/hadoop/conf export SPARK_MASTER_HOST=your-master-node export SPARK_LOCAL_IP=your-node-ip ``` - **修改 `yarn-site.xml`**: 在 Hadoop 的 `conf` 目录下的 `yarn-site.xml` 中添加或修改以下配置,以允许 Spark 应用程序YARN 上运行: ```xml <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> ``` #### 3. 启动集群 启动 Hadoop 集群(HDFS YARN): ```bash start-dfs.sh start-yarn.sh ``` 启动 Spark 历史服务器(可选): ```bash ./sbin/start-history-server.sh ``` ### 编写 WordCount 程序读取 HDFS 文件实现单词统计 #### Scala 版本 ```scala import org.apache.spark.SparkConf import org.apache.spark.streaming.{Seconds, StreamingContext} object HdfsWordCount { def main(args: Array[String]) { if (args.length < 1) { System.err.println("Usage: HdfsWordCount <hdfs dir>") System.exit(1) } // Create the context with a 5 second batch size val sparkConf = new SparkConf().setAppName("HdfsWordCount") val ssc = new StreamingContext(sparkConf, Seconds(5)) val lines = ssc.textFileStream(args(0)) val words = lines.flatMap(_.split(" ")) val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _) wordCounts.print() ssc.start() ssc.awaitTermination() } } ``` #### Python 版本 ```python import logging import time from operator import add from pyspark import SparkContext, SparkConf conf = SparkConf() conf.setMaster("yarn") conf.setAppName("WordCountOnYarn") test_file_name = "hdfs://your-hdfs-namenode:port/path/to/input/file" out_file_name = "hdfs://your-hdfs-namenode:port/path/to/output/dir" starttime = time.time() # Word Count sc = SparkContext(conf=conf) # text_file rdd object text_file = sc.textFile(test_file_name) # counts counts = text_file.flatMap(lambda line: line.split(" ")).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b) counts.saveAsTextFile(out_file_name) endtime = time.time() print(endtime - starttime) ``` ### 提交 Spark 应用程序 将编写好的程序打包成 JAR 文件(Scala 版本)或直接使用 Python 脚本(Python 版本),然后使用以下命令提交YARN 集群: #### Scala 版本 ```bash spark-submit --class HdfsWordCount --master yarn --deploy-mode cluster /path/to/your/jar/file.jar hdfs://your-hdfs-namenode:port/path/to/input/dir ``` #### Python 版本 ```bash spark-submit --master yarn --deploy-mode cluster /path/to/your/python/script.py ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值