分布式计算是一种计算模型,它涉及将计算任务分解成多个子任务,并将这些子任务分配给多台计算机或节点以并行处理。这种计算模型的主要目标是提高计算性能、可伸缩性和可靠性,以处理大规模的数据和复杂的计算任务。分布式计算通常用于处理大数据、高性能计算(HPC)、网络服务和云计算等领域。
以下是分布式计算的一些关键概念和特点:
分布式计算在众多领域中都有应用,包括大数据处理、科学研究、人工智能、金融建模、Web服务和网络应用。各种技术和工具,如Hadoop、Spark、Kubernetes和容器技术,已经涌现出来,用于支持分布式计算任务的管理和执行。这些技术使分布式计算更容易实现和操作,从而推动了分布式计算在现代计算中的重要性。
MapReduce是一种编程模型和处理框架,用于处理和生成大规模数据集的计算。它最初由Google开发用于内部数据处理,并在后来的论文中公开介绍,启发了Hadoop等开源实现。MapReduce模型非常适用于并行化和分布式处理大数据集,它简化了并行计算的任务,使开发人员能够专注于问题的本质而不必担心底层的分布式细节。
以下是MapReduce的基本概述:
MapReduce的关键特点和优势包括:
尽管MapReduce是一个强大的分布式计算框架,但在处理某些类型的任务时,如迭代算法(例如图算法)和复杂数据处理流水线时,可能不是最高效的选择。因此,一些新的分布式计算框架,如Apache Spark,已经涌现出来,以提供更灵活和高性能的替代方案。不过,MapReduce仍然在许多大规模数据处理任务中广泛使用。
Apache Hadoop YARN(Yet Another Resource Negotiator)是Hadoop生态系统的一个关键组件,用于集群资源的管理和作业调度。它被设计用于提高Hadoop集群的资源利用率,支持多种数据处理工作负载,并允许多个应用程序在共享的Hadoop集群上运行而不互相干扰。以下是YARN的主要概述:
总之,YARN是Hadoop生态系统的关键组件之一,它提供了一个强大的资源管理和作业调度平台,使Hadoop集群更加灵活、高效和多用途。它有助于最大化集群资源的利用率,并允许不同类型的应用程序在共享的集群上同时运行,从而促进了大数据处理和分布式计算的发展。
MapReduce在YARN上运行: 在Hadoop集群上运行MapReduce作业时,YARN扮演着关键角色。当用户提交MapReduce作业时,YARN负责分配计算资源给Map和Reduce任务,并监控它们的执行。YARN还负责容错处理,如果某个节点上的任务失败,它会将任务重新分配到其他节点上。因此,YARN为MapReduce作业提供了必要的资源管理和调度支持。
运用之前配置好的3台服务器及hdfs集群配置,可以参考下面连接或者自行百度
有3台服务器,其中node1配置较高
集群规划如下:
主机 | 角色 |
---|---|
node1 | ResourceManager NodeManager ProxyServer JobHistoryServer |
node2 | NodeManager |
node3 | NodeManager |
在node1机器 $HADOOP_HOME/etc/hadoop
路径下配置如下内容,
MapReduce配置文件如下:
mapred-env.sh
# 设置jdk
export JAVA_HOME=/export/server/jdk
# 设置JobHistoryServer进程内存512M
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=512
## 设置日志级别INFO
export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
<description>MepReduce的运行框架设置为yarndescription>
property>
<property>
<name>mapreduce.jobhistory.addressname>
<value>node1:10020value>
<description>历史服务器通讯端口node1:10020description>
property>
<property>
<name>mapreduce.jobhistory.wabapp.addressname>
<value>node1:19888value>
<description>历史服务器web端口node1:19888description>
property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dirname>
<value>/data/mr-history/tmpvalue>
<description>历史信息在HDFS的记录临时路径description>
property>
<property>
<name>mapreduce.jobhistory.done-dirname>
<value>/data/mr-history/donevalue>
<description>历史信息在HDFS中的记录路径description>
property>
<property>
<name>yarn.app.mapreduce.am.envname>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOMEvalue>
<description>MapReduce HOME 设置为HADOOOP_HOMEdescription>
property>
<property>
<name>mapreduce.map.envname>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOMEvalue>
<description>MapReduce HOME 设置为HADOOP_HOMEdescription>
property>
<property>
<name>mapreduce.reduce.envname>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOMEvalue>
<description>MapReduce HOME 设置为HADOOP_HOMEdescription>
property>
configuration>
yarn-env.sh
# 设置jdk
export JAVA_HOME=/export/server/jdk
# 设置HADOOP_HOME
export HADOOP_HOME=/export/server/hadoop
# 设置配置文件路径
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
# 设置日志路径
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>node1value>
<description>ResourceManager 设置在node1description>
property>
<property>
<name>yarn.nodemanager.local-dirsname>
<value>/data/nm-localvalue>
<description>NodeManager中间数据本地存储路径description>
property>
<property>
<name>yarn.nodemanager.log-dirsname>
<value>/data/nm-logvalue>
<description>NodeManager数据日志本地存储路径description>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
<description>为MapReduce开启shuffle服务description>
property>
<property>
<name>yarn.log.server.urlname>
<value>http://node1:19888/jobhistory/logsvalue>
<description>历史服务器URLdescription>
property>
<property>
<name>yarn.web-proxy.addressname>
<value>node1:8089value>
<description>代理服务器主机和端口description>
property>
<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
<description>开启日志聚合description>
property>
<property>
<name>yarn.nodemanager.remote-app-log-dirname>
<value>/tmp/logsvalue>
<description>程序日志HDFS的存储路径description>
property>
<property>
<name>yarn.resourcemanager.scheduler.classname>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairSchedulervalue>
<description>选择公平调度器description>
property>
configuration>
MapReduce和YARN的配置文件修改好后,需要分发到其它的服务器节点中。
cd $HADOOP_HOME/etc/hadoop
scp mapred-env.sh mapred-site.xml yarn-env.sh yarn-site.xml node2:`pwd`
scp mapred-env.sh mapred-site.xml yarn-env.sh yarn-site.xml node3:`pwd`
分发完成配置文件,就可以启动YARN的相关进程啦。
常用的进程启动命令如下:
•一键启动YARN集群:
$HADOOP_HOME/sbin/start-yarn.sh
•会基于yarn-site.xml中配置的yarn.resourcemanager.hostname来决定在哪台机器上启动resourcemanager
•会基于workers文件配置的主机启动NodeManager
•一键停止YARN集群:
$HADOOP_HOME/sbin/stop-yarn.sh
•在当前机器,单独启动或停止进程
$HADOOP_HOME/bin/yarn --daemon start|stop resourcemanager|nodemanager|proxyserver
•start和stop决定启动和停止
•可控制resourcemanager、nodemanager、proxyserver三种进程
•历史服务器启动和停止
$HADOOP_HOME/bin/mapred --daemon start|stop historyserver
现在我们来启动hdfs和yarn,node1节点hadoop用户
start-dfs.sh
start-yarn.sh
mapred --daemon start historyserver
jps查看node1节点运行java进程
# node1
2288 WebAppProxyServer
1973 ResourceManager
1416 DataNode
1705 SecondaryNameNode
2090 NodeManager
1290 NameNode
2605 JobHistoryServer
# node2
1267 NodeManager
1141 DataNode
# node3
1266 NodeManager
1140 DataNode
提交自带的MapReduce程序到yarn执行
在部署并成功启动YARN集群后,我们就可以在YARN上运行各类应用程序了。
YARN作为资源调度管控框架,其本身提供资源供许多程序运行,常见的有:
•MapReduce程序
•Spark程序
•Flink程序
Spark和Flink是大数据后续的学习内容,我们目前先来体验一下在YARN上执行MapReduce程序的过程。
•可以通过 hadoop jar 命令来运行它,提交MapReduce程序到YARN中。
语法: hadoop jar 程序文件 java类名 [程序参数] ... [程序参数]
执行自带示例jar包 $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar 这个文件内统计单词的程序
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar workcount hdfs://node1:8020/gaogzhen/bigdata hdfs://node1:8020/output/wc1
查看执行结果:
[hadoop@node1 software]$ hdfs dfs -ls /output/wc1
Found 2 items
-rw-r--r-- 3 hadoop supergroup 0 2023-09-04 19:37 /output/wc1/_SUCCESS
[hadoop@node1 software]$ hdfs dfs -cat /output/wc1/*
13413 1
32323` 1
fsl1 1
gaogzhen 2
goagzhen 1
node1 3
node2 2
node3 1
sdfasf 1
如果小伙伴什么问题或者指教,欢迎交流。
❓QQ:806797785
参考链接:
[1]大数据视频[CP/OL].2020-04-16.
[2]0102阿里云配置3台ECS服务器-大数据学习[CP/OL].
[3]0201hdfs集群部署-hadoop-大数据学习[CP/OL].