当前位置: 首页 > news >正文

锦州 做网站平台营销型网站建设

锦州 做网站,平台营销型网站建设,dw做的网站 图片的路径,企业策划书格式及范文目录 Hadoop_HDFS、Hadoop_MapReduce、Hadoop_Yarn 实践 (三)一、Hadoop_HDFS二、Hadoop_MapReduce三、Hadoop_Yarn1、Yarn资源调度1.1、基础架构1.2、Yarn的工作调度机制#xff08;Job提交过程#xff09;1.3、Yarn 调度器和调度算法1.3.1、先进先出调度器#xff08;FIFO… 目录 Hadoop_HDFS、Hadoop_MapReduce、Hadoop_Yarn 实践 (三)一、Hadoop_HDFS二、Hadoop_MapReduce三、Hadoop_Yarn1、Yarn资源调度1.1、基础架构1.2、Yarn的工作调度机制Job提交过程1.3、Yarn 调度器和调度算法1.3.1、先进先出调度器FIFO1.3.2、容量调度器CapacityScheduler默认1.3.3、公平调度器Fair Scheduler 1.4、Yarn常用命令1.5、Yarn生产环境核心参数配置 2、Yarn案例实操2.1、配置多队列的容量调度器2.1.1、**需求**2.1.2、**向配置的Hive队列提交任务** 2.2、公平调度器案例2.2.1、需求2.2.2、配置多队列的公平调度器2.2.3、分发配置并重启Yarn2.2.4、测试提交任务 3、Yarn 的 Tool 接口案例3.1、需求 自己写的程序也可以动态修改参数。编写 Yarn 的 Tool 接口。1、新建Maven项目YarnDemopom如下2、创建包名 com.leojiang.yarn3、创建类 WordCount 并实现 Tool 接口4、创建WordCountDriver类5、打包6、拷贝jar包到Linux服务器上7、运行测试 4、总结1、Yarn的工作机制2、Yarn的调度器3、开发需要掌握的重点 END Hadoop_HDFS、Hadoop_MapReduce、Hadoop_Yarn 实践 (三) 一、Hadoop_HDFS 二、Hadoop_MapReduce 三、Hadoop_Yarn Yarn 是一个资源调度平台负责为运算程序提供服务器运算资源相当于一个分布式的操作系统平台。 而 MapReduce 等运算程序则相当于运行在操作系统之上的应用程序。 1、Yarn资源调度 1.1、基础架构 1.2、Yarn的工作调度机制Job提交过程 提交过程—Yarn 提交过程—MapReduce 1.3、Yarn 调度器和调度算法 目前Hadoop 作业调度器主要有三种先进先出调度器FIFO、容量调度器Capacity Scheduler和公平调度器Fair Scheduler。 Apache Hadoop3.3.1 默认的资源调度器是 Capacity Scheduler。CDH 框架默认调度器是 Fair Scheduler。 yarn-default.xml 文件查看默认参数 propertydescriptionThe class to use as the resource scheduler./descriptionnameyarn.resourcemanager.scheduler.class/namevalueorg.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler/value/property1.3.1、先进先出调度器FIFO 优点简单易懂 缺点不支持多队列并发生产环境很少使用 1.3.2、容量调度器CapacityScheduler默认 1、CapacityScheduler 是 Yahaoo 开发的多以用户调度器。 多队列每个队列可配置一定的资源量每个队列采用 FIFO 调度策略。容量保证管理员可为每个队列设置资源最低保证和资源使用上限。灵活性如果一个队列中的资源有剩余可以暂时共享给哪些需要资源的队列而一旦该队列有新的应用程序提交则其他队列借调的资源会归还给该队列。多租户 支持多用户共享集群和多应用程序同时运行。 为了防止同一个用户的作业独占队列中的资源该调度器会对统一用户提交的作业所占资源进行限定。 2、容量调度器资源分配算法 1.3.3、公平调度器Fair Scheduler 1、Fair Scheduler 是 Facebook 开发的多用户调度器。 1与容量调度器相同点 多队列支持多队列多作业容量保证管理员可以为每个队列设置资源最低保证和资源使用上限灵活性如果一个队列中的资源有剩余可以暂时共享给哪些需要资源的队列而一旦该队列有新的应用程序提交则其他队列借调的资源会归还给该队列多租户支持多用户共享集群和多应用程序同时运行为了防止同一个用户的作业独占队列中的资源该调度器会对统一用户提交的作业所占资源进行限定。 2与容量调度器不同点 核心调度策略不同 容量调度器优先选择资源利用率低的队列 公平调度器优先选择对资源的缺额比例大的 每个队列可以单独设置资源分配方式 容量调度器FIFO、DRF 公平调度器FIFO、FAIR(默认)、DRF 1 、公平调度器缺额 公平调度器设计目标是在时间尺度上所有作业获得公平的资源。某一时刻一个作业应获资源和实际获取资源的差距叫 缺额 调度器会优先为缺额大的作业分配资源 2、公平调度器分配方式设置为FIFO 公平调度每个队列资源分配策略如果选择 FIFO 的话此时公平调度器相当于上面讲过的容量调度器。 3、公平调度器分配方式设置为FAIR默认 4、公平调度器分配方式设置为FDRF策略 2、公平调度器资源分配算法Fair Scheduler 1.4、Yarn常用命令 hadoop-3.3.1]$ cd /var/opt/hadoopSoftware/hadoop-3.3.1# 运行一个任务 hadoop-3.3.1]$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /tinput /toutput1查看任务 1、使用监控页面查看 # YARN的ResourceManager http://hadoop2:80882、使用Yarn命令查看 # 1、列出所有 Application $ yarn application -list# 2、根据 Application 状态过滤yarn application-list-appStates所有状态ALL、NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED $ yarn application -list -appStates FINISHED# 3、Kill 掉 Application $ yarn application -kill Application-Id# 4、查询 Application 日志 $ yarn logs -applicationId Application-Id# 5、查询 Container 日志contaiinerId 可以通过步骤 6、进行查看 $ yarn logs -applicationId ApplicationId -contaiinerId ContainerId# 6、查看尝试运行的任务 $ yarn applicationattempt -list ApplicationId# 7、打印 ApplicationAttempt 状态 $ yarn applicationattempt -status ApplicationAttemptId# 8、查看当前app一共有多少个容器 $ yarn container -list ApplicationAttemptId# 9、查看当前 Container 状态 $ yarn container -status ContainerId# 10、查看node节点状态 $ yarn node -list -all# 11、加载队列配置动态更新yarn配置 $ yarn rmadmin -refreshQueues# 12、打印队列信息 $ yarn queue -status QueueName eg: yarn queue -status default Queue Information : Queue Name : defaultState : RUNNINGCapacity : 100.00%Current Capacity : .00%Maximum Capacity : 100.00%Default Node Label expression : DEFAULT_PARTITIONAccessible Node Labels : *Preemption : disabledIntra-queue Preemption : disabled1.5、Yarn生产环境核心参数配置 根据自身服务器容量以及app需求进行配置 # 自定义配置文件位置$HADOOP_HOME/etc/hadoop/yarn-site.xml # 默认配置文件位置$HADOOP_HOME/share/doc/hadoop/hadoop-yarn/hadoop-yarn-common/yarn-default.xml1ResourceManager相关 # 配置调度器默认是容量调度器大公司资源够要求性能好可以选择公平调度器propertynameyarn.resourcemanager.scheduler.class/namevalueorg.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler/value/property# ResourceManager 处理调度器接口的线程数 默认50propertynameyarn.resourcemanager.scheduler.client.thread-count/namevalue50/value/property2NodeManager相关 # 是否启用自动检测节点功能让yarn自己检查硬件进行配置 默认falsepropertynameyarn.nodemanager.resource.detect-hardware-capabilities/namevaluefalse/value/property# 是否将虚拟核数当作CPU核数 默认falsepropertydescriptionFlag to determine if logical processors(such as hyperthreads) should be counted as cores. Only applicable on Linux when yarn.nodemanager.resource.cpu-vcores is set to -1 and yarn.nodemanager.resource.detect-hardware-capabilities is true./descriptionnameyarn.nodemanager.resource.count-logical-processors-as-cores/namevaluefalse/value/property# 默认为1表示一个物理cpu当做一个vcore使用如果我们已经预留给了服务器cpu的话那我们这里可以调整问题2或者3propertydescriptionMultiplier 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使用的内存 默认8GpropertydescriptionAmount of physical memory, in MB, that can be allocated for containers. If set to -1 and yarn.nodemanager.resource.detect-hardware-capabilities is true, it is automatically calculated(in case of Windows and Linux). In other cases, the default is 8192MB./descriptionnameyarn.nodemanager.resource.memory-mb/namevalue-1/value/property# NodeManager 为系统保留多少内存为非yarn进程保留的物理内存量单位为MBpropertydescriptionAmount of physical memory, in MB, that is reserved for non-YARN processes. This configuration is only used if yarn.nodemanager.resource.detect-hardware-capabilities is set to true and yarn.nodemanager.resource.memory-mb is -1. If set to -1, this amount is calculated as 20% of (system memory - 2*HADOOP_HEAPSIZE)/descriptionnameyarn.nodemanager.resource.system-reserved-memory-mb/namevalue-1/value/property# 是否开启 物理内存 检查限制container 默认打开propertydescriptionWhether physical memory limits will be enforced forcontainers./descriptionnameyarn.nodemanager.pmem-check-enabled/namevaluetrue/value/property# 是否开启 虚拟内存 检查限制container 默认打开 一般会关闭虚拟内存检测因为java和centos78在分配虚拟内存是会有些冲突所以一般会关闭这个参数propertydescriptionWhether virtual memory limits will be enforced forcontainers./descriptionnameyarn.nodemanager.vmem-check-enabled/namevaluetrue/value/property# 虚拟内存 与 物理内存比例 默认2.1propertydescriptionRatio 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/property3Container 相关 # 容器的最小内存 默认1GpropertydescriptionThe 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# 容器的最大内存 默认8GpropertydescriptionThe 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/namevalue8192/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个propertydescriptionThe maximum allocation for every container request at the RM in terms of virtual CPU cores. Requests higher than this will throw an InvalidResourceRequestException./descriptionnameyarn.scheduler.maximum-allocation-vcores/namevalue4/value/property修改参数后分发到所有服务器然后重启即可 hadoop1 $ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml# 停止 hadoop1 $ myhadoop stop # 启动 hadoop1 $ myhadoop start2、Yarn案例实操 2.1、配置多队列的容量调度器 在生产环境怎么创建队列 A、调度器默认就1个 default 队列不能满足生产要求。 B、按照框架hive /spark/ flink 每个框架的任务放入指定的队列 (企业用的不是特别多) C、按照业务模块登录注册、购物车、下单、业务部门1、业务部门2 创建多队列的好处 A、因为担心员工不小心写递归死循环代码把所有资源全部耗尽。 B、实现任务的降级使用特殊时期保证重要的任务队列资源充足比如 双11、6.18等 业务部门1重要》业务部门2比较重要》下单一般》购物车一般》登录注册次要 2.1.1、需求 需求1default队列占总内存的40%最大资源容量占总资源60% ​ hive队列占总内存的60%最大资源容量占总资源80%。 在文件位置$HADOOP_HOME/etc/hadoop/capacity-scheduler.xml 中配置如下 !-- 指定多队列增加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/property2为新加队列添加必要属性!-- 为新加队列添加必要属性指定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 分发配置文件然后重启 Yarn 或者执行yarn rmadmin -refreshQueues刷新队列http://hadoop2:8088 就可以看到两条队列 hadoop1 $ xsync $HADOOP_HOME/etc/hadoop/capacity-scheduler.xml hadoop1 $ yarn rmadmin -refreshQueues2.1.2、向配置的Hive队列提交任务 1hadoop jar 的方式 # 修改提交任务的方式默认是default。eg向Hive队列提交任务 hadoop-3.3.1]$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount -D mapreduce.job.queuenamehive /input /output22打 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);} }需求2配置队列优先级 容量调度器支持任务优先级的配置在资源紧张时优先级高的任务将优先获取资源。默认情况Yarn将所有任务的优先级限制为0若想使用任务的优先级功能须开放该限制。 1修改yarn-site.xml文件增加以下参数 hadoop1 $ vim $HADOOP_HOME/etc/hadoop/yarn-site.xml propertynameyarn.cluster.max-application-priority/namevalue5/value /property2同步并重启yarn hadoop1 $ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xmlhadoop2 $ $HADOOP_HOME/sbin/stop-yarn.shhadoop2 $ $HADOOP_HOME/sbin/start-yarn.sh3模拟资源紧张环境可连续提交以下任务直到新提交的任务申请不到资源为止。 hadoop1 hadoop-3.3.1]$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar pi 5 20000004再次重新提交优先级高的任务可以通过yarn监控页面查看任务执行的优先级 http://hadoop2:8088 hadoop2 hadoop-3.3.1]$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar pi -D mapreduce.job.priority5 5 20000005也可以通过以下命令修改 正在执行的任务 的优先级 # yarn application -appID ApplicationID -updatePriority 优先级hadoop-3.3.1]$ yarn application -appID application_1611133087930_0009 -updatePriority 52.2、公平调度器案例 2.2.1、需求 创建两个队列分别是 test 和fancyry以用户所属组命名。期望实现以下效果若用户提交任务时指定队列则任务提交到指定队列运行若未指定队列test 用户提交的任务到 root.group.test 队列运行fancyry提交的任务到 root.group.fancyry 队列运行 (注group为用户所属组)。 公平调度器的配置涉及到两个文件一个是 yarn-site.xml另一个是公平调度器队列分配文件 fair-scheduler.xml (文件名可自定义)。 2.2.2、配置多队列的公平调度器 修改 $HADOOP_HOME/etc/hadoop/yarn-site.xml 文件加入以下参数 propertynameyarn.resourcemanager.scheduler.class/namevalueorg.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler/valuedescription配置使用公平调度器/description/propertypropertynameyarn.scheduler.fair.allocation.file/namevalue/var/opt/hadoopSoftware/hadoop-3.3.1/etc/hadoop/fair-scheduler.xml/valuedescription指明公平调度器队列分配配置文件/description/propertypropertynameyarn.scheduler.fair.preemption/namevaluefalse/valuedescription禁止队列间资源抢占/description/property添加公平调度器文件 fair-scheduler.xml 队列test $HADOOP_HOME/etc/hadoop/fair-scheduler.xml ?xml version1.0? allocations!-- 单个队列中Application Master占用资源的最大比例,取值0-1 企业一般配置0.1 --queueMaxAMShareDefault0.5/queueMaxAMShareDefault!-- 单个队列最大资源的默认值 test atguigu default --queueMaxResourcesDefault4096mb,4vcores/queueMaxResourcesDefault!-- 增加一个队列test --queue nametest!-- 队列最小资源 --minResources2048mb,2vcores/minResources!-- 队列最大资源 --maxResources4096mb,4vcores/maxResources!-- 队列中最多同时运行的应用数默认50根据线程数配置 --maxRunningApps4/maxRunningApps!-- 队列中Application Master占用资源的最大比例服务器性能好的话一般配置0.1就够了 --maxAMShare0.5/maxAMShare!-- 该队列资源权重,默认值为1.0 --weight1.0/weight!-- 队列内部的资源分配策略 --schedulingPolicyfair/schedulingPolicy/queue!-- 增加一个队列 leojiang --queue nameleojiang typeparent!-- 队列最小资源 --minResources2048mb,2vcores/minResources!-- 队列最大资源 --maxResources4096mb,4vcores/maxResources!-- 队列中最多同时运行的应用数默认50根据线程数配置 --maxRunningApps4/maxRunningApps!-- 该队列资源权重,默认值为1.0 --weight1.0/weight!-- 队列内部的资源分配策略 --schedulingPolicyfair/schedulingPolicy/queue!-- 任务队列分配策略,可配置多层规则,从第一个规则开始匹配,直到匹配成功 --queuePlacementPolicy!-- 提交任务时指定队列,如未指定提交队列,则继续匹配下一个规则; false表示如果指定队列不存在,不允许自动创建--rule namespecified createfalse/!-- 提交到root.group.username队列,若root.group不存在,不允许自动创建若root.group.user不存在,允许自动创建 --rule namenestedUserQueue createtruerule nameprimaryGroup createfalse//rule!-- 最后一个规则必须为reject或者default。Reject表示拒绝创建提交失败default表示把任务提交到default队列 --rule namereject //queuePlacementPolicy /allocations tips: maxAMShare限制可用于运行应用程序主节点的队列公平份额的比例。此属性只能用于叶队列。例如如果设置为 1.0f则叶队列中的 AM 最多可以占用 100% 的内存和 CPU 公平份额。值 -1.0f 将禁用此功能并且不会检查 amShare。默认值为 0.5f。 2.2.3、分发配置并重启Yarn hadoop1 $ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml hadoop1 $ xsync $HADOOP_HOME/etc/hadoop/fair-scheduler.xmlhadoop2 $ $HADOOP_HOME/sbin/stop-yarn.shhadoop2 $ $HADOOP_HOME/sbin/start-yarn.sh2.2.4、测试提交任务 1、页面刷新可以看到新的调度器 # YARN的ResourceManager http://hadoop2:80882、提交任务时指定队列按照配置规则任务会到指定的 root.test 队列 hadoop2 hadoop-3.3.1]$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar pi -D mapreduce.job.queuenameroot.test 1 13、提交任务时不指定队列按照配置规则任务会到root队列用哪个用户登录运行就在那个用户下 hadoop2 hadoop-3.3.1]$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar pi 1 13、Yarn 的 Tool 接口案例 回顾World count 案例 hadoop2 hadoop-3.3.1]$ hadoop jar helloworld-maven-java.jar com.leojiang.mapreduce.wordcount2.WordCountDriver /input /output期望可以动态传参结果报错误认为是第一个输入参数。 hadoop2 hadoop-3.3.1]$ hadoop jar helloworld-maven-java.jar com.leojiang.mapreduce.wordcount2.WordCountDriver -Dmapreduce.job.queuenameroot.test /input /output23.1、需求 自己写的程序也可以动态修改参数。编写 Yarn 的 Tool 接口。 1、新建Maven项目YarnDemopom如下 pom.xml如下 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.leojiang.yarn/groupIdartifactIdYarnDemo/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13/version!-- main文件下无法使用如果相要使用需要修改为 compile --!-- scopetest/scope--scopecompile/scope/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion1.7.30/version/dependencydependencygroupIdorg.apache.hadoop/groupIdartifactIdhadoop-client/artifactIdversion3.3.4/version/dependency/dependencies/project2、创建包名 com.leojiang.yarn 3、创建类 WordCount 并实现 Tool 接口 package com.leojiang.yarn;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.util.Tool;import java.io.IOException;// Alt enter 实现相关的方法 public class WordCount implements Tool {private Configuration conf;// 核心驱动conf 需要传入Overridepublic int run(String[] args) throws Exception {Job job Job.getInstance(conf);job.setJarByClass(WordCountDriver.class);job.setMapperClass(WordCountMapper.class);job.setReducerClass(WordCountReducer.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.setInputPaths(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));return job.waitForCompletion(true) ? 0 : 1;}Overridepublic void setConf(Configuration conf) {this.conf conf;}Overridepublic Configuration getConf() {return conf;}// mapperpublic static class WordCountMapper extends MapperLongWritable, Text, Text, IntWritable {private Text outK new Text();private IntWritable outV new IntWritable(1);Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {// 获取一行String line value.toString(); // String[] words line.split();// 去除首尾空格String tline line.trim();// s表示匹配任何空白字符表示匹配一次或多String[] words tline.split(\\s);for (String word : words) {outK.set(word);context.write(outK, outV);}}}// reducerpublic static class WordCountReducer extends ReducerText, IntWritable, Text, IntWritable {private IntWritable outV new IntWritable();Overrideprotected void reduce(Text key, IterableIntWritable values, Context context) throws IOException, InterruptedException {int sum 0;for (IntWritable value : values) {sum value.get();}outV.set(sum);context.write(key, outV);}} } 4、创建WordCountDriver类 package com.leojiang.yarn;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.ToolRunner;import java.util.Arrays;public class WordCountDriver {private static Tool tool;public static void main(String[] args) throws Exception {// 创建配置Configuration conf new Configuration();switch (args[0]) {case wordcount:tool new WordCount();break;default:throw new RuntimeException(no such tool args[0]);}// 执行程序int run ToolRunner.run(conf, tool, Arrays.copyOfRange(args, 1, args.length));System.exit(run);} } 5、打包 6、拷贝jar包到Linux服务器上 7、运行测试 查看 Driver 类的全列名 com.leojiang.yarn.WordCountDriver 在 HDFS 上准备输入文件 /input 目录向集群提交该 Jar 包 hadoop1 hadoop-3.3.1]$ yarn jar $HADOOP_HOME/test-jar/YarnDemo-1.0-SNAPSHOT.jar com.leojiang.yarn.WordCountDriver wordcount /input /output4注意此时提交的 3 个参数第一个用于生成特定的 Tool第二个和第三个为输入输出目录。此时如果我们希望加入设置参数可以在 wordcount 后面添加参数例如 hadoop1 hadoop-3.3.1]$ yarn jar $HADOOP_HOME/test-jar/YarnDemo-1.0-SNAPSHOT.jar com.leojiang.yarn.WordCountDriver wordcount -Dmapreduce.job.queuenameroot.test /input /output54、总结 1、Yarn的工作机制 2、Yarn的调度器 1FIFO、容量、公平 2apache默认调度器 》容量 CDH默认调度器 》公平 3公平、容量 默认有一个default需要创建多队列 多队列 中小企业hive spark flink mr中大企业业务模块登录、注册、购物车、营销好处解耦降低风险 双11、618 降级使用 4每个调度器的特点 相同点支持多队列、可以借资源、支持多用户 不同点 容量调度器优先满足先进来的任务执行 公平调度器在队列里面的任务公平享有队列资源 5生产环境怎么选 中小企业对并发度要求不高选择容量中大企业对并发度要求比较高选择公平 3、开发需要掌握的重点 1队列原理 2Yarn常用命令 3核心参数配置 4配置容量调度器和公平调度器 5tool接口的使用 END
http://www.yingshimen.cn/news/59515/

相关文章:

  • 建设网站都要学些什么iis搭建网站怎么做前端
  • 电子商务类网站建设的网站后台会自动退出是正常的
  • 洪山网站建设公司软件开发工资一般多少大专
  • 网站开发培训排名.net 网站开发视频
  • 全网营销网站怎么做织梦招商加盟网站源码
  • 齐河网站建设电话wordpress博客怎么访问不了
  • 怎样才能建设一歌网站api接口开放平台
  • 网站死链接怎么提交深圳公司注册电话
  • 门户网站建设一般多少钱旗袍网站架构
  • 企业网站推广渠道有哪些沈阳建设工程信息网中介
  • 奉贤做网站的沧州网站建设的公司
  • 网站建设市场报告做 网络网站
  • 网站开发工具排名网站内页如何做排名
  • 绵阳网站推广排名求制作网站
  • 网站推广排名服务烟花外贸流程
  • 越众做的绿色建筑的网站网站里 动效是用什么做的
  • 做网站的必备软件wordpress pdf文章
  • 请将已备案网站接入访问网站建设单选
  • 网站排名提升易下拉教程木马网站链接有什么
  • 中文域名是网站名称吗云浮哪有公司做网站的
  • 做电影网站视频放在那里男女做爰视频网站在线
  • 网站建设玖金手指排名12公司网站开发人员的的工资多少钱
  • dede网站版权信息修改网站维护服务费
  • 知名高端网站建设服务商单页网站程序
  • 玉田网站制作小红书指数
  • 建设一个企业网站需要多少钱我要下载百度
  • 开封网站建设费用网站域名如何查询
  • 做视频网站怎么挣钱吗小白的博客 wordpress
  • 网站建设多选题百度文库长沙做痔疮东大医院de网站
  • 网络公司需要什么资质邯郸seo营销