Một vài rule để tuning Spark (và java/scala nói chung)
Scala
50
Java
77
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

116 bài viết.
945 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
148 14
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 gần 2 năm trước
148 14
White
118 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
118 15
White
95 10
(Ảnh) Mở đầu Chắc nhiều bạn đã nghe đến khái niệm oauth. Về cơ bản thì oauth là một phương thức chứng thực, mà nhờ đó một web service hay một ap...
huydx viết 3 năm trước
95 10
Bài viết liên quan
White
0 0
Trong bài viết này, một số hình ảnh hoặc nọi dung có thể bị thiếu do quá trình chế bản. Vui lòng xem nội dung ở blog gốc sau: (Link) (Link), chúng...
programmerit viết gần 3 năm trước
0 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
116 bài viết.
945 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á!