搜索

pdf文档 尚硅谷大数据技术之Hadoop(生产调优手册)

2.32 MB 41 页 5 下载 252 浏览 0 评论 1 收藏
语言 格式 评分
中文(简体)
.pdf
3
摘要
文档主要介绍了Hadoop生产环境中的调优方法,包括MapReduce任务优化、HDFS参数配置、数据倾斜处理、资源管理参数调整等内容。文档详细讲解了NameNode内存计算、MapTask和ReduceTask的调优策略、HDFS多目录配置以及小文件优化方法。同时,还提供了具体的测试案例和调优参数示例,帮助用户提升Hadoop集群的性能和稳定性。
AI总结
### Hadoop 生产调优手册总结 #### 1. 减少数据倾斜的方法 - **检查空值**:若空值过多导致数据倾斜,可直接过滤空值;若需保留空值,可通过自定义分区将空值加随机数打散后再进行聚合。 - **Map 阶段处理**:优先在 Map 阶段处理数据倾斜问题,如使用 Combiner 或 MapJoin。 - **设置 Reduce 数量**:适当增加 Reduce 任务数量以分散负载。 #### 2. Yarn 调优参数 ##### 2.1 ResourceManager 相关 - `yarn.resourcemanager.scheduler.client.thread-count`:处理调度器请求的线程数量。 - `yarn.resourcemanager.scheduler.class`:配置调度器。 ##### 2.2 NodeManager 相关 - `yarn.nodemanager.resource.memory-mb`:NodeManager 使用内存数。 - `yarn.nodemanager.resource.system-reserved-memory-mb`:为系统保留的内存。 - `yarn.nodemanager.resource.cpu-vcores`:NodeManager 使用的 CPU 核数。 - `yarn.nodemanager.resource.count-logical-processors-as-cores`:是否将虚拟核数当作 CPU 核数。 - `yarn.nodemanager.resource.pcores-vcores-multiplier`:虚拟核数和物理核数的乘数。 - `yarn.nodemanager.resource.detect-hardware-capabilities`:是否让 Yarn 自动检测硬件配置。 - `yarn.nodemanager.pmem-check-enabled` 和 `yarn.nodemanager.vmem-check-enabled`:是否开启内存检查限制。 - `yarn.nodemanager.vmem-pmem-ratio`:虚拟内存与物理内存比例。 ##### 2.3 Container 相关 - `yarn.scheduler.minimum-allocation-mb`:容器最小内存。 - `yarn.scheduler.maximum-allocation-mb`:容器最大内存。 - `yarn.scheduler.minimum-allocation-vcores`:容器最小核数。 - `yarn.scheduler.maximum-allocation-vcores`:容器最大核数。 #### 3. HDFS 多目录配置 - NameNode 的本地目录可配置为多个,提高数据可靠性。 - 示例配置: ```xml dfs.namenode.name.dir file://${hadoop.tmp.dir}/dfs/name1,file://${hadoop.tmp.dir}/dfs/name2 ``` #### 4. MapReduce 调优 ##### 4.1 性能瓶颈 - 瓶颈主要在于计算机性能(CPU、内存、磁盘、网络)和 I/O 操作优化。 ##### 4.2 常用调优参数 - **自定义分区**:通过 Partitioner 接口减少数据倾斜。 - **减少溢写次数**: - `mapreduce.task.io.sort.mb`:默认 100M,可提高至 200M。 - `mapreduce.map.sort.spill.percent`:默认 80%,可提高至 90%。 - **增加 Merge 合并次数**:提高环形缓冲区的利用效率。 - **提前使用 Combiner**:在不影响业务结果的前提下,提前合并中间结果。 - **压缩技术**:使用 Snappy 或 LZO 压缩减少磁盘 I/O。 - **内存优化**: - `mapreduce.map.memory.mb`:根据数据量适当增加 MapTask 内存。 - `mapreduce.map.java.opts`:控制 MapTask 堆内存大小。 - **CPU 核心数**:`mapreduce.map.cpu.vcores` 默认为 1,可根据任务需求增加。 - **异常重试**:`mapreduce.map.maxattempts` 默认为 4,可根据机器性能适当增加。 #### 5. HDFS 小文件优化 - **问题**:小文件过多会导致 NameNode 内存占用高且寻址变慢,MR 任务启动过多 MapTask 浪费资源。 - **解决方案**: 1. 数据采集阶段将小文件合并。 2. 使用 Hadoop Archive(HAR)工具打包小文件。 3. 使用 `CombineTextInputFormat` 减少切片数量。 4. 开启 Uber 模式,复用 JVM 提高资源利用率。 #### 6. 集群扩容与缩容 - **白名单配置**:防止非法访问,保障集群安全。 - **磁盘均衡**:通过 `hdfs diskbalancer` 命令实现新磁盘的数据均衡。 #### 7. 测试与验证 - 使用 `TestDFSIO` 测试 HDFS 读写性能。 - 示例命令: ```bash hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -read -nrFiles 10 -fileSize 128MB ``` #### 8. 企业开发场景案例 - **需求**:统计 1G 数据中每个单词的出现次数。 - **参数调优**: - 修改 `hadoop-env.sh` 配置 NameNode 和 DataNode 内存。 - 调整 `hdfs-site.xml` 和 `core-site.xml` 参数优化性能。 #### 9. 综合调优 - **小文件优化**:通过合并、打包、减少切片和 JVM 复用来提升性能。 - **磁盘均衡**:利用 Hadoop3.x 新特性平衡磁盘数据分布。 以上总结涵盖了 Hadoop 生产环境中的核心调优方法和关键参数配置,适用于集群性能优化和日常运维。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 34 页请下载阅读 -
文档评分
请文明评论,理性发言.