hyperxu

一个专注于运维领域的个人技术博客


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

  • 公益404

  • 搜索

kafka集群扩容后的数据均衡

发表于 2019-12-01 | 分类于 kafka | 阅读次数

生产环境的kafka集群扩容,是一个比较常见的需求和操作。然而kafka在新增节点后并不会像elasticsearch那样感知到新节点加入后,自动将数据reblance到整个新集群中,因此这个过程需要我们手动分配。

分区重分配方案

扩容后的数据均衡,其本质就是对topic进行分区重分配,数据迁移的过程。
在执行分区重分配的过程中,对集群的影响主要有两点:

  1. 分区重分配主要是对topic数据进行Broker间的迁移,因此会占用集群的带宽资源;
  2. 分区重分配会改变分区Leader所在的Broker,因此会影响客户端。
阅读全文 »

Dr.Elephant实战常见问题及解决方法

发表于 2019-11-12 | 分类于 Dr.Elephant | 阅读次数

通过之前一系列的文章叙述,想必大家都对dr.elephant有了一个较为清晰的了解。通过自己线上经验的积累,以及和一些读者的交流,我汇总了一些大家在实战中遇到的问题和解决方案。

常规问题

由于在和读者交流的过程中,发现大家技术水平参差不齐,本着科普性文章的初衷,这里先讲一些比较基础的要点,大佬们可以忽略,直接跳过。

  1. 在打包时,需要对照自己的Hadoop或者Spark版本,修改compile.conf文件中的版本号。否则有可能出现采集不到集群作业信息的情况。
  2. 最好将自己Hadoop集群的相关配置文件都拷贝到dr.elephant的app-conf目录下。
  3. 统一自己Hadoop集群的环境变量。

数据库问题

Database ‘default’ is in an inconsistent state!

启动失败并出现这个报错,一般是play框架的evolution问题,解决方法如下:

  1. 停止dr.elephant并确保进程已kill
  2. 删除原来的数据库并重新建库
  3. 配置app-conf/elephant.conf中jvm_props="-Devolutionplugin=enabled -DapplyEvolutions.default=true",开启evolution,使其能够自动初始化表结构。
阅读全文 »

【Dr.Elephant中文文档-8】调优建议

发表于 2019-08-27 | 分类于 Dr.Elephant | 阅读次数

你可以使用Dr. Elephant来分析你的作业(只需在搜索页贴入你的作业ID),就可以知道你的作业有哪些地方需要优化。

加速你的作业流

一般对于特定的作业,最好有自己的配置。大多数情况下,作业的默认配置无法提供最佳性能。尽管作业调优比较费劲,但一些简单的调整往往也能带来不错的效果。

需要特别注意的是mapper和reducer的数量,io和内存使用的配置,以及生成的文件数量。对这几个参数进行调整,让参数更适合当前的任务,可以极大的提升任务的执行性能。

Apache的官网中Hadoop Map/Reduce Tutorial这篇文章提供很多详细且有用的调试建议,有兴趣的可以仔细看看。

常规建议

逐步调优很重要

对于Pig作业来说,如果使用默认参数来设置reducer的数量,这对作业的性能可能是致命的。一般来说,对每个Pig作业,都花一些时间来调优参数PARALLEL是非常值得做的。例如:

1
memberFeaturesGrouped = GROUP memberFeatures BY memberId PARALLEL 90;
阅读全文 »

【Dr.Elephant中文文档-7】自动调优

发表于 2019-08-22 | 分类于 Dr.Elephant | 阅读次数

目标

Dr.Elephant这个项目是希望构建一个可以自动优化hadoop mapreduce相关函数的调优框架。在这种情况下,是为了函数消耗最少的资源来完成作业。我们还希望在未来的版本将作业时间也作为函数资源消耗的参考指标。我们使用迭代算法和粒子群优化算法进行自动调优。这些迭代通过分析作业的多次运行结果来完成,我们已经在15-20次的作业中优化了20-30%的资源。

自动优化从作业的默认参数开始,并且在每次运行之后计算判断当前参数是否适合,并且根据算法建议新的参数。为了与Dr.Elephant交互,开发了getCurrentRunParameters新API,它返回给定作业当前运行的参数。

阅读全文 »

【Dr.Elephant中文文档-6】度量指标和启发式算法

发表于 2019-06-13 | 分类于 Dr.Elephant | 阅读次数

度量指标

资源用量

资源使用情况是你作业在GB小时内使用的资源量。

计量统计

我们将作业的资源使用量定义为任务容器大小和任务运行时间的乘积。因此,作业的资源使用量可以定义为mapper和reducer任务的资源使用量总和。

范例

1
2
3
4
5
6
7
8
Consider a job with:
4 mappers with runtime {12, 15, 20, 30} mins.
4 reducers with runtime {10 , 12, 15, 18} mins.
Container size of 4 GB
Then,
Resource used by all mappers: 4 * (( 12 + 15 + 20 + 30 ) / 60 ) GB Hours = 5.133 GB Hours
Resource used by all reducers: 4 * (( 10 + 12 + 15 + 18 ) / 60 ) GB Hours = 3.666 GB Hours
Total resource used by the job = 5.133 + 3.6666 = 8.799 GB Hours

浪费的资源量

这显示了作业以GB小时浪费的资源量或以浪费的资源百分比。

阅读全文 »
1234…7
hyperxu

hyperxu

35 日志
10 分类
21 标签
RSS
GitHub Facebook 知乎
© 2025 hyperxu | 浙ICP备15043518号-3
由 Hexo 强力驱动
主题 - NexT.Mist