You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@uniffle.apache.org by "kunzeng (via GitHub)" <gi...@apache.org> on 2023/08/24 08:02:35 UTC

[GitHub] [incubator-uniffle] kunzeng commented on issue #1169: [DOCS] shuffle-server with low-memory best practice

kunzeng commented on issue #1169:
URL: https://github.com/apache/incubator-uniffle/issues/1169#issuecomment-1691202533

       It's a good issue. In fact, in some cases, the resources of the hosts are strictly allocated. A better thing is that we can test the performance of uniffle under different memory sizes. This can provides a reference for resource allocation for unifle server. 
   
       But, in my case, an error was reported when running the 1tb tpc-ds q4.sql test  with the memory set to 4g for uniffle server, 2g for coordinator.  Just limit the resource of uniffle, because compared to the sortshuffle(spark) , the resources of uniffle are additional. the confs are as follows:
   
   test data: tpc-ds, generated by 1tb, query q4.sql, stored in hive2.1.1, spark2.4.4, uniffle0.7.1, hadoop3.2.1 
   
   spark-defaults.conf:
   spark.driver.memory 32g
   spark.driver.memoryOverhead 8g
   spark.executor.memory 64g
   spark.executor.memoryOverhead 16g
   spark.executor.instances 6
   spark.driver.cores 16
   spark.executor.cores 32
   spark.sql.autoBroadcastJoinThreshold 2
   spark.sql.broadcastTimeout 300
   spark.executor.heartbeatInterval 60
   spark.network.timeout 600
   spark.rss.client.send.check.timeout.ms 1800000
   
   coordinator.conf(We have modified the JVM_ARGS parameter in the start-coordinator. sh file to limit the coordinator resource to 2g, ):
   rss.coordinator.server.heartbeat.timeout 30000
   rss.coordinator.server.periodic.output.interval.times 30
   rss.coordinator.assignment.strategy PARTITION_BALANCE
   rss.coordinator.app.expired 60000
   rss.coordinator.shuffle.nodes.max 3
   rss.coordinator.exclude.nodes.file.path 
   rss.coordinator.exclude.nodes.check.interval.ms 60000
   rss.coordinator.access.checkers 
   rss.coordinator.access.loadChecker.memory.percentage 5.0
   rss.coordinator.dynamicClientConf.enabled true
   rss.coordinator.dynamicClientConf.path /etc/confpath/dynamic_client.conf
   rss.coordinator.dynamicClientConf.updateIntervalSec 120
   rss.coordinator.remote.storage.cluster.conf 
   rss.rpc.server.port 19995
   rss.jetty.http.port 19994
   rss.coordinator.remote.storage.select.strategy APP_BALANCE
   rss.coordinator.remote.storage.io.sample.schedule.time 60000
   rss.coordinator.remote.storage.io.sample.file.size 204800000
   rss.coordinator.remote.storage.io.sample.access.times 3
   rss.coordinator.startup-silent-period.enabled false
   rss.coordinator.startup-silent-period.duration 20000
   
   dynamic_client.conf:
   rss.storage.type MEMORY_LOCALFILE_HDFS
   rss.coordinator.remote.storage.path hdfs://ip:8020/tmp
   rss.writer.require.memory.retryMax 1200
   rss.client.retry.max 50
   rss.writer.send.check.timeout 600000
   rss.client.read.buffer.size 14m
   rss.client.send.check.timeout.ms 1800000
   
   server.conf:
   rss.rpc.server.port 19992
   rss.jetty.http.port 19991
   rss.rpc.executor.size 1000
   rss.storage.basePath /mnt/ssd1/data/rssdata,/mnt/ssd2/data/rssdata,/mnt/ssd3/data/rssdata,/mnt/ssd4/data/rssdata,/mnt/ssd5/data/rssdata,/mnt/disk1/data/rssdata,/mnt/disk2/data/rssdata,/mnt/disk3/data/rssdata,/mnt/disk4/data/rssdata,/mnt/disk5/data/rssdata
   rss.server.flush.thread.alive 120
   rss.server.heartbeat.timeout 60000
   rss.rpc.message.max.size 1073741824
   rss.server.preAllocation.expired 20000
   rss.server.app.expired.withoutHeartbeat 60000
   rss.server.buffer.capacity 3g
   rss.server.memory.shuffle.highWaterMark.percentage 10.0
   rss.server.memory.shuffle.lowWaterMark.percentage 5.0
   rss.server.read.buffer.capacity 512m
   rss.server.heartbeat.interval 10000
   rss.server.flush.threadPool.size 10
   rss.server.commit.timeout 600000
   rss.storage.type MEMORY_LOCALFILE_HDFS
   rss.server.flush.cold.storage.threshold.size 32m
   rss.server.tags 
   rss.server.single.buffer.flush.enabled true
   rss.server.single.buffer.flush.threshold 32m
   rss.server.disk.capacity -1
   rss.server.localstorage.initialize.max.fail.number 1
   rss.coordinator.access.loadChecker.serverNum.threshold 1
   rss.coordinator.access.candidates.updateIntervalSec 120
   rss.coordinator.access.candidates.path 
   
   rss-env.sh:
   RSS_HOME=/usr/lib/uniffle
   RSS_CONF_DIR=/etc/uniffle
   RSS_PID_DIR=/var/uniffle
   RSS_LOG_DIR=/mnt/disk1/log/uniffle
   JAVA_HOME=/usr/lib/jdk1.8
   HADOOP_HOME=/usr/lib/hadoop
   XMX_SIZE=4g
   
   uniffle server is normal, but spark thrown an exception, and the task ends, exts.
   org.apache.spark.SparkException: Job aborted due to stage failure: Task 25 in stage 1.0 failed 4 times, most recent failure: Lost task 25.3 in stage 1.0 (TID 4604, xshbp225.bigdata.hikvision.com, executor 5): org.apache.uniffle.common.exception.RssException: Send failed: Task[4604_3] failed because 200 blocks can't be sent to shuffle server.
           at org.apache.spark.shuffle.writer.RssShuffleWriter.checkBlockSendResult(RssShuffleWriter.java:299)
           at org.apache.spark.shuffle.writer.RssShuffleWriter.writeImpl(RssShuffleWriter.java:194)
           at org.apache.spark.shuffle.writer.RssShuffleWriter.write(RssShuffleWriter.java:167)
           at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:99)
           at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:55)
           at org.apache.spark.scheduler.Task.run(Task.scala:123)
           at org.apache.spark.executor.Executor$TaskRunner$$anonfun$10.apply(Executor.scala:408)
           at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1360)
           at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:414)
           at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
           at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
           at java.base/java.lang.Thread.run(Thread.java:834)
   
   Some optimization operations(useless):
   set rss.server.buffer.capacity 3g or 2g
   rss.server.memory.shuffle.highWaterMark.percentage 10.0 or 20.0, 30.0 
   rss.server.memory.shuffle.lowWaterMark.percentage 5.0 or 10.0
   rss.server.single.buffer.flush.threshold 32m or 64m, 16m, 4m
   rss.server.read.buffer.capacity 512m or 256m, 1g
   rss.server.single.buffer.flush.enabled true or false
   
   Big workers,have any other parameter tuning or suggestions for uniflle under limited resource conditions? thanks


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@uniffle.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@uniffle.apache.org
For additional commands, e-mail: issues-help@uniffle.apache.org