大数据系统在低水平主机的性能优化方案¶
一、虚拟机全局内存策略(所有节点执行)¶
临时释放缓存(每次启动服务前执行)¶
sync && echo 3 > /proc/sys/vm/drop_caches
降低内存抢占倾向¶
echo 10 > /proc/sys/vm/swappiness
永久生效(可选)¶
编辑 /etc/sysctl.conf,添加以下内容:
vm.swappiness=10
vm.vfs_cache_pressure=100
二、Hadoop 优化(所有节点)¶
1. hadoop-env.sh 配置¶
路径:/etc/hadoop/hadoop-env.sh 或 /opt/.../etc/hadoop/hadoop-env.sh
export HDFS_NAMENODE_OPTS="-Xms256m -Xmx256m"
export HDFS_DATANODE_OPTS="-Xms256m -Xmx256m"
export YARN_RESOURCEMANAGER_OPTS="-Xms256m -Xmx256m"
export YARN_NODEMANAGER_OPTS="-Xms256m -Xmx256m"
2. yarn-site.xml 配置¶
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>128</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
三、Hive on Spark 优化(内存爆炸重灾区)¶
1. hive-site.xml 配置¶
<property>
<name>hive.exec.driver.memory</name>
<value>512m</value>
</property>
2. spark-defaults.conf 配置¶
spark.driver.memory 512m
spark.executor.memory 512m
spark.executor.cores 2
spark.executor.instances 2
注意:不要开多 executor,1 个足够跑毕业设计。
四、DolphinScheduler 优化(元凶监控到90%+)¶
编辑 bin/env/dolphinscheduler_env.sh:
# Master Server配置
export MASTER_JAVA_OPTS="-Xms512m -Xmx1g -Xss512k -XX:+UseG1GC -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
# Worker Server配置
export WORKER_JAVA_OPTS="-Xms256m -Xmx512m -Xss512k -XX:+UseG1GC -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
# API/Alert/Logger Server配置
export API_JAVA_OPTS="-Xms512m -Xmx1g -Xss512k -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
export ALERT_JAVA_OPTS="-Xms128m -Xmx256m -Xss512k"
export LOGGER_JAVA_OPTS="-Xms128m -Xmx256m -Xss512k"
五、Kafka 优化¶
编辑 kafka-server-start.sh:
export KAFKA_HEAP_OPTS="-Xms256m -Xmx256m"
六、ZooKeeper 优化(有就改)¶
编辑 zkEnv.sh:
export JVMFLAGS="-Xms128m -Xmx128m"
七、Flume 优化¶
在启动脚本中添加:
export JAVA_OPTS="-Xms128m -Xmx128m"
八、Maxwell 优化¶
在启动脚本中添加:
export JAVA_OPTS="-Xms128m -Xmx256m"
九、MySQL 优化(非常吃内存,必须压)¶
编辑 /etc/my.cnf:
[mysqld]
performance_schema = OFF
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 64M
max_connections = 50
重启 MySQL:
systemctl restart mysqld