uber的配置

本文介绍Hadoop YARN的日志聚集配置方法及其作用,包括关键配置参数及效果说明;同时覆盖Uber模式配置,阐述如何通过Uber模式优化MR小作业执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、日志聚集相关配置参数(发送各个节点)
1、概念:日志聚集是YARN提供的日志中央化管理功能,
它能将运行完成的Container/任务日志上传到HDFS上,从而减轻NodeManager负载,
且提供一个中央化存储和分析机制。默认情况下,Container/任务日志存在在各个
NodeManager上,如果启用日志聚集功能需要额外的配置。


2、参数配置说明:
(1) yarn.log-aggregation-enable
参数解释:是否启用日志聚集功能。
默认值:false
(2) yarn.log-aggregation.retain-seconds
参数解释:在HDFS上聚集的日志最多保存多长时间。
默认值:-1
(3) yarn.log-aggregation.retain-check-interval-seconds
参数解释:多长时间检查一次日志,并将满足条件的删除。
默认值:-1
(4) yarn.nodemanager.remote-app-log-dir
参数解释:当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效)。
默认值:/tmp/logs
(5) yarn.log-aggregation.retain-seconds




参数解释:远程日志目录子目录名称(启用日志聚集功能时有效)。
默认值:日志将被转移到目录
${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam}下


3、Hadoop集群配置
例如:yarn-site.xml
<!--yarn的聚合日志是否开启-->
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>
  <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>120</value>
  </property>
  <property>
    <name>yarn.log-aggregation.retain-check-interval-seconds</name>
    <value>20</value>
  </property>
  <property>
    <name>yarn.nodemanager.log.retain-seconds</name>
    <value>60</value>
  </property>
  <property>
    <name>yarn.nodemanager.remote-app-log-dir</name>
    <value>/1707logs</value>
  </property>
  
4、效果说明
(1)、查看各个节点表的logs/userlogs路径下。日志聚集配置之后,下面的
数据会上传到hdfs指定的目录并且删除该路径下的log文件(注意查看)。
(2)、注意查看HDFS目录下保存的logs文件到到时间之后是否被删除(必须开启historyserver服务哦!)。






二、Uber模式配置
1、概念:Uber模式是Hadoop2.0中实现的一种针对MR小作业的优化机制。
  即如果作业足够小,则所有task在一个jvm(mrappmaster)中
  完成要比为每个task启动一个container更划算。下面是该机制
  的相关参数,这些参数均为客户端配置。
  
2、Uber模式配置:


在maped-site文件添加
mapreduce.job.ubertask.enable
值为true


mapreduce.job.ubertask.maxmaps
map任务数的阀值  9


mapreduce.job.ubertask.maxreduces 
reduce任务数的阀值  1


mapreduce.job.ubertask.maxbytes 
application的输入大小的阀值
默认为dfs.block.size的值,可以不用写!
### Uber Cadence 工作流引擎概述 Cadence 是由 Uber 开发的一款分布式工作流引擎,旨在解决传统请求-响应模型无法处理的长时间运行任务和复杂业务流程的问题[^2]。它的核心目标是帮助开发者专注于实现业务逻辑,而无需过多关注底层的技术细节。 Cadence 提供了一个强大的框架,可以用来协调跨多个服务的任务执行,并确保即使在网络分区或其他故障情况下也能保持一致性[^4]。其设计使得它可以轻松应对高并发环境下的挑战,同时支持多种状态机模型以适应不同的应用场景。 #### 主要特性 - **可靠性**:通过持久化记录每一步的操作历史,确保即使发生节点失败也不会丢失数据。 - **灵活性**:支持自定义调度策略以及动态调整工作流的行为模式。 - **扩展性**:能够水平扩展到数千个工作线程上并行处理大量请求。 项目地址位于 [https://gitcode.com/gh_mirrors/ca/cadence-web](https://gitcode.com/gh_mirrors/ca/cadence-web),这里包含了完整的文档和支持工具,比如可视化界面 `cadence-web` 可用于监控正在运行的工作流实例及其进度[^1]。 ### 使用教程 为了更好地理解如何利用 Cadence 创建自己的工作流应用,下面给出了一些基础指导: #### 安装与配置 首先需要安装 Cadence CLI 和服务器组件。可以通过 Docker 镜像快速启动本地测试环境: ```bash docker run -d --name cadence-server -p 7933:7933 -p 7935:7935 -p 7936:7936 ubercadence/server:latest ``` 接着初始化域(domain),这是 Cadence 中组织所有资源的基本单位之一: ```bash cadence domain register your-domain-name --description "My first Domain" ``` #### 编写第一个 Workflow 以下是一个简单的 Go 示例程序展示如何定义及调用 workflow: ```go package main import ( "context" "fmt" "github.com/uber-go/tally" "go.uber.org/cadence/activity" "go.uber.org/cadence/workflow" ) func GreetingActivity(ctx context.Context, name string) (string, error) { return fmt.Sprintf("Hello %s", name), nil } func GreetingWorkflow(ctx workflow.Context, name string) (string, error) { ao := workflow.ActivityOptions{ ScheduleToStartTimeout: time.Minute, StartToCloseTimeout: time.Minute, } ctx = workflow.WithActivityOptions(ctx, ao) var result string err := workflow.ExecuteActivity(ctx, GreetingActivity, name).Get(ctx, &result) if err != nil { return "", err } return result, nil } ``` 上述代码片段展示了怎样注册 activity 函数并通过它们构建更高级别的 workflow 结构[^3]。 最后,在 worker 进程里分别登记刚才创建好的 activities 和 workflows 并开始监听来自客户端发起的新任务请求即可完成整个部署过程。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值