目录大纲
Part01-基础概念与理论知识
1.1 Hadoop离线计算任务概述
Hadoop离线计算是指基于Hadoop生态系统进行的批量数据处理,主要包括MapReduce、Hive、Spark等框架。离线计算任务通常处理大规模数据集,运行时间较长,对系统资源要求较高。更多视频教程www.fgedu.net.cn
1.2 离线计算任务优化原理
离线计算任务优化的核心原理包括:数据局部性优化、资源分配优化、任务并行度调整、数据倾斜处理、IO优化等。通过合理配置这些参数,可以显著提升任务执行效率。学习交流加群风哥微信: itpux-com
1.3 性能瓶颈分析方法
性能瓶颈分析是优化的前提,常用的方法包括:查看任务日志、使用YARN
ResourceManager监控、分析MapReduce计数器、使用Hadoop自带的性能分析工具等。风哥提示:性能分析需要从CPU、内存、磁盘IO、网络等多个维度进行。
Part02-生产环境规划与建议
2.1 硬件资源规划
[root@fgedu.net.cn ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 32
On-line CPU(s) list: 0-31
Thread(s) per core: 2
Core(s) per socket: 16
Socket(s): 1
NUMA node(s): 1
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 24576K
# 检查内存信息
[root@fgedu.net.cn ~]# free -h
total used free shared buff/cache available
Mem: 125G 10G 110G 1.2G 5.3G 113G
Swap: 4.0G 0B 4.0G
2.2 系统参数配置
[root@fgedu.net.cn ~]# vi /etc/sysctl.conf
# 添加以下参数
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
vm.swappiness = 10
vm.overcommit_memory = 1
# 应用配置
[root@fgedu.net.cn ~]# sysctl -p
2.3 任务调度策略
合理的任务调度策略可以提高集群资源利用率,减少任务等待时间。常见的调度策略包括FIFO、Capacity Scheduler、Fair Scheduler等。更多学习教程公众号风哥教程itpux_com
Part03-生产环境项目实施方案
3.1 MapReduce任务优化
[root@fgedu.net.cn ~]# vi /bigdata/app/hadoop/etc/hadoop/mapred-site.xml
3.2 Hive任务优化
hive> set hive.exec.dynamic.partition=true;
hive> set hive.exec.dynamic.partition.mode=nonstrict;
hive> set hive.exec.parallel=true;
hive> set hive.exec.parallel.thread.number=8;
hive> set hive.vectorized.execution.enabled=true;
hive> set hive.vectorized.execution.reduce.enabled=true;
hive> set hive.auto.convert.join=true;
hive> set hive.optimize.skewjoin=true;
hive> set hive.skewjoin.key=100000;
3.3 Spark离线任务优化
[root@fgedu.net.cn ~]# vi /bigdata/app/spark/conf/spark-defaults.conf
spark.executor.memory 8g
spark.executor.cores 4
spark.driver.memory 4g
spark.driver.cores 2
spark.default.parallelism 1000
spark.sql.shuffle.partitions 200
spark.memory.fraction 0.7
spark.memory.storageFraction 0.3
spark.shuffle.spill.compress true
spark.rdd.compress true
Part04-生产案例与实战讲解
4.1 大型离线ETL任务优化案例
案例背景
某电商平台每天需要处理100GB的用户行为数据,进行清洗、转换和加载到数据仓库。原始任务执行时间超过8小时,需要优化。
优化步骤
- 数据分区优化:按日期分区,减少数据扫描范围
- MapReduce参数调优:增加Map和Reduce任务内存,提高并行度
- 数据压缩:使用Snappy压缩存储中间结果
- SQL优化:重写Hive SQL,减少不必要的计算
优化效果
执行时间从8小时减少到2小时,性能提升75%。from bigdata视频:www.itpux.com
4.2 数据仓库构建优化案例
#!/bin/bash
# build_dw.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 导出环境变量
export HADOOP_HOME=/bigdata/app/hadoop
export HIVE_HOME=/bigdata/app/hive
export PATH=$HADOOP_HOME/bin:$HIVE_HOME/bin:$PATH
# 执行数据仓库构建
hive -f /bigdata/app/scripts/build_dw.sql
# 检查执行结果
if [ $? -eq 0 ]; then
echo “数据仓库构建成功”
else
echo “数据仓库构建失败”
exit 1
fi
4.3 批处理性能调优实战
[root@fgedu.net.cn ~]# hadoop jar
/bigdata/app/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount
-Dmapreduce.map.memory.mb=4096
-Dmapreduce.reduce.memory.mb=8192
-Dmapreduce.map.cpu.vcores=2
-Dmapreduce.reduce.cpu.vcores=4
-Dmapreduce.task.io.sort.mb=256
hdfs://fgedu.net.cn:9000/input
hdfs://fgedu.net.cn:9000/output
# 查看任务执行状态
[root@fgedu.net.cn ~]# yarn application -status application_1620000000000_0001
# 查看任务日志
[root@fgedu.net.cn ~]# yarn logs -applicationId application_1620000000000_0001
Part05-风哥经验总结与分享
5.1 离线任务优化最佳实践
- 合理设置Map和Reduce任务的内存和CPU资源
- 根据数据量调整并行度,避免任务数过多或过少
- 使用数据压缩减少网络传输和存储开销
- 优化数据分区,提高数据局部性
- 合理使用缓存,减少重复计算
- 监控任务执行情况,及时发现和解决问题
5.2 常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 数据倾斜 | 某些Key出现频率过高 | 使用加盐、分区裁剪、自定义分区等方法 |
| 内存溢出 | 任务内存配置不足 | 增加内存配置,优化数据处理逻辑 |
| 任务执行缓慢 | 资源分配不合理 | 调整资源配置,优化任务并行度 |
5.3 性能监控与持续优化
[root@fgedu.net.cn ~]# yum install ganglia-gmond ganglia-web ganglia-gmetad
# 配置Ganglia
[root@fgedu.net.cn ~]# vi /etc/ganglia/gmond.conf
# 启动Ganglia服务
[root@fgedu.net.cn ~]# systemctl start gmond
[root@fgedu.net.cn ~]# systemctl start gmetad
[root@fgedu.net.cn ~]# systemctl start httpd
# 访问Ganglia Web界面
# http://fgedu.net.cn/ganglia
通过持续监控和优化,可以不断提升Hadoop离线计算任务的性能,为业务提供更高效的数据处理能力。学习交流加群风哥QQ113257174
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
