跳转至

大数据系统在低水平主机的性能优化方案

一、虚拟机全局内存策略(所有节点执行)

临时释放缓存(每次启动服务前执行)

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

评论