Map/Reduce与Yarn集群的搭建

本文深入解析MapReduce原理,包括MapTask与ReduceTask的工作流程,以及Hadoop2中Yarn资源调度器的配置与作用。阐述了MapReduce如何处理大规模数据集,以及Yarn如何优化任务调度。

Map/Reduce原理

       Map/Reduce是大数据运算中的一个并行计算框架,用于在集群上并行处理大量数据(TB级数据)。

       原理图如图所示:

Map Task原理

       在HDFS存储数据以Block块的形式储存,而一个Input Spilt块儿约等于一个Block块儿,因为文件存入时是以字节拆分的,所以每个Input Spilt末尾如果信息不全就会到下个Block中将信息取出合并;
       之后就进行Map Task操作,将每一行数据处理,并根据需求封装Key与Value值,每一个;
       在通过Map Task操作时会将每一条数据打上一个标签,该标签是为了让每条数据知道将会到哪个Reduce中去执行,一般数值 = Key的HashCode 与 Reduce Task的总数 取模,每一个字符串都有一个独一无二的HashCode ,该标签一般称为分区号;
       之后会将数据一条一条存入到默认大小为100M(可自定义),位置在内存上的一个buffer块,当写入数据超过总大小的80%时会封锁该buffer,同时会根据分区号将数据进行小聚合(combiner)与排序(sort),目的是将相同分区的数据放在一起并排序,提高效率。而超出的数据将会溢写到磁盘中,每一次溢写都会产生一个小文件;
       Map Task计算完成后会将磁盘中的小文件合并成一个大文件,在合并的时候使用归并排序将所有小文件合并为一个有序的大文件,所有Map Task都会进行以上操作并产生一个分区内部有序的大文件;

Reduce Task原理

       去Map端读取相应分区的数据,将分区数据写到70%内存中,当写入超过内存的66%时将会封锁并排序,最后将溢写产生的磁盘小文件合并并排序;
注意:所有排序都是为了提高分组的效率

Hadoop 2 yarn资源调度器

       在框架运行中需要先向ResourceManager发送请求,请求启动一个Application用于任务调度,ResourceManager就会从其他服务器中随机选一台创建容器container用于ApplicationMaster;

       之后ApplicationMaster从客户端Client拿到生成列表后会向ResourceManager申请资源,ResourceManager就会在存放相应数据的DataNode节点下分配容器container用于Map Task,之后将结果返回给客户端Client;

       因为ApplicationMaster挂掉,整个集群就会停止,所以ApplicationMaster将会将自身状态实时汇报给ResourceManager。ApplicationMaster一旦挂掉,ResourceManager就会重新启动ApplicationMaster,所以ResourceManager就会有很大压力,所以我们需要有一个备用ResourceManager和对ResourceManager实时监控的zooKeeper集群,防止单点错误。

配置Map/Reduce

节点设计

详细步骤

       1. 在之前HA完全分布式的基础在四台虚拟机上修改mapred-site.xml,将一下代码添加到<configuration>标签中:
<property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>

       2. 修改yarn-site.xml,将一下代码添加到<configuration>标签中:
<property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
</property>
<property>
       <name>yarn.resourcemanager.ha.enabled</name>
       <value>true</value>
</property>
<property>
       <name>yarn.resourcemanager.cluster-id</name>
       <value>cluster1</value>
</property>
<property>
       <name>yarn.resourcemanager.ha.rm-ids</name>
       <value>rm1,rm2</value>
</property>
<property>
       <name>yarn.resourcemanager.hostname.rm1</name>
       <value>Lucian-01</value>
</property>
<property>
       <name>yarn.resourcemanager.hostname.rm2</name>
       <value>Lucian-02</value>
</property>
<property>
       <name>yarn.resourcemanager.zk-address</name>
       <value>Lucian-02:2181,Lucian-03:2181,Lucian-04:2181</value>
</property>

       3. 在Lucian-02、03、04节点中控制台输入==./zkServer.sh start==开启ZooKeeper集群

       4. 在Lucian-01节点中控制台输入start-dfs.sh开启hadoop集群,并在01节点中输入start-yarn.sh开启yarn资源控制器,在02节点中输入yarn-daemon.sh start resourcemanager开启备用ResourceManager;

       5. 在浏览器中输入Lucian-01:8088查看是否配置成功。

基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了大量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析仿真验证相结合。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值