Một vài rule để tuning Spark (và java/scala nói chung)
Scala
50
Java
85
Spark
4
White

huydx viết ngày 01/09/2015

Tuning memory

Về cơ bản thì để tuning memory trong java hay scala nói chung thì bạn chỉ cần nhớ rõ một vài điều:

  • Tận dụng primitive object bất cứ khi nào có thể thay vì "box" nó vào java/scala class như là String hay là Integer...
  • Tận dụng primitive array (có dạng T[]) bất cứ khi nào có thể thay vì List hay HashMap...

Tại sao nên làm như vậy thì có một vài lý do sau:

  • Mỗi Java Object đều chứa "object header" trong đó có các thông tin như là pointer đến class. Phần header này có tới tận 16 byte, thế nên trong nhiều trường hợp header còn to hơn cả data chứa trong nó
  • Java String class có tới tận 40byte overhead so với một chuỗi thông thường (String("foo") vs "foo")
  • Một số cấu trúc dữ liệu như HashMap hay LinkedList sẽ dùng tới tận 8byte để chứa pointer trỏ tới object kế tiếp -> nếu không cần dùng đến các method liên quan thì đừng dùng các cấu trúc dữ liệu này.

Tuning GC

Với JVM thì

Cost mỗi khi chạy GC tỉ lệ thuận với số object trong heap

Thế nên để giảm cost này thì bạn nên giảm thiểu các cấu trúc dữ liệu mà bên trong lại chứa nhiều object con.
Spark sử dụng một khái niệm gọi là RDD để lưu dữ liệu, RDD thường hay được "cached" lại trong RAM để giảm loading cost. Thế nên kiểm soát lượng memory được cấp cho RDD để cache sẽ ảnh hưởng đến GC khá nhiều. Điều này có thể được kiểm soát bằng cách thay đổi biến spark.executor.memory trong Spark Config.

Để debug được GC thì bạn chỉ cần thêm vào java option lúc execute spark:

-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

huydx

118 bài viết.
1063 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
166 15
Introduction (Link) là một cuộc thi ở Nhật, và cũng chỉ có riêng ở Nhật. Đây là một cuộc thi khá đặc trưng bởi sự thú vị của cách thi của nó, những...
huydx viết 2 năm trước
166 15
White
157 16
Một ngày đẹp trời, bạn quyết định viết một dịch vụ web dự định sẽ làm thay đổi cả thế giới. Dịch vụ của bạn sẽ kết nối tất cả các thiết bị di động ...
huydx viết 3 tháng trước
157 16
White
135 15
Happy programmer là gì nhỉ, chắc ai đọc xong title của bài post này cũng không hiểu ý mình định nói đến là gì :D. Đầu tiên với cá nhân mình thì hap...
huydx viết hơn 3 năm trước
135 15
Bài viết liên quan
White
10 0
Kí tự Regex cơ bản Về cơ bản thì các sử lý matching của scala.util.matching.Regex sẽ được "phó thác" (delegate) cho java Regex. Bạn có thể tạo một ...
huydx viết hơn 3 năm trước
10 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
118 bài viết.
1063 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!