有做数学题的网站吗网站专题二级页怎么做
news/
2025/10/4 14:09:28/
文章来源:
有做数学题的网站吗,网站专题二级页怎么做,网站 需求,网站设计的硬件第 1 章#xff1a;Yarn资源调度器
思考#xff1a; 1、如何管理集群资源#xff1f; 2、如何给任务合理分配资源#xff1f; Yarn是一个资源调度平台#xff0c;负责为运算程序提供服务器运算资源#xff0c;相当于一个分布式的操作系统平台#xff0c;而MapReduce等运…第 1 章Yarn资源调度器
思考 1、如何管理集群资源 2、如何给任务合理分配资源 Yarn是一个资源调度平台负责为运算程序提供服务器运算资源相当于一个分布式的操作系统平台而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。
1.1 Yarn基础架构
YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。
1.2 Yarn工作机制
1、MR程序提交到客户端所在的节点 2、YarnRunner向ResourceManager申请一个Application 3、RM将该应用程序的资源路径返回给YarnRunner 4、该程序将运行所需资源提交到HDFS上 5、程序资源提交完毕后申请运行mrAppMaster 6、RM将用户的请求初始化成一个Task 7、其中一个NodeManager领取到Task任务 8、该NodeManager创建容器Container并产生MRAppmaster 9、Container从HDFS上拷贝资源到本地 10、MRAppmaster向RM申请运行MapTask资源 11、RM将运行MapTask任务分配给另外两个NodeManager另两个NodeManager分别领取任务并创建容器 12、MR向两个接收到任务的NodeManager发送程序启动脚本这两个NodeManager分别启动MapTaskMapTask对数据分区排序 13、MrAppMaster等待所有MapTask运行完毕后向RM申请容器运行ReduceTask 14、ReduceTask向MapTask获取相应分区的数据 15、程序运行完毕后MR向RM神奇注销自己 ##1.3 作业提交全过程
1、作业提交 1Client调用job.waitForCompletion方法向整个集群提交MapReduce作业 2Client向RM申请一个作业id 3RM给Client返回该job资源的提交路径和作业id 4Client提交jar包、切片信息和配置文件到指定的资源提交路径 5Client提交完资源后向RM申请运行MrAppMaster 2、作业初始化 1当RM收到Client的请求后将该job添加到容器调度器中 2某一个空闲的NM领取到该Job 3该NM创建Container并产生MRAppmaster 4下载Client提交的资源到本地 3、任务分配 1MrAppMaster向RM申请运行多个MapTask任务资源 2RM将运行MapTask任务分配给另外两个NodeManager另两个NodeManager分别领取任务并创建容器 4、任务运行 1MR向两个接收到任务的NodeManamger发送程序启动脚本这两个NodeManager分别启动MapTaskMapTask对数据分区排序 2MrAppMaster等待所有MapTask运行完毕后向RM申请容器运行ReduceTask 3ReduceTask向MapTask获取相应分区的数据 4程序运行完毕后MR回想RM申请注销自己 5、进程和状态更新 YARN中的任务将其进度和状态包括 counter返回给应用管理器客户端每秒通过mapreduce.client.progressmonitor.pollinterval 设置向应用管理器请求进度更新展示给用户 6、作业完成 除了向应用管理器请求作业进度外客户端每5秒都会通过调用waitForCompletion()来检查作业是否完成。时间间隔可以通过mapreduce.client.completion.pollinterval来设置。作业完成之后应用管理器和Container会清理工作状态。作业的信息会被作业历史服务器存储以备之后用户核查。
1.4 Yarn调度器和调度算法
目前Hadoop作业调度器主要有三种FIFO、容量Capacity Scheduler和公平Fair Scheduler。Apache Hadoop默认的资源调度器是Capacity Scheduler。 CDH框架默认调度器是Fair Scheduler。 具体设置详见yarn-default.xml文件
propertydescriptionThe class to use as the resource scheduler./descriptionnameyarn.resourcemanager.scheduler.class/name
valueorg.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler/value
/property1.4.1 先进先出调度器FIFO
FIFO调度器First In First Out单队列根据提交任务的先后顺序先来先服务。
1.4.2 容量调度器Capacity Scheduler
Capacity Scheduler是Yahoo开发的多用户调度器
容量调度器特点 1、多队列每个队列可配置一定的资源量每个队列采用FIFO调度策略 2、容量保证管理员可为每个队列设置资源最低保证和资源使用上限 3、灵活性如果一个队列中的资源有剩余可以暂时共享给那些需要资源的队列而一旦该队列有新的应用程序提交则其它队列借调的资源会归还给该队列 4、多租户 支持多用户共享集群和多应用程序同时运行。 为了防止同一个用户的作业独占队列中的资源该调度器会对同一用户提交的作业所占资源量进行限定。
1.4.3 公平调度器Fair Scheduler
Fair Scheduler是Facebook开发的多用户调度器。 公平调度器队列资源分配方式 1、FIFO策略 公平调度器每个队列资源分配策略如果选择FIFO的话此时公平调度器相当于上面讲过的容器调度器。 2、Fair策略 是一种基于最大最小公平算法实现的资源多路复用方式默认情况下每个队列内部采用该方式分配资源。如果一个队列中有两个应用程序同时运行则每个应用程序可得到1/2的资源如果三个应用程序同时运行则每个应用程序可得到1/3的资源。 具体资源分配流程和容器调度器一致 1选择队列 2选择作业 3选择容器 以上三步每一步都是按照公平策略分配资源 实际最小资源份额mindshareMin资源需求量配置的最小资源 是否饥饿isNeedy资源使用量mindshare(实际最小资源份额) 资源分配比minShareRatio资源使用量/Maxmindshare,1 资源使用权重比useToWeightRadio资源使用量/权重 公平调度器资源分配算法 公平调度器队列资源分配方式
第 2 章Yarn案例
注调整下列参数之前尽量拍摄Linux快照否则后续的案例还需要重新准备集群。
2.1 Yarn生产环境核心参数配置案例
1、需求从1G数据中统计每个单词出现次数。服务器3台每台配置4G内存4核CPU4线程。 2、需求分析 1G/128m8个MapTask1个ReduceTask1个mrAppMaster 平均每个节点运行10个/3台~3个任务4 3 3
!-- 选择调度器默认容量 --
propertydescriptionThe class to use as the resource scheduler./descriptionnameyarn.resourcemanager.scheduler.class/namevalueorg.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler/value
/property!-- ResourceManager处理调度器请求的线程数量,默认50如果提交的任务数大于50可以增加该值但是不能超过3台 * 4线程 12线程去除其他应用程序实际不能超过8 --
propertydescriptionNumber of threads to handle scheduler interface./descriptionnameyarn.resourcemanager.scheduler.client.thread-count/namevalue8/value
/property!--
是否将虚拟核数当作CPU核数默认是false采用物理CPU核数
--
propertydescriptionFlag to determine if logical processors(such ashyperthreads) should be counted as cores. Only applicable on Linuxwhen yarn.nodemanager.resource.cpu-vcores is set to -1 andyarn.nodemanager.resource.detect-hardware-capabilities is true./descriptionnameyarn.nodemanager.resource.count-logical-processors-as-cores/namevaluefalse/value
/property!-- 是否让yarn自动检测硬件进行配置默认是false如果该节点有很多其他应用程序建议手动配置。如果该节点没有其他应用程序可以采用自动 --
propertydescriptionEnable auto-detection of node capabilities such asmemory and CPU./descriptionnameyarn.nodemanager.resource.detect-hardware-capabilities/namevaluefalse/value
/property!--
Core转成Vcore的个数虚拟核数和物理核数乘数默认是1.0
hadoop中的vcore不是真正的core通常vcore的个数设置为逻辑cpu个数的1~5倍。
--
propertydescriptionMultiplier to determine how to convert phyiscal cores to vcores. This value is used if
yarn.nodemanager.resource.cpu-vcores is set to -1(which implies auto-calculate vcores) and
yarn.nodemanager.resource.detect-hardware-capabilities is set to true. The number of vcores will be calculated as number of CPUs * multiplier./descriptionnameyarn.nodemanager.resource.pcores-vcores-multiplier/namevalue1.0/value
/property!-- NodeManager使用内存数默认8G修改为4G内存 --
propertydescriptionAmount of physical memory, in MB, that can be allocated for containers. If set to -1 andyarn.nodemanager.resource.detect-hardware-capabilities is true, it isautomatically calculated(in case of Windows and Linux).In other cases, the default is 8192MB./descriptionnameyarn.nodemanager.resource.memory-mb/namevalue4096/value
/property!-- nodemanager的CPU核数不按照硬件环境自动设定时默认是8个修改为4个 --
propertydescriptionNumber of vcores that can be allocatedfor containers. This is used by the RM scheduler when allocatingresources for containers. This is not used to limit the number ofCPUs used by YARN containers. If it is set to -1 andyarn.nodemanager.resource.detect-hardware-capabilities is true, it isautomatically determined from the hardware in case of Windows and Linux.In other cases, number of vcores is 8 by default./descriptionnameyarn.nodemanager.resource.cpu-vcores/namevalue4/value
/property!-- 容器最小内存默认1G --
propertydescriptionThe minimum allocation for every container request at the RM in MBs. Memory requests lower than this will be set to the value of this property. Additionally, a node manager that is configured to have less memory than this value will be shut down by the resource manager./descriptionnameyarn.scheduler.minimum-allocation-mb/namevalue1024/value
/property!-- 容器最大内存默认8G修改为2G --
propertydescriptionThe maximum allocation for every container request at the RM in MBs. Memory requests higher than this will throw an InvalidResourceRequestException./descriptionnameyarn.scheduler.maximum-allocation-mb/namevalue2048/value
/property!-- 容器最小CPU核数默认1个 --
propertydescriptionThe minimum allocation for every container request at the RM in terms of virtual CPU cores. Requests lower than this will be set to the value of this property. Additionally, a node manager that is configured to have fewer virtual cores than this value will be shut down by the resource manager./descriptionnameyarn.scheduler.minimum-allocation-vcores/namevalue1/value
/property!-- 容器最大CPU核数默认4个修改为2个 --
propertydescriptionThe maximum allocation for every container request at the RM in terms of virtual CPU cores. Requests higher than this will throw anInvalidResourceRequestException./descriptionnameyarn.scheduler.maximum-allocation-vcores/namevalue2/value
/property!-- 虚拟内存检查默认打开修改为关闭 --
propertydescriptionWhether virtual memory limits will be enforced forcontainers./descriptionnameyarn.nodemanager.vmem-check-enabled/namevaluefalse/value
/property!-- 虚拟内存和物理内存设置比例,默认2.1 倍--
propertydescriptionRatio between virtual memory to physical memory when setting memory limits for containers. Container allocations are expressed in terms of physical memory, and virtual memory usage is allowed to exceed this allocation by this ratio./descriptionnameyarn.nodemanager.vmem-pmem-ratio/namevalue2.1/value
/property
关闭虚拟内存检查原因 4、分发配置 注意如果集群的硬件资源不一致要每个NodeManager单独配置。 5、重启集群
[atguiguhadoop102 hadoop-3.1.3]$ sbin/stop-yarn.sh
[atguiguhadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh
6、执行WordCount程序
[atguiguhadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output7、观察Yarn任务执行页面
http://hadoop103:8088/cluster/apps2.2 容器调度器多队列提交案例
1、在生产环境怎么创建队列 1调度器默认就1个default队列不能满足生产要求 2按照框架hive/spark/flink每个框架的任务放入指定的队列企业用的不是特别多 3按照业务模块登录注册、购物车、下单、业务部门1、业务部门2 2、创建多队列的好吃 1、因为担心员工不小心写递归死循环代码把所有资源都耗尽 2、实现任务的降级使用特殊时期保证重要的任务队列资源充足
2.2.1 需求
需求1default队列占总内存的40%最大资源容器占总资源60%hive队列占总内存的60%最大资源容量占总资源80%。
2.2.2 配置多队列的容器调度器
1、在capacity-scheduler.xml中配置如下 1修改如下配置
!-- 指定多队列增加hive队列 --
propertynameyarn.scheduler.capacity.root.queues/namevaluedefault,hive/valuedescriptionThe queues at the this level (root is the root queue)./description
/property!-- 降低default队列资源额定容量为40%默认100% --
propertynameyarn.scheduler.capacity.root.default.capacity/namevalue40/value
/property!-- 降低default队列资源最大容量为60%默认100% --
propertynameyarn.scheduler.capacity.root.default.maximum-capacity/namevalue60/value
/property
2为新加队列添加必要属性
!-- 指定hive队列的资源额定容量 --
propertynameyarn.scheduler.capacity.root.hive.capacity/namevalue60/value
/property!-- 用户最多可以使用队列多少资源1表示所有 --
propertynameyarn.scheduler.capacity.root.hive.user-limit-factor/namevalue1/value
/property!-- 指定hive队列的资源最大容量 --
propertynameyarn.scheduler.capacity.root.hive.maximum-capacity/namevalue80/value
/property!-- 启动hive队列 --
propertynameyarn.scheduler.capacity.root.hive.state/namevalueRUNNING/value
/property!-- 哪些用户有权向队列提交作业 --
propertynameyarn.scheduler.capacity.root.hive.acl_submit_applications/namevalue*/value
/property!-- 哪些用户有权操作队列管理员权限查看/杀死 --
propertynameyarn.scheduler.capacity.root.hive.acl_administer_queue/namevalue*/value
/property!-- 哪些用户有权配置提交任务优先级 --
propertynameyarn.scheduler.capacity.root.hive.acl_application_max_priority/namevalue*/value
/property!-- 任务的超时时间设置yarn application -appId appId -updateLifetime Timeout
参考资料https://blog.cloudera.com/enforcing-application-lifetime-slas-yarn/ --!-- 如果application指定了超时时间则提交到该队列的application能够指定的最大超时时间不能超过该值。
--
propertynameyarn.scheduler.capacity.root.hive.maximum-application-lifetime/namevalue-1/value
/property!-- 如果application没指定超时时间则用default-application-lifetime作为默认值 --
propertynameyarn.scheduler.capacity.root.hive.default-application-lifetime/namevalue-1/value
/property
2、分发配置文件 3、重启Yarn或者执行 yarn rmadmin-refreshQueues刷新队列就可以看到两条队列
[atguiguhadoop102 hadoop-3.1.3]$ yarn rmadmin -refreshQueues2.2.3 向Hive队列提交任务
1、hadoop jar 的方式
[atguiguhadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount -D mapreduce.job.queuenamehive /input /output注-D表示运行时改变参数值 2、打jar包的方式 默认的任务提交都是提交到default队列的。如果希望向其它队列提交任务需要在Driver中声明
public class WcDrvier {public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {Configuration conf new Configuration();conf.set(mapreduce.job.queuename,hive);//1. 获取一个Job实例Job job Job.getInstance(conf);。。。 。。。//6. 提交Jobboolean b job.waitForCompletion(true);System.exit(b ? 0 : 1);}
}
这样这个任务在集群提交时就会提交到hive队列
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927208.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!