<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>调优 on LeoChu Space</title>
    <link>https://leochu.work/blog/tags/%E8%B0%83%E4%BC%98/</link>
    <description>Recent content in 调优 on LeoChu Space</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sun, 01 Feb 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://leochu.work/blog/tags/%E8%B0%83%E4%BC%98/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>CDH基础配置及优化</title>
      <link>https://leochu.work/blog/tech/bigdata/cdh%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE%E5%8F%8A%E4%BC%98%E5%8C%96/</link>
      <pubDate>Sun, 01 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/cdh%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE%E5%8F%8A%E4%BC%98%E5%8C%96/</guid>
      <description>&lt;h1 id=&#34;一hive中文注释乱码&#34;&gt;一、hive中文注释乱码&lt;/h1&gt;
&lt;h2 id=&#34;1设置-hive-元数据库字符集&#34;&gt;&lt;em&gt;1、设置 hive 元数据库字符集&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;show create database hive;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/019d0a6a-72c9-7608-ac3a-0a57f498e4fd-image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;查看为 utf8，需变更为 latin1&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;alter database hive character set latin1; &lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/019d0a6b-d35a-7499-96cd-9281218f8e88-image.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;2更改如下表字段为字符集编码为-utf8&#34;&gt;&lt;em&gt;2、更改如下表字段为字符集编码为 utf8&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;①修改表字段注解和表注解&lt;br&gt;
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;&lt;br&gt;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;&lt;br&gt;
② 修改分区字段注解：&lt;br&gt;
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;&lt;br&gt;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;&lt;br&gt;
③修改索引注解：&lt;br&gt;
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux系统级优化</title>
      <link>https://leochu.work/blog/tech/bigdata/linux%E7%B3%BB%E7%BB%9F%E7%BA%A7%E4%BC%98%E5%8C%96/</link>
      <pubDate>Sat, 31 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/linux%E7%B3%BB%E7%BB%9F%E7%BA%A7%E4%BC%98%E5%8C%96/</guid>
      <description>&lt;h2 id=&#34;一在cdhcm部署时已经做了部分系统优化&#34;&gt;一、在cdh+cm部署时，已经做了部分系统优化&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ssh双向免密&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配置时间同步服务（本次没用ntpd，用的是chrony）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;禁用透明大页、碎片整理：THP (Transparent Huge Pages)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;禁用内存交换swap（常用0或1）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;二hadoop集群推荐内核参数&#34;&gt;二、hadoop集群推荐内核参数：&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;参数名称&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;默认值&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;文件系统参数&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;fs.file-max&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;6815744&lt;/td&gt;
          &lt;td&gt;系统最大文件描述符数量（所有进程可打开文件总数上限）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;fs.aio-max-nr&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;1048576&lt;/td&gt;
          &lt;td&gt;异步I/O请求的最大并发数（影响高并发场景性能）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;网络核心参数&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;net.core.rmem_default&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;262144&lt;/td&gt;
          &lt;td&gt;TCP接收缓冲区&lt;strong&gt;默认大小&lt;/strong&gt;（256KB）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;net.core.wmem_default&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;262144&lt;/td&gt;
          &lt;td&gt;TCP发送缓冲区&lt;strong&gt;默认大小&lt;/strong&gt;（256KB）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;net.core.rmem_max&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;16777216&lt;/td&gt;
          &lt;td&gt;TCP接收缓冲区&lt;strong&gt;最大允许值&lt;/strong&gt;（16MB）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;net.core.wmem_max&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;16777216&lt;/td&gt;
          &lt;td&gt;TCP发送缓冲区&lt;strong&gt;最大允许值&lt;/strong&gt;（16MB）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;TCP协议栈参数&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;net.ipv4.tcp_rmem&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;4096 262144 16777216&lt;/td&gt;
          &lt;td&gt;接收窗口尺寸：• 最小值4KB• 默认值256KB• 最大值16MB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;net.ipv4.tcp_wmem&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;4096 262144 16777216&lt;/td&gt;
          &lt;td&gt;发送窗口尺寸：• 最小值4KB• 默认值256KB• 最大值16MB&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;查看当前内核配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sysctl -e fs.file-max fs.aio-max-nr &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; net.core.rmem_default net.core.wmem_default &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; net.core.rmem_max net.core.wmem_max &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; net.ipv4.tcp_rmem net.ipv4.tcp_wmem 2&amp;gt;/dev/nulll
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/019d1e9d-a8aa-71fa-bc02-15c30fb69345-image.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>JVM调优注意事项</title>
      <link>https://leochu.work/blog/tech/java/jvm%E8%B0%83%E4%BC%98%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/</link>
      <pubDate>Sat, 12 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/java/jvm%E8%B0%83%E4%BC%98%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/</guid>
      <description>&lt;p&gt;·Xmx不要超过机器内存的50%，留下些内存供VM堆外内存和操作系统使用。
·并且Xm不要超过32G。建议最大配置为30G。接近32G,JVM会启用压缩对象指针的功能，导致
性能下降。常见es集群。具体可以参考：&lt;a href=&#34;https://www.elastic.co/cn/blog/a-heap-of-trouble&#34;&gt;A Heap of Trouble: Managing Elasticsearch&amp;rsquo;s Managed Heap | Elastic Blog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>impala配置调优</title>
      <link>https://leochu.work/blog/tech/bigdata/impala%E9%85%8D%E7%BD%AE%E8%B0%83%E4%BC%98/</link>
      <pubDate>Sun, 27 Nov 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/impala%E9%85%8D%E7%BD%AE%E8%B0%83%E4%BC%98/</guid>
      <description>&lt;h6 id=&#34;impala-daemon-命令行参数高级配置代码段安全阀&#34;&gt;&lt;strong&gt;Impala Daemon 命令行参数高级配置代码段（安全阀）&lt;/strong&gt;&lt;/h6&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;-use_local_tz_for_unix_timestamp_conversions=true
-convert_legacy_hive_parquet_utc_timestamps=true
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在hive中，一个中文字符长度为1&lt;/p&gt;
&lt;p&gt;在impala中，一个中文字符长度为3&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hive调优大全</title>
      <link>https://leochu.work/blog/tech/bigdata/hive%E8%B0%83%E4%BC%98%E5%A4%A7%E5%85%A8/</link>
      <pubDate>Sun, 18 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/hive%E8%B0%83%E4%BC%98%E5%A4%A7%E5%85%A8/</guid>
      <description>&lt;h1 id=&#34;调优具体细节&#34;&gt;调优具体细节&lt;/h1&gt;
&lt;h2 id=&#34;hive建表设计层面&#34;&gt;Hive建表设计层面&lt;/h2&gt;
&lt;p&gt;Hive 的建表设计层面调优，主要讲的怎么样合理的组织数据，方便后续的高效计算。比如建表的类型，文件存储格式，是否压缩等等。&lt;/p&gt;
&lt;h3 id=&#34;利用分区表优化&#34;&gt;利用分区表优化&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;关于 Hive 的表的类型有哪些？
1、分区表  
2、分桶表
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;分区表 是在某一个或者几个维度上对数据进行分类存储，一个分区对应一个目录。如果筛选条件里有分区字段，那么 Hive 只需要遍历对应分区目录下的文件即可，不需要遍历全局数据，使得处理的数据量大大减少，从而提高查询效率。&lt;/p&gt;
&lt;p&gt;也就是说：&lt;strong&gt;当一个 Hive 表的查询大多数情况下，会根据某一个字段进行筛选时，那么非常适合创建为分区表，该字段即为分区字段。&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;select1:  select ....  where country = &amp;#34;china&amp;#34;
select2:  select ....  where country = &amp;#34;china&amp;#34;
select3:  select ....  where country = &amp;#34;china&amp;#34;
select4:  select ....  where country = &amp;#34;china&amp;#34;
.....
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;分门别类：这个city字段的每个值，就单独形成为一个分区。其实每个分区就对应带HDFS的一个目录&lt;/p&gt;
&lt;p&gt;在创建表时通过启用 &lt;code&gt;partitioned by&lt;/code&gt; 实现，用来 partition 的维度并不是实际数据的某一列，具体分区的标志是由插入内容时给定的。当要查询某一分区的内容时可以采用 where 语句，形似 &lt;code&gt;where tablename.partition_column = a&lt;/code&gt; 来实现。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1、创建含分区的表：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;CREATE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;TABLE&lt;/span&gt; page_view(viewTime INT, userid BIGINT,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       page_url STRING, referrer_url STRING,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                       ip STRING &lt;span style=&#34;color:#66d9ef&#34;&gt;COMMENT&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;IP Address of the User&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PARTITIONED &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt;(date STRING, country STRING)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ROW&lt;/span&gt; FORMAT DELIMITED FIELDS TERMINATED &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;STORED &lt;span style=&#34;color:#66d9ef&#34;&gt;AS&lt;/span&gt; TEXTFILE;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;2、载入内容，并指定分区标志：&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hive 数仓建表该选用 ORC 还是 Parquet，压缩选 LZO 还是 Snappy</title>
      <link>https://leochu.work/blog/tech/bigdata/hive%E5%BB%BA%E8%A1%A8%E6%A0%BC%E5%BC%8F%E9%80%89%E5%9E%8B-orc-parquet-lzo-snappy/</link>
      <pubDate>Sun, 24 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/hive%E5%BB%BA%E8%A1%A8%E6%A0%BC%E5%BC%8F%E9%80%89%E5%9E%8B-orc-parquet-lzo-snappy/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;在数仓中，建议大家除了接口表（从其他数据库导入或者是最后要导出到其他数据库的表），其余表的存储格式与压缩格式保持一致。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在数仓中，建议大家除了接口表（从其他数据库导入或者是最后要导出到其他数据库的表），其余表的存储格式与压缩格式保持一致。&lt;/p&gt;
&lt;p&gt;我们先来说一下目前 Hive 表主流的存储格式与压缩方式&lt;/p&gt;
&lt;p&gt;从 Hive 官网得知，Apache Hive 支持 Apache Hadoop 中使用的几种熟悉的文件格式，如 &lt;code&gt;TextFile（文本格式）&lt;/code&gt;，&lt;code&gt;RCFile（行列式文件）&lt;/code&gt;，&lt;code&gt;SequenceFile（二进制序列化文件）&lt;/code&gt;，&lt;code&gt;AVRO&lt;/code&gt;，&lt;code&gt;ORC（优化的行列式文件）&lt;/code&gt;和&lt;code&gt;Parquet&lt;/code&gt; 格式，而这其中我们目前使用最多的是&lt;code&gt;TextFile&lt;/code&gt;，&lt;code&gt;SequenceFile&lt;/code&gt;，&lt;code&gt;ORC&lt;/code&gt;和&lt;code&gt;Parquet&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;下面来详细了解下这 2 种行列式存储。&lt;/p&gt;
&lt;h2 id=&#34;1orc&#34;&gt;1、ORC&lt;/h2&gt;
&lt;h3 id=&#34;11-orc-的存储结构&#34;&gt;1.1 ORC 的存储结构&lt;/h3&gt;
&lt;p&gt;我们先从官网上拿到 ORC 的存储模型图&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.doitedu.cn/wp-content/uploads/2021/12/a.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;看起来略微有点复杂，那我们稍微简化一下，我画了一个简单的图来说明一下&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.doitedu.cn/wp-content/uploads/2021/12/b-1024x456.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;但是由于索引的高成本，在**「目前的 Hive3.X 中，已经废除了索引」**，当然也早就引入了列式存储。&lt;/p&gt;
&lt;p&gt;列式存储的存储方式，是按照一列一列存储的，如上图中的右图，这样的话如果查询一个字段的数据，就等于是索引查询，效率高。但是如果需要查全表，它因为需要分别取所有的列最后汇总，反而更占用资源。于是 ORC 行列式存储出现了。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在需要全表扫描时，可以按照行组读取&lt;/li&gt;
&lt;li&gt;如果需要取列数据，在行组的基础上，读取指定的列，而不需要所有行组内所有行的数据和一行内所有字段的数据。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;了解了 ORC 存储的基本逻辑后，我们再来看看它的存储模型图。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.doitedu.cn/wp-content/uploads/2021/12/c.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;同时我也把详细的文字也附在下面，大家可以对照着看看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;条带 (stripe)：ORC 文件存储数据的地方，每个 stripe 一般为 HDFS 的块大小。（包含以下 3 部分）&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;index data:保存了所在条带的一些统计信息,以及数据在 stripe中的位置索引信息。
rows data:数据存储的地方,由多个行组构成，每10000行构成一个行组，数据以流( stream)的形式进行存储。
stripe footer:保存数据所在的文件目录
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;文件脚注 (file footer)：包含了文件中 sipe 的列表, 每个 stripe 的行数, 以及每个列的数据类型。它还包含每个列的最小值、最大值、行计数、求和等聚合信息。&lt;/li&gt;
&lt;li&gt;postscript：含有压缩参数和压缩大小相关的信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以其实发现，ORC 提供了 3 级索引，文件级、条带级、行组级，所以在查询的时候，利用这些索引可以规避大部分不满足查询条件的文件和数据块。&lt;/p&gt;</description>
    </item>
    <item>
      <title>CDH组件参数调优</title>
      <link>https://leochu.work/blog/tech/bigdata/cdh%E7%BB%84%E4%BB%B6%E5%8F%82%E6%95%B0%E8%B0%83%E4%BC%98/</link>
      <pubDate>Sun, 29 May 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/cdh%E7%BB%84%E4%BB%B6%E5%8F%82%E6%95%B0%E8%B0%83%E4%BC%98/</guid>
      <description>&lt;h3 id=&#34;1yarn参数调优&#34;&gt;1.YARN参数调优&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;检查项&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;当前值&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;修改值&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;JobHistory Server 的 Java 堆栈大小&lt;/td&gt;
          &lt;td&gt;1GB&lt;/td&gt;
          &lt;td&gt;2GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NodeManager 的 Java 堆栈大小&lt;/td&gt;
          &lt;td&gt;1GB&lt;/td&gt;
          &lt;td&gt;2GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ResourceManager 的 Java 堆栈大小&lt;/td&gt;
          &lt;td&gt;1GB&lt;/td&gt;
          &lt;td&gt;2GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;容器内存  yarn.nodemanager.resource.memory-mb&lt;/td&gt;
          &lt;td&gt;24GB&lt;/td&gt;
          &lt;td&gt;32GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;最小容器内存   yarn.scheduler.minimum-allocation-mb&lt;/td&gt;
          &lt;td&gt;10GB&lt;/td&gt;
          &lt;td&gt;8GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;最大容器内存  yarn.scheduler.maximum-allocation-mb&lt;/td&gt;
          &lt;td&gt;40GB&lt;/td&gt;
          &lt;td&gt;56GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Map 任务内存   mapreduce.map.memory.mb&lt;/td&gt;
          &lt;td&gt;0M&lt;/td&gt;
          &lt;td&gt;12GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Reduce 任务内存   mapreduce.reduce.memory.mb&lt;/td&gt;
          &lt;td&gt;0M&lt;/td&gt;
          &lt;td&gt;24GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Application Master容器内存  yarn.app.mapreduce.am.resource.mb&lt;/td&gt;
          &lt;td&gt;24GB&lt;/td&gt;
          &lt;td&gt;32GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Map 任务 Java 选项库  mapreduce.map.java.opts&lt;/td&gt;
          &lt;td&gt;-Djava.net.preferIPv4Stack=true&lt;/td&gt;
          &lt;td&gt;-Dmapreduce.map.java.opts=-Xmx2048m&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Reduce 任务 Java 选项库  mapreduce.reduce.java.opts&lt;/td&gt;
          &lt;td&gt;-Djava.net.preferIPv4Stack=true&lt;/td&gt;
          &lt;td&gt;-Dmapreduce.reduce.java.opts=-Xmx2048m&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;yarn.resourcemanager.scheduler.class&lt;/td&gt;
          &lt;td&gt;org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler&lt;/td&gt;
          &lt;td&gt;org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;yarn.scheduler.capacity.root.queues:&lt;/p&gt;
&lt;p&gt;当前值：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;property&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;name&amp;gt;&lt;/span&gt;yarn.scheduler.capacity.root.queues&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;value&amp;gt;&lt;/span&gt;default&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;property&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;name&amp;gt;&lt;/span&gt;yarn.scheduler.capacity.root.capacity&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;value&amp;gt;&lt;/span&gt;100&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;property&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;name&amp;gt;&lt;/span&gt;yarn.scheduler.capacity.root.default.capacity&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;value&amp;gt;&lt;/span&gt;100&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;修改值：&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何调优 Kafka</title>
      <link>https://leochu.work/blog/tech/bigdata/kafka%E8%B0%83%E4%BC%98%E6%8C%87%E5%8D%97/</link>
      <pubDate>Sun, 03 Apr 2022 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/bigdata/kafka%E8%B0%83%E4%BC%98%E6%8C%87%E5%8D%97/</guid>
      <description>&lt;h2 id=&#34;调优目标&#34;&gt;调优目标&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;在做调优之前，我们必须明确优化 Kafka 的目标是什么。通常来说，调优是为了满足系统常见的非功能性需求。在众多的非功能性需求中，性能绝对是我们最关心的那一个。不同的系统对性能有不同的诉求，比如对于数据库用户而言，性能意味着请求的响应时间，用户总是希望查询或更新请求能够被更快地处理完并返回。&lt;/p&gt;
&lt;p&gt;对 Kafka 而言，性能一般是指吞吐量和延时。&lt;/p&gt;
&lt;p&gt;吞吐量，也就是 TPS，是指 Broker 端进程或 Client 端应用程序每秒能处理的字节数或消息数，这个值自然是越大越好。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;延时和我们刚才说的响应时间类似，它表示从 Producer 端发送消息到 Broker 端持久化完成之间的时间间隔。这个指标也可以代表端到端的延时（End-to-End，E2E），也就是从 Producer 发送消息到 Consumer 成功消费该消息的总时长&lt;/em&gt;。和 TPS 相反，我们通常希望延时越短越好。&lt;/p&gt;
&lt;p&gt;总之，高吞吐量、低延时是我们调优 Kafka 集群的主要目标，一会儿我们会详细讨论如何达成这些目标。在此之前，我想先谈一谈优化漏斗的问题。&lt;/p&gt;
&lt;h2 id=&#34;优化漏斗&#34;&gt;优化漏斗&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;优化漏斗是一个调优过程中的分层漏斗，我们可以在每一层上执行相应的优化调整。总体来说，层级越靠上，其调优的效果越明显，整体优化效果是自上而下衰减的，如下图所示：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Pasted image 20230328142440.png&#34; loading=&#34;lazy&#34; src=&#34;https://leochu.work/blog/resource/Pasted%20image%2020230328142440.png&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;第 1 层：应用程序层。它是指优化 Kafka 客户端应用程序代码。比如，使用合理的数据结构、缓存计算开销大的运算结果，抑或是复用构造成本高的对象实例等。这一层的优化效果最为明显，通常也是比较简单的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第 2 层：框架层。它指的是合理设置 Kafka 集群的各种参数。毕竟，直接修改 Kafka 源码进行调优并不容易，但根据实际场景恰当地配置关键参数的值，还是很容易实现的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第 3 层：JVM 层。Kafka Broker 进程是普通的 JVM 进程，各种对 JVM 的优化在这里也是适用的。优化这一层的效果虽然比不上前两层，但有时也能带来巨大的改善效果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第 4 层：操作系统层。对操作系统层的优化很重要，但效果往往不如想象得那么好。与应用程序层的优化效果相比，它是有很大差距的。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;基础性调优&#34;&gt;基础性调优&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;接下来，我就来分别介绍一下优化漏斗的 4 个分层的调优。&lt;/p&gt;
&lt;h2 id=&#34;操作系统调优&#34;&gt;操作系统调优&lt;/h2&gt;
&lt;p&gt;我先来说说操作系统层的调优。在操作系统层面，你最好在挂载（Mount）文件系统时禁掉 atime 更新。atime 的全称是 access time，记录的是文件最后被访问的时间。记录 atime 需要操作系统访问 inode 资源，而禁掉 atime 可以避免 inode 访问时间的写入操作，减少文件系统的写操作数。你可以执行 &lt;code&gt;mount -o noatime&lt;/code&gt; 命令进行设置。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
