CDH 搭建_ Hadoop _ Yarn 搭建|学习笔记

简介: 快速学习 CDH 搭建_ Hadoop _ Yarn 搭建

开发者学堂课程【2020版大数据实战项目之 DMP 广告系统(第二阶段)  CDH 搭建_ Hadoop _ Yarn 搭建】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/677/detail/11773


CDH 搭建_ Hadoop _ Yarn 搭建


内容介绍:

一、创建文件夹和用户目录

二、修改 Yarn 和 MapReduce

三、配置 Yarn 和 MapReduce

 

刚才已经配置了 HDFS ,接下来配置 Yarn ,包括 mapreduce 。就可以完成整个 Hadoop 的配置并且也启动 Yarn 。进入笔记当中,查看步骤,可以看到小专题,放置了配置 Yarn 和 MapReduce 相关的一些过程、步骤和配置文件。在这部分可以看到其实前两个步骤还是去配置 MapReduce 和 Yarn 的配置文件;比如 mapred 就是 MapReduce 的配置文件。接下来,需要配置 yarn-site 的 yarn 配置文件,在 MapReduce 配置文件中,比如通过 jobhistory 是不是指定了一个路径,即指定了一个 HTTP 的端口;这个端口就是 jobhistory 服务的端口。接下来,需要注意的是 staging-dir 主要是为 jobhistory 服务的。 staging-dir 把东西存放到 hdfs 上,等一会需要把 user 的目录在 hdfs 上创建出来。 staging-dir 其实是一个基础的目录,主要是为了存放 jobhistory 需要使用到的一些日志。

 

一、创建文件夹和用户目录

接下来,看 MapReduce 的配置文件、 Yarn 的配置文件。 Yarn 的配置文件中, hostname 直接指定 cdh 01 即可。还需要指定 local-dirs 就是本地放置数据的内容文件夹,等一会要在 file 当中创建文件夹。内容如下。

<value>file:///var/lib/hadoop-yarn/cache/${user.name}/nm-local-dir</value>

接下来,需要创建指定 yarn 的 log 的 dir 叫做 containers 的文件夹。 需要指定远端的 log-dir ,收集的 dir 存放在 hdfs 上便于查看和使用。接下来,因为指定了很多目录;所以需要把这些目录创建出来并赋予这些目录给 yarn 的用户和权限。第三步,为 MapReduce 准备 hdfs 上的目录。 hdfs 的目录还有一些,比如 user 的目录、 tap 的目录、 history 的目录。所以既要创建内容,还要同时赋予其权限。  chmod 就是改变文件权限; chown 是改变所有者;这些都是 hdfs 的命令。接下来,在执行 hdfs 的命令,依然是使用 sudo 。 -u 指定某一个用户,使用 hdfs 的用户去执行相应的命令。接下来,可以为 MapReduce 创建用户目录。做完配置之后,就可以启动 yarn 。如果正常启动,就不用管他;如果出错了,就需要查看是否是日志哪个地方有问题?

 

二、修改 Yarn 和 MapReduce

接下来,打开窗口,先在 cdh 01上修配置文件,第一个修改的配置文件,输入代码为 vi /etc/hadoop/conf/mapred-site.xml

配置文件里需要放置的东西在笔记当中,拷贝内容如下。

<property>

<name>map reduce.framework.name</ name>

<value>yarn</value>

</property>

<property>

<name>-mapreduce.jobhistory.address</name>

<value>-cdh01:10020</value>

</property>

<property>

<name>-mapreduce.jobhistory.webapp. address</name>

<value>-cdh01:19888</value>

</property>

<property>

<name>hadoop.proxyuser.mapred. groups</name>

<value>*</value>

</property>

<property>

<name>hadoop .proxyuser. mapred.hosts</name>

<value>*</ value>

</property>

<property>

<name>yarn.app .mapreduce.am.staging-dire</name>

<value>/user</value>

</property>

将其粘贴在配置文件当中,此时整个过程已经结束,输入 wq 保存并退出。接着修改配置文件的内容如下。

vi /etc/hadoop/conf/yarn.site.xml

查看文件内是否有 tap 文件,可以看到 yarn-site.xml ,如下图。

image.png

可能是输入错误的原因,所以输入 vi yarn-site.xml ,这时可以看到它里面的内容还是比较多的,先按3,再按0,再按两次 d ,直接删掉30行;再按10和两次 d ,删掉10行;最后,按4和两次 d ,即可删除完成。总共是四十四行,大家也可以直接在 configuration 下第一行中 ,直接按44和两次 d 就可以删除全部内容。在< configuration >和< /configuration >中放置对应要去配置的文件。打开文档,拷贝配置文件如下。

<property>

<name>yarn.resourcemanager.hostname</ name>

<value>cdh01</ value>

</property>

<property>

<name>yarn . application . classpath</name>

<value>

$HADOOP_CONF_DIR,

$HADOOP_COMMON_HOME/* ,$HADOOP_COMMON_HOME/lib/*,

$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,

$HADOOP_MAPRED_HOME/* ,$HADOOP_MAPRED_HOME/lib/*,

$HADOOP_YARN_HOME/* ,$HADOOP_YARN_HOME/lib/*

</ value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.nodemanager .local-dirs</name>

<value>file:/l/var/lib/hadoop-yarn/cache/${user.name}/nm-local-dir</value>

</property>

<property>

<name>yarn.nodemanager.log-dirs</name>

<value>file: ///var/log/hadoop-yarn/containers</value>

</property>

<property>

<name>yarn . log.aggregation-enable</ name>

<value>true</value>

</property>

<property>

<name>yarn.nodemanager . remote-app-log-dir</name>

<value>hdfs:///var/log/hadoop- yarn/apps</value>

</propertye>

在对应位置 Paste 粘贴,完成之后, wq 保存退出。


三、配置 Yarn 和 MapReduce

所有的配置文件都已经完成,把刚才配置文件中所用到的目录进行创建,如下。

mkdir -p /var/lib/hadoop-yarn/cache

mkdir -p /var/log/hadoop-yarn/containers

mkdir -p /var/log/hadoop-yarn/apps

chown -R yarn:yarn/var/Lib/hadoop-yarn /cache/var /Log/hadoop -yarn/containers /var/log/hadoop-yam/apps

其中,使用 service 启动 yarn 时会默认使用一个 yarn groop 下的 yarn 用户启动对应的 yarn 服务,所以需要把该权限只给 yarn 用户才可以。这一步就已经将所有的权限更改。接下来,会做一系列的操作,比如首先创建 hdfs 上所需要的目录。创建使用如下命令。

sudo -u hdfs hadoop fs -mkdir /tmp

sudo -u hdfs 指定创建目录的命令去创建 tmp 目录。显示目录已经存在,接着往下走,拷贝第二条命令,如下。

sudo -u hdfs hadoop fs -chmod -R 1777 /tmp

chomd 相当于把 tmp 目录改为1777的权限。接着创建 /user/history ,完成之后指定权限,指定所有者。代码如下。

sudo -u hdfs hadoop fs -mkdir p /user/history

sudo -u hdfs hadoop fs -chmod  -R 1777 /user/history

sudo -u hdfs hadoop fs - chown mapred:hadoop /user /history  

拷贝上图内容。放在 cdh 01中 ,等待执行。这时 hdfs 所使用到的 history 相关文件夹创建完成,并且 tmp 也创建成功,并给予对应权限。接下来,创建用户所需要的目录,命令代码为, sudo -u hdfs 在后面命令中所执行的用户,使用 echo $USER 打印当前执行的用户,结果是当前环境中的 root 。所以在进行 yarn 管理时即在访问 hdfs 时对于每一个不同的用户习惯于给他一个不同的 user 目录,这样该用户操作自己的 user 目录。创建文件夹,输入命令如下。

sudo -u hdfs hadoop fs -mkdir /user/$USER

此时的 $USER 就是 root ,无论执行该命令使用的是谁直接使用 $USER 去打印,出来的是当前该命令上下文中 user 的用户。创建 user 下的 root 用户,使用上图命令的方便之处在于以后可以只使用 user $USER 这一条命令,无论怎么改用户,都是创建对应用户的目录。接下来,将刚才的命令再执行一遍,将 mkdir 修改为 chown $USER ,如下。

sudo -u hdfs hadoop fs -chown $USER/user/$USER

可以进行相应的执行,现在做的就是修改权限,让 MapReduce 能够使用 user  root 目录,因为提交 MapReduce 的任务可能使用 root 提交。 hadoop 中进行用户管理相对来说是稍微有点复杂的。接下来,在 cdh 01上启动两个服务,第一个是 service hadoop-yarn-resourcemanager start 。第二个是 service hadoop-mapreduce-historyserver start 。等待启动,成功后, cdh 01已经完成, cdh 01的作用就只是运行 resourcemanager 。 接下来,进入笔记中,拷贝对应的内容。先拷贝 MapReduce 的内容,如下。

<property>

<name>map reduce.framework.name</ name>

<value>yarn</value>

</property>

<property>

<name>map reduce. jobhistory.address</name>

<value>cdh01 : 10020</ value>

</property>

<property>

<name>mapreduce.jobhistory .webapp.address</name><value>cdh01 : 19888</ value>

</property>

<property>

<name>hadoop.proxyuser. mapred.groups</name>

<value>*</value>

</property>

<property>

<name>hadoop.proxyuser. mapred .hosts</name>

<value>*</ value>

</property>

<property>

<name>yarn. app . mapreduce.am.staging-dir</name>

<value>/user</value>

</property>

在 cdh 02中, vi /etc/hadoop/conf/mapred-site.xml 。直接在< configuration >和< /configuration >中粘贴内容。同理,在 cdh 03中也进行拷贝,完成后保存并退出。接着修改 yarn 的配置文件,拷贝内容如下。

<property>

<name>yarn.resourcemanager.hostname</ name>

<value>cdh01</ value>

</property>

<property>

<name>yarn . application . classpath</name>

<value>

$HADOOP_CONF_DIR,

$HADOOP_COMMON_HOME/* ,$HADOOP_COMMON_HOME/lib/*,

$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,

$HADOOP_MAPRED_HOME/* ,$HADOOP_MAPRED_HOME/lib/*,

$HADOOP_YARN_HOME/* ,$HADOOP_YARN_HOME/lib/*

</ value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.nodemanager .local-dirs</name>

<value>file:/l/var/lib/hadoop-yarn/cache/${user.name}/nm-local-dir</value>

</property>

<property>

<name>yarn.nodemanager.log-dirs</name>

<value>file: ///var/log/hadoop-yarn/containers</value>

</property>

<property>

<name>yarn . log.aggregation-enable</ name>

<value>true</value>

</property>

<property>

<name>yarn.nodemanager . remote-app-log-dir</name>

<value>hdfs:///var/log/hadoop- yarn/apps</value>

</propertye>

进入 cdh 03 中, vi /etc/hadoop/conf/yarn-site.xml ,删除< configuration >和< /configuration >中的内容,粘贴对应的内容完成后, wq 退出保存。同理,修改 cdh 02中的内容。接下来,复制代码如下,主要是为了创建所需要的目录。

mkdir -p/var/lib/hadoop-yarn/cache

mkdir -p/var/log/hadoop-yarn/ containers

mkdir -p/var/log/hadoop- yarn/apps

回到 cdh 02中,进行粘贴执行,完成后,在 cdh 03上粘贴,因为目录需要在所有机器上创建。切回笔记,去指定刚才所创建目录的权限,复制代码如下。

chown -R yarn:yarn /var/lib/hadoop-yarn/cache /var/log/hadoop-yarn/containers/var/log/hadoop- yarn/apps

在 cdh 02和03上粘贴执行。回到笔记当中, hdfs 的操作只需要做一次,接下来,启动 yarn ,在从节点中启动 NodeManager 复制 service hadoop-yarn-nodemanager start ,进行粘贴。整个搭建过程呢还是相对比较简单的,大家以后在进行搭建的时完全可以参考笔记来一步一步的直接搭建完成,最终的程序能用即可。这时整个的搭建的已经完成,输入 jps 查看,从节点里有 nodemanager 、 DataNode 、 zookeeper 。在 cdh 03上, jps 也会发现 nodemanager 、 DataNode 、 zookeeper 服务。

image.png

在 cdh 01中,运行了 namenode 、 jobhistoryserver 、 zookeeper 、 secondarynamenode 、 resourcemanager 都没有问题,如下图。

image.png

到此为止,整个 hadoop 已经搭建完成。如果搭建时遇到什么问题直接去查、去找,总能找到解决方案。

相关文章
|
9天前
|
资源调度 分布式计算 Hadoop
YARN(Hadoop操作系统)的架构
本文详细解释了YARN(Hadoop操作系统)的架构,包括其主要组件如ResourceManager、NodeManager和ApplicationMaster的作用以及它们如何协同工作来管理Hadoop集群中的资源和调度作业。
27 3
YARN(Hadoop操作系统)的架构
|
9天前
|
资源调度 分布式计算 Hadoop
使用YARN命令管理Hadoop作业
本文介绍了如何使用YARN命令来管理Hadoop作业,包括查看作业列表、检查作业状态、杀死作业、获取作业日志以及检查节点和队列状态等操作。
17 1
使用YARN命令管理Hadoop作业
|
9天前
|
分布式计算 资源调度 Hadoop
Hadoop YARN资源管理-容量调度器(Yahoo!的Capacity Scheduler)
详细讲解了Hadoop YARN资源管理中的容量调度器(Yahoo!的Capacity Scheduler),包括队列和子队列的概念、Apache Hadoop的容量调度器默认队列、队列的命名规则、分层队列、容量保证、队列弹性、容量调度器的元素、集群如何分配资源、限制用户容量、限制应用程序数量、抢占申请、启用容量调度器以及队列状态管理等方面的内容。
26 3
|
9天前
|
分布式计算 资源调度 Hadoop
Hadoop YARN资源管理-公平调度器(Fackbook的Fair Scheduler)
详细介绍了Hadoop YARN资源管理中的公平调度器(Fair Scheduler),包括其概述、配置、队列结构、以及如何将作业提交到指定队列,展示了公平调度器如何通过分配文件(fair-scheduler.xml)来控制资源分配,并提供了配置示例和如何通过命令行提交作业到特定队列的方法。
25 0
Hadoop YARN资源管理-公平调度器(Fackbook的Fair Scheduler)
|
11天前
|
图形学 数据可视化 开发者
超实用Unity Shader Graph教程:从零开始打造令人惊叹的游戏视觉特效,让你的作品瞬间高大上,附带示例代码与详细步骤解析!
【8月更文挑战第31天】Unity Shader Graph 是 Unity 引擎中的强大工具,通过可视化编程帮助开发者轻松创建复杂且炫酷的视觉效果。本文将指导你使用 Shader Graph 实现三种效果:彩虹色渐变着色器、动态光效和水波纹效果。首先确保安装最新版 Unity 并启用 Shader Graph。创建新材质和着色器图谱后,利用节点库中的预定义节点,在编辑区连接节点定义着色器行为。
45 0
|
19天前
|
资源调度 分布式计算 算法
【揭秘Yarn调度秘籍】打破资源分配的枷锁,Hadoop Yarn权重调度全攻略!
【8月更文挑战第24天】在大数据处理领域,Hadoop Yarn 是一种关键的作业调度与集群资源管理工具。它支持多种调度器以适应不同需求,默认采用FIFO调度器,但可通过引入基于权重的调度算法来提高资源利用率。该算法根据作业或用户的权重值决定资源分配比例,权重高的可获得更多计算资源,特别适合多用户共享环境。管理员需在Yarn配置文件中启用特定调度器(如CapacityScheduler),并通过设置队列权重来实现资源的动态调整。合理配置权重有助于避免资源浪费,确保集群高效运行,满足不同用户需求。
31 3
|
19天前
|
资源调度 分布式计算 Hadoop
揭秘Hadoop Yarn背后的秘密!它是如何化身‘资源大师’,让大数据处理秒变高效大戏的?
【8月更文挑战第24天】在大数据领域,Hadoop Yarn(另一种资源协调者)作为Hadoop生态的核心组件,扮演着关键角色。Yarn通过其ResourceManager、NodeManager、ApplicationMaster及Container等组件,实现了集群资源的有效管理和作业调度。当MapReduce任务提交时,Yarn不仅高效分配所需资源,还能确保任务按序执行。无论是处理Map阶段还是Reduce阶段的数据,Yarn都能优化资源配置,保障任务流畅运行。此外,Yarn还在Spark等框架中展现出灵活性,支持不同模式下的作业执行。未来,Yarn将持续助力大数据技术的发展与创新。
27 2
|
19天前
|
资源调度 分布式计算 Hadoop
揭秘Hadoop Yarn三大调度器:如何玩转资源分配,实现高效集群管理?
【8月更文挑战第24天】Hadoop YARN(Another Resource Negotiator)是一款强大的集群资源管理工具,主要负责高效分配及管理Hadoop集群中的计算资源。本文深入剖析了YARN的三种调度器:容量调度器(Capacity Scheduler)、公平调度器(Fair Scheduler)以及FIFO调度器,并通过具体的配置示例和Java代码展示了它们的工作机制。
30 2
|
11天前
|
图形学 C# 开发者
Unity粒子系统全解析:从基础设置到高级编程技巧,教你轻松玩转绚丽多彩的视觉特效,打造震撼游戏画面的终极指南
【8月更文挑战第31天】粒子系统是Unity引擎的强大功能,可创建动态视觉效果,如火焰、爆炸等。本文介绍如何在Unity中使用粒子系统,并提供示例代码。首先创建粒子系统,然后调整Emission、Shape、Color over Lifetime等模块参数,实现所需效果。此外,还可通过C#脚本实现更复杂的粒子效果,增强游戏视觉冲击力和沉浸感。
30 0
|
14天前
|
SQL 分布式计算 Hadoop
centos7通过CDH部署Hadoop
centos7通过CDH部署Hadoop

相关实验场景

更多