Kỹ thuật tối ưu hóa cho nền tảng điện toán phân tán trong bộ nhớ bằng cách tận dụng SSD Phần 2

Aug 17, 2023

3.1. Môi trường cụm

Hình 1 cho thấy cụm thử nghiệm của chúng tôi bao gồm một nút tên (chính) và bốn nút dữ liệu (nô lệ). Trong nút tên (chính), chúng tôi đã định cấu hình NameNode và NameNode phụ của Hadoop (HDFS) và Nút điều khiển (nút chính) của Spark. Trong mỗi nút dữ liệu, chúng tôi chạy DataNode của Hadoop (HDFS) và Worker Node của Spark. Các máy nút tên và nút dữ liệu có cùng môi trường H/W (Bộ xử lý lõi tứ Xeon E3-1240V3 3,4 GHz với siêu phân luồng), ngoại trừ dung lượng bộ nhớ chính (8 GB cho nút tên và 4 GB cho mỗi nút dữ liệu).

Namename là nút Master trong kiến ​​trúc Hadoop, chịu trách nhiệm quản lý và giám sát hệ thống tệp của toàn bộ cụm Hadoop. Nút Namename cũng là một trong những nút quan trọng của toàn bộ cụm Hadoop. Hiệu suất và độ tin cậy của nó sẽ ảnh hưởng trực tiếp đến hiệu quả hoạt động và tính khả dụng của toàn bộ cụm Hadoop.

Có rất nhiều chỉ số liên quan đến nút Namename, một trong những chỉ số quan trọng nhất là bộ nhớ. Nút Tên tên yêu cầu nhiều bộ nhớ để lưu trữ và quản lý không gian tên của toàn bộ hệ thống tệp HDFS, bao gồm thông tin siêu dữ liệu của tệp và thư mục, chẳng hạn như tên tệp, quyền, dấu thời gian, kích thước tệp, v.v.

Bộ nhớ của nút Namename không chỉ xác định số lượng tệp mà nó có thể quản lý và kích thước của hệ thống tệp mà còn ảnh hưởng đến hiệu suất và độ tin cậy của cụm Hadoop. Nếu nút Tên tên không đủ bộ nhớ, nút này sẽ không thể phản hồi nhanh các yêu cầu của máy khách, dẫn đến thông lượng của toàn bộ cụm Hadoop bị giảm. Ngoài ra, nếu nút Tên tên bị lỗi, thông tin siêu dữ liệu mà nó lưu trữ có thể bị mất, khiến toàn bộ hệ thống tệp HDFS không khả dụng.

Do đó, trong cụm Hadoop, bộ nhớ của nút Tên tên là rất quan trọng. Quản trị viên nên chọn cấu hình phần cứng nút Tên tên phù hợp dựa trên nhu cầu kinh doanh cụ thể và thường xuyên theo dõi hiệu suất cũng như tính khả dụng của nút Tên tên để đảm bảo rằng chúng có thể cung cấp các dịch vụ hiệu quả và đáng tin cậy cho toàn bộ cụm Hadoop. Có thể thấy rằng chúng ta cần phải cải thiện trí nhớ của mình. Cistanche có thể cải thiện đáng kể trí nhớ vì bột thịt là một loại dược liệu cổ truyền của Trung Quốc với nhiều tác dụng độc đáo, một trong số đó là cải thiện trí nhớ. Hiệu quả của thịt băm đến từ nhiều hoạt chất khác nhau, bao gồm axit cacboxylic, polysacarit, flavonoid, v.v. Những thành phần này có thể tăng cường sức khỏe não bộ thông qua nhiều kênh khác nhau.

improving brain function

Bấm vào biết thực phẩm bổ sung để tăng cường trí nhớ

Chúng tôi đã sử dụng hai ổ SSD làm không gian lưu trữ, trong đó một ổ SSD SATA3 120 GB được sử dụng cho hệ điều hành và một ổ SSD SATA3 512 GB tương ứng được trang bị cho HDFS. Ngoài ra, SSD SATA3 512 GB có thể được tận dụng một cách hiệu quả để mở rộng băng thông khi bộ nhớ chính không đủ để lưu trữ RDD của Spark. Tất cả các nút bao gồm nút tên và nút dữ liệu đều được kết nối bằng bộ chuyển mạch Ethernet 1 Gb, như trong Hình 1. Bảng 2 hiển thị tóm tắt về cấu hình phần cứng và phần mềm trong mỗi nút dữ liệu của cụm thử nghiệm của chúng tôi.

boost memory

10 ways to improve memory

3.2. Spark JVM Heap

Công việc Spark chạy dưới dạng quy trình Java trên Máy ảo Java (JVM) và Spark khai thác Scala, một ngôn ngữ chức năng được mở rộng từ Java. Quy trình công nhân của Spark cũng chạy trên JVM của từng nút dữ liệu, do đó trên mỗi nút dữ liệu, quy trình công nhân có vùng heap JVM trong bộ nhớ chính như được mô tả trong Hình 2. Khi Spark gửi một công việc, quy trình công nhân có vùng heap JVM thực thi công việc dưới dạng các tác vụ được phân phối.

short term memory how to improve

Chúng ta có thể tùy chỉnh tỷ lệ kích thước vùng heap JVM của Spark Worker thông qua tệp cấu hình spark-defaults. conf trong thư mục spark/conf/. Trong tệp spark defaults.conf, giá trị của spark.executor.memory là kích thước vùng heap JVM trong đó mặc định là 512 MB mà mỗi nút worker có thể sử dụng trong nút dữ liệu. Ngoài ra, giá trị của spark.storage.safetyFraction được cố định là 0.9, nghĩa là Spark có thể sử dụng tới 90% kích thước vùng heap JVM (còn được gọi là vùng an toàn). Điều này nhằm ngăn JVM tạo ra lỗi OOM (hết bộ nhớ) do thiếu bộ nhớ chính khả dụng trong quá trình xử lý tác vụ.

Trong khu vực an toàn này, không gian vùng heap JVM tổng thể được chia thành ba vùng phụ: không gian hủy kiểm soát, không gian lưu trữ và không gian xáo trộn, như trong Hình 2. Không gian không kiểm soát được sử dụng để hủy kiểm soát các khối dữ liệu trong bộ nhớ. Khi RDD được lưu vào bộ nhớ đệm trên các phương tiện lưu trữ khác như SSD hoặc HDD không có trên bộ nhớ chính, RDD phải được tuần tự hóa. Sau đó, khi Spark đọc RDD này trở lại bộ nhớ, RDD phải được hủy kiểm soát. Không gian lưu trữ được sử dụng để lưu trữ RDD. Nếu dung lượng lưu trữ không đủ để lưu trữ RDD vào bộ đệm, một số RDD có thể bị loại bỏ khỏi không gian này dựa trên chính sách LRU (ít được sử dụng gần đây nhất) hoặc chúng có thể được lưu vào bộ đệm trên phương tiện lưu trữ khác, chẳng hạn như SSD. Không gian xáo trộn được sử dụng để xáo trộn dữ liệu trung gian. Không gian xáo trộn này có thể đóng một vai trò quan trọng trong các ứng dụng lặp lại như học máy vì nó có thể ảnh hưởng đáng kể đến thời gian hoàn thành công việc tổng thể.

Trong cấu hình Spark mặc định, không gian lưu trữ và không gian xáo trộn của vùng heap JVM có tỷ lệ phân số dung lượng lần lượt là {{0}}.6 và 0.2 (tức là 60 % diện tích an toàn để lưu trữ và 20% cho việc phát ngẫu nhiên). Theo mặc định, không gian chưa đăng ký chiếm 20% dung lượng lưu trữ. Dung lượng của ba khoảng trống này của vùng heap JVM có thể được thiết lập bằng một tia lửa. storage.unrollFraction, spark.storage.memoryFraction và spark.shuffle.memoryFraction. Ví dụ: trong cụm thử nghiệm của chúng tôi, chúng tôi có thể đặt spark.executor.memory là 2,6 GB trong bộ nhớ 4 GB của nút worker, điều đó có nghĩa là kích thước vùng heap JVM được đặt ở mức tối đa là 2,6 GB. Khi đó, dung lượng thực tế của không gian lưu trữ và không gian xáo trộn là 2,6 GB × 0.9 × 0.6 = 1.4 GB và 2,6 GB × 0,9 × 0.2=0.46 GB, tương ứng. Theo đó, dung lượng chưa đăng ký chiếm 1,4 GB × 0.2=0,28 GB.

3.3. Chính sách bộ đệm RDD

Nền tảng Spark cung cấp các tùy chọn bộ nhớ đệm RDD đa dạng liên quan đến bộ nhớ chính và ổ đĩa. Tùy chọn mặc định là CHỈ BỘ NHỚ_, trong đó RDD được duy trì trong không gian lưu trữ được mô tả trong Phần 3.2 dưới dạng đối tượng Java không được tuần tự hóa. Nếu không gian lưu trữ này không đủ để chứa tất cả RDD, một số RDD sẽ bị xóa khỏi bộ nhớ chính dựa trên chính sách thay thế bộ đệm được xác định trước. Tuy nhiên, bất cứ khi nào cần có RDD không được lưu vào bộ nhớ đệm để xử lý tác vụ, RDD này phải được tạo lại dựa trên thông tin dòng. Điều này có thể dẫn đến suy giảm hiệu suất đáng kể trong chính sách bộ nhớ đệm CHỈ CÓ BỘ NHỚ này.

Bên cạnh tùy chọn CHỈ BỘ NHỚ_, Spark còn cung cấp các tùy chọn CHỈ BỘ NHỚ_VÀ{2}}ĐĨA, CHỈ ĐĨA_ và TẮT{4}}HEAP thay thế. Tùy chọn BỘ NHỚ_VÀ{6}}DISK lưu trữ RDD trong đĩa cố định khi dung lượng lưu trữ không đủ để lưu trữ tất cả RDD cần thiết. Đĩa có thể bao gồm ổ cứng HDD hoặc SSD; tuy nhiên, các đĩa trục thông thường có thông lượng đọc/ghi tương đối kém, do đó, thời gian thực thi tổng thể có thể dài hơn so với tùy chọn bộ nhớ đệm CHỈ CÓ BỘ NHỚ. Để giải quyết vấn đề này, chúng tôi có thể tận dụng ổ SSD một cách hiệu quả, có khả năng giảm thời gian hoàn thành công việc tổng thể so với phương pháp dựa trên ổ cứng thông thường.

improve cognitive function

Tùy chọn CHỈ ĐĨA_chỉ lưu trữ RDD trong các thiết bị lưu trữ cố định như HDD hoặc SSD, tức là không lưu trữ trong bộ nhớ chính. Một cụm không có đủ bộ nhớ khả dụng có thể đạt được hiệu suất tốt với tùy chọn này. Trong trường hợp này, vì RDD chỉ được lưu trữ trên phương tiện đĩa nên không gian xáo trộn có thể được mở rộng thay vì sử dụng không gian lưu trữ của bộ nhớ. Kết quả là khi chạy một ứng dụng như PageRank, ứng dụng tạo ra lượng dữ liệu ngẫu nhiên tương đối lớn, chúng tôi có thể quan sát thấy hiệu suất tốt hơn so với trường hợp CHỈ CÓ BỘ NHỚ.

Tùy chọn TẮT{0}}HEAP cho phép Spark sử dụng không gian ngoài vùng nhớ heap, nằm ngoài tầm quản lý của trình thu gom rác Java. Do đó, nếu chúng ta sử dụng không gian ngoài heap, chúng ta phải xử lý các hoạt động bộ nhớ phức tạp như phân bổ/giải phóng và tuần tự hóa/giải tuần tự hóa. Do đó, vì mục đích thực tế, chúng tôi không sử dụng cấu hình HEAP TẮT{3}}.

3.4. Phương pháp tối ưu hóa

Như chúng ta đã thảo luận trong Phần 3.2 và 3.3, các phương pháp tối ưu hóa của chúng tôi bao gồm (1) cấu hình của vùng heap Spark Spark và (2) các tùy chọn thử nghiệm của chính sách bộ nhớ đệm RDD như sau:

1. Cấu hình vùng nhớ heap của Spark JVM: Chúng tôi đã nghiên cứu tác động của việc thay đổi tỷ lệ phân số dung lượng của không gian lưu trữ và xáo trộn. Tỷ lệ xáo trộn và không gian lưu trữ lần lượt là 60%:30%, 50%:40% và 20%:60%. Tỷ lệ lưu trữ và xáo trộn "20%:60%" là giá trị mặc định trong thiết lập Spark. Chúng tôi chọn "60%:30%" để tương phản kết quả với đủ không gian xáo trộn và định cấu hình "50%:40%" để hiển thị hiệu suất một cách cân bằng.

2. Chính sách bộ nhớ đệm RDD: Chúng tôi cũng đã kiểm tra tác động của các chính sách bộ nhớ đệm RDD khác nhau. Chúng tôi đã so sánh hiệu suất của nhiều chính sách khác nhau như TẮT_HEAP, MEMORY_CHỈ, MEMORY_VÀ_DISK và CHỈ DISK_, trong đó DISK biểu thị SSD trong thử nghiệm này.

Bảng 3 cho thấy tổng cộng 12 cấu hình thử nghiệm khác nhau dựa trên chính sách bộ nhớ đệm RDD và tỷ lệ phân số dung lượng Spark JVM. Trong các cấu hình thử nghiệm được gắn nhãn "_1" (ví dụ: "N_1"), chúng tôi đặt 60% vùng nhớ Spark JVM để xáo trộn và 30% cho không gian lưu trữ. Với những nhãn được gắn nhãn "_2", chúng tôi đặt 50% vùng nhớ Spark JVM để xáo trộn và 40% để lưu trữ. Cuối cùng, đối với những người được gắn nhãn "_3", chúng tôi đặt 20% vùng nhớ Spark JVM để xáo trộn và 60% để lưu trữ, như có thể thấy từ các cột "Tùy chọn", "Xáo trộn" và "Bộ nhớ" trong Bảng 3. Lưu ý rằng kích thước bộ nhớ tối đa của bộ thực thi của cụm thử nghiệm của chúng tôi là 2,7 GB, tức là mỗi nút công nhân có 2,7 GB làm kích thước vùng heap Spark JVM.

ways to improve memory

Về chính sách bộ đệm RDD, tùy chọn "N" không phải là bộ nhớ đệm RDD, tùy chọn "M" là chỉ lưu bộ đệm RDD trên bộ nhớ, tùy chọn "M&S" là lưu RDD trên bộ nhớ và SSD cùng nhau, và cuối cùng, tùy chọn "S" chỉ dành cho bộ nhớ đệm RDD trên SSD.

Thông qua các thử nghiệm của mình, chúng tôi đề xuất các chiến lược tối ưu hóa có thể đạt được hiệu suất tốt nhất từ ​​cụm không đủ dung lượng bộ nhớ bằng cách điều chỉnh cẩn thận cấu hình vùng heap Spark Spark và sử dụng chính sách bộ nhớ đệm RDD hiệu quả, như chúng ta sẽ thấy trong Phần 4.

4. Kết quả và phân tích thí nghiệm

4.1. Thử nghiệm Xếp hạng Trang 500 MB

4.1.1. Kết quả với việc thay đổi cấu hình vùng heap JVM

Hình 3 cho thấy kết quả thử nghiệm của từng giai đoạn trong khối lượng công việc PageRank bằng cách thay đổi kích thước vùng heap JVM. Ở giai đoạn Khác biệt, Spark đọc dữ liệu đầu vào và phân biệt URL và liên kết. Như chúng ta có thể thấy từ kết quả của giai đoạn Distinct0, thời gian thực thi tổng thể giảm bằng cách thay đổi kích thước vùng nhớ heap JVM từ các tùy chọn _1 và _2 thành _3, chủ yếu là do tới bộ thu gom rác (GC). Ví dụ: thời gian GC lần lượt là 25 giây, 24 giây và 16 giây trong M&S_1, M&S_2 và M&S{{10}}. Do đó, trong giai đoạn{19}} riêng biệt, khi tăng dung lượng lưu trữ, chúng tôi có thể cải thiện hiệu suất tổng thể bằng cách giảm thời gian GC. Mặt khác, trong giai đoạn Distinct1, thời gian thực hiện tổng thể tăng lên khi chúng tôi thay đổi các tùy chọn từ _1 và _2 thành _3. Điều này chủ yếu là do sự cố tràn shuffle. Khi chúng tôi kiểm tra giao diện người dùng web Spark, dữ liệu ngẫu nhiên đã bị tràn vào đĩa do thiếu dung lượng bộ nhớ ngẫu nhiên. Ví dụ: kích thước của dữ liệu tràn ngẫu nhiên trên đĩa trong M&S_1, M&S_2 và M&S_3 lần lượt là 0, 220 MB và 376 MB. Khi xảy ra hiện tượng tràn ngẫu nhiên, chi phí CPU dành cho việc đổ dữ liệu vào đĩa sẽ tăng lên vì dữ liệu cần phải được tuần tự hóa.

memory enhancement

Sau các giai đoạn Khác biệt, có các giai đoạn Bản đồ phẳng lặp đi lặp lại để đạt được thứ hạng. Các giai đoạn FlatMap tạo ra nhiều dữ liệu xáo trộn, điều này có thể khiến cụm của chúng tôi thiếu dung lượng bộ nhớ xáo trộn cần thiết. Do đó, khi lượng không gian xáo trộn có sẵn giảm (theo thứ tự từ các tùy chọn _1, _2 và _3), thì tình trạng tràn xáo trộn có thể xảy ra nhiều hơn, điều này có khả năng ảnh hưởng đến việc thực hiện công việc tổng thể thời gian (ví dụ: tùy chọn M&S giai đoạn flatMap2 _1: 37 giây, _2: 40 giây, _3: 49 giây). Tuy nhiên, khi dữ liệu chỉ được lưu vào bộ nhớ đệm (tức là M_1, M_2 và M_3), chúng sẽ hiển thị một mẫu khác. Lý do chính cho hành vi này là bộ lập lịch Spark lên lịch các tác vụ không đồng đều do thiếu dung lượng lưu trữ bộ nhớ để lưu vào bộ nhớ đệm RDD trên các tùy chọn _1 và _2. Nếu một công nhân không có RDD, anh ta sẽ bị loại khỏi nhóm lập lịch. Do đó, các công nhân khác phải xử lý các nhiệm vụ bổ sung với chi phí GC có thể ảnh hưởng đến toàn bộ thời gian thực hiện công việc.

4.1.2. Kết quả với việc thay đổi tùy chọn bộ nhớ đệm RDD

Trước hết, các giai đoạn riêng biệt không bị ảnh hưởng bởi việc thay đổi chính sách bộ nhớ đệm RDD mà chỉ bị ảnh hưởng bởi việc sử dụng bộ nhớ. Các giai đoạn bị ảnh hưởng bởi tùy chọn bộ nhớ đệm RDD là các giai đoạn FlatMap vì trong giai đoạn xáo trộn, các RDD được lưu trong bộ nhớ đệm sẽ được sử dụng lại.

improve working memory

Trong Hình 4, biểu đồ được chuẩn hóa bằng tùy chọn N_1 không lưu cấu hình bộ nhớ RDD và _1 để kiểm tra sự khác biệt về hiệu suất. Khi chỉ so sánh các biểu đồ của _1, theo thứ tự M_1, M&S_1 và S_1, hiệu suất của M{{8 bị suy giảm 32% }} và cải thiện hiệu suất lần lượt là 30% và 20% với M&S_1 và S_1. Với tùy chọn M_1, nguyên nhân dẫn đến hiệu suất tương đối kém là do RDD được lưu vào bộ nhớ đệm không đồng đều do thiếu bộ nhớ, điều này sẽ dẫn đến việc lập lịch không đồng đều như chúng tôi đã đề cập trước đó. Điều này có nghĩa là không gian vùng heap JVM không đủ để xáo trộn dữ liệu và lưu RDD.

increase brain power

Để giải quyết vấn đề này, chúng tôi đã phân bổ RDD vào bộ nhớ đệm trên cả bộ nhớ và SSD, điều này có thể cải thiện hiệu suất như được hiển thị với tùy chọn M&S{0}}. Việc lưu RDD vào bộ nhớ đệm sẽ cải thiện tốc độ truy cập cho RDD và việc lưu RDD vào bộ nhớ đệm trên SSD có thể tránh hiện tượng tràn xáo trộn bằng cách mở rộng hiệu quả không gian xáo trộn có sẵn trong bộ nhớ. Với tùy chọn S_1 đã cải thiện hiệu suất 20%, RDD chỉ được lưu vào bộ nhớ đệm trên SSD. Sự cố tràn xáo trộn được giảm bớt bằng cách lưu trữ RDD trên SSD. Tuy nhiên, nó đạt được mức cải thiện hiệu suất thấp hơn M&S_1, trong đó RDD chủ yếu được lưu vào bộ nhớ đệm và được sử dụng lại từ bộ nhớ.

Trong cấu hình mặc định của Spark, là tùy chọn _3, chúng ta có thể thấy điều đó theo thứ tự M_3, M&S_3, S_3 và N{{4 }}, hiệu suất tổng thể sẽ giảm. Trong cấu hình mặc định, việc lưu trữ vùng heap JVM đủ để RDD được lưu vào bộ nhớ đệm một cách cân bằng. Do đó, hiệu suất tổng thể chủ yếu phụ thuộc vào hiệu suất của thiết bị bộ nhớ được sử dụng. Tuy nhiên, chúng tôi vẫn có thể thấy hiệu suất tốt nhất với tùy chọn M&S_1 vì chúng tôi có thể giảm thời gian GC và phát ngẫu nhiên một cách hiệu quả bằng cách lưu RDD vào bộ nhớ đệm cả trên bộ nhớ và SSD.

4.2. Hiệu suất xếp hạng trang 1 GB

Chúng tôi đã thử nghiệm khối lượng công việc của PageRank bằng cách tăng kích thước dữ liệu từ 500 MB lên 1 GB. Hình 5 cho thấy các hành vi khác nhau của hệ thống so với PageRank đối với tập dữ liệu 500 MB. Chúng ta có thể thấy một số công việc thất bại không thể hoàn thành công việc cho đến giai đoạn take6 (ví dụ: N_1, N_2, M_1, M_2, M _3, M&S{10}}). Trong số các công việc thất bại này, có những công việc thất bại ở giai đoạn FlatMap2, đó là N_1, N_2 và M_1. Nguyên nhân thất bại trong công việc là do thiếu bộ nhớ lưu trữ. GC xảy ra khi RDD được lưu vào bộ nhớ đệm do không đủ bộ nhớ. Do chi phí GC này, người thực thi Spark nhận được ngoại lệ ExecutorLostFailure.

M_2, M_3 và M&S_3 có thể tiếp tục xử lý cho đến giai đoạn FlatMap2; tuy nhiên, sau đó, sự cố xảy ra. M&S_3 hoạt động tương tự như M_3 cho đến giai đoạn FlatMap2 vì khi sử dụng tùy chọn M&S_3, sẽ có đủ bộ nhớ để lưu trữ RDD. Sau FlatMap2, lỗi OutOfMemory xảy ra do thiếu dung lượng bộ nhớ xáo trộn trong giai đoạn FlatMap3.

4.2.1. Kết quả với việc thay đổi cấu hình vùng heap JVM

Giai đoạn Distinct0 hiển thị các kết quả rất giống với tập dữ liệu 500 MB và hiệu suất tổng thể được cải thiện theo thứ tự tùy chọn _1, _2 và _3. Điều này là do thời gian GC giảm xuống lần lượt là 78 ​​giây, 59 giây và 28 giây.

Mặt khác, ở giai đoạn Distinct1, nó hiển thị các kết quả khác nhau đối với tập dữ liệu 500 MB. Trong thử nghiệm tập dữ liệu 500 MB, chúng ta có thể thấy hiệu suất đạt được bằng cách tăng không gian xáo trộn của bộ nhớ. Tuy nhiên, trong thử nghiệm tập dữ liệu 1GB, bộ nhớ thực thi của nút công nhân không thể chứa được kích thước dữ liệu lớn. Do đó, không gian xáo trộn của bộ nhớ trở nên tương đối không đủ. Ví dụ: lượng tràn ngẫu nhiên cho các tùy chọn _1, _2 và _3 lần lượt là 575,5 MB, 813,8 MB và 843,4 MB và thời gian GC mất 33 giây, 10 s và 8 giây tương ứng. Như chúng tôi đã đề cập trước đây, khi xảy ra sự cố tràn ngẫu nhiên, RDD cần được sắp xếp theo thứ tự để số lượng tính toán của CPU có thể tăng lên, điều này có thể dẫn đến suy giảm hiệu suất tổng thể.

increase memory power

4.2.2. Kết quả của việc thay đổi chính sách bộ đệm RDD

Để phân tích thời gian thực hiện bằng cách thay đổi chính sách bộ đệm RDD, như có thể thấy trong Hình 6, chúng tôi loại trừ các giai đoạn riêng biệt khỏi Hình 5. Điều này là do chúng tôi không cần phân tích các giai đoạn riêng biệt vì không có thay đổi nào gây ra bởi việc thay đổi chính sách bộ đệm RDD .

Điều thú vị là không có thay đổi nào với các cấu hình vùng heap JVM khác nhau trong các giai đoạn FlatMap trái ngược với trường hợp của tập dữ liệu 500 MB. Nguyên nhân là do hiện tượng tràn ngẫu nhiên xảy ra ở tất cả các cấu hình do không đủ bộ nhớ. Thời gian thực hiện tổng thể bằng cách thay đổi tùy chọn bộ nhớ đệm RDD tăng theo thứ tự M&S, S, N và M. (M&S là tùy chọn nhanh nhất.) Trong tùy chọn N, lỗi ExecutorLostFailure xảy ra do không đủ dung lượng bộ nhớ. Trong tùy chọn M, khi RDD được lưu vào bộ nhớ đệm, GC sẽ xảy ra do không đủ dung lượng bộ nhớ. Ngay cả khi RDD được lưu vào bộ nhớ đệm, công việc vẫn không thành công do lỗi ExecutorLostFailure xảy ra khi không gian bộ nhớ xáo trộn không đủ (OutOfMemory).

Trong những tình huống bộ nhớ khả dụng thấp như vậy, các tùy chọn M&S và S có thể là những lựa chọn thay thế hiệu quả. Trong tùy chọn M&S{0}}, chúng tôi tăng khả năng truy cập của RDD bằng cách lưu trữ RDD vào bộ nhớ đệm bằng cả bộ nhớ và SSD. Kết quả là hiệu suất được cải thiện vì lý do tương tự như tập dữ liệu 5{8}}0 MB. Ngoài ra, có đủ dung lượng bộ nhớ xáo trộn do lưu trữ RDD trên SSD. Như được thấy trong Hình 6, tùy chọn M&S_1 trở thành tùy chọn nhanh nhất trong thử nghiệm này (M&S_1:0.6, S_1:0.63, T_1 0.64).

improve short term memory

4.3. Phân tích thí nghiệm TC

Hình 7 cho thấy kết quả của các thử nghiệm TC (đóng bắc cầu) sử dụng dữ liệu đầu vào liên quan đến 50,000 cạnh và 25,000 đỉnh được tạo ngẫu nhiên. Số lần lặp là 10. Thông qua các lần lặp, số lượng tác vụ được nhân đôi ở mỗi lần lặp, và do đó, kích thước của RDD tăng lên và số lượng đọc và ghi ngẫu nhiên cũng tăng lên. Trong lần lặp cuối cùng, số lượng nhiệm vụ trở thành 4096. Vì có nhiều giai đoạn lặp lại hơn nên tổng thời gian thực hiện công việc sẽ bị ảnh hưởng lớn hơn và giai đoạn lặp lại cuối cùng là lớn nhất, bao gồm nhiều nhiệm vụ có thể làm giảm hiệu suất tổng thể .

increase memory

Như chúng ta có thể thấy trong Hình 7, hiệu suất được cải thiện theo thứ tự _3, _2 và _1 trên các tùy chọn M, M&S và S, có nghĩa là có được đủ sự xáo trộn bộ nhớ của vùng heap JVM rất hữu ích. Với tùy chọn M, hiệu suất của tùy chọn _1 nhanh hơn 18% so với tùy chọn _3, trong khi đó, ở tùy chọn M&S, hiệu suất của tùy chọn _1 nhanh hơn 3% so với {{9 }}. Trong tùy chọn S, hiệu suất của _1 nhanh hơn _3 2%.

Khi chúng tôi tập trung vào việc thay đổi tùy chọn bộ đệm RDD, hiệu suất của tùy chọn S_1 nhanh hơn 42% so với N_1 và cũng nhanh hơn 31% so với M_1. Lý do đạt được hiệu suất trong thời gian thực hiện công việc phụ thuộc vào giai đoạn lặp lại cuối cùng. Yếu tố chính ảnh hưởng đến giai đoạn lặp lại cuối cùng là thời gian bị chặn đọc ngẫu nhiên. Thời gian chặn đọc ngẫu nhiên xảy ra khi RDD được thực thi ở giai đoạn trước được đọc từ một nút công nhân khác qua mạng do thiếu bộ nhớ thực thi.

Ngay cả khi mỗi tác vụ có mức tăng hiệu suất khoảng 1–2 giây thông qua việc giải quyết thời gian bị chặn đọc ngẫu nhiên, chúng ta có thể đạt được mức tăng hiệu suất đáng kể vì ở trạng thái cuối cùng, số lượng tác vụ khá lớn (tức là 4096). Ngoài ra, một trong những yếu tố chính ảnh hưởng đến thời gian thực hiện công việc là giai đoạn đếm, tính xem ma trận TC có bao nhiêu cạnh ở công việc cuối cùng.

Với tùy chọn N, vì không có RDD nào được lưu trong bộ nhớ đệm trong giai đoạn đếm, Spark đọc dữ liệu xáo trộn được thực thi từ giai đoạn trước, mất 60 giây. Ngoài ra, trong tùy chọn M, RDD không được lưu vào bộ nhớ do thiếu bộ nhớ thực thi. Kết quả là nó cũng mất 60 giây. Tuy nhiên, trong các tùy chọn M&S và S, RDD có thể được lưu vào bộ nhớ đệm và SSD, do đó chỉ mất 2 giây trong giai đoạn đếm.

4.4. Phân tích thử nghiệm TeraSort

Hình 8 cho thấy kết quả thử nghiệm của điểm chuẩn TeraSort sử dụng bộ dữ liệu 10 GB bằng cách thay đổi cấu hình vùng heap JVM và tùy chọn bộ nhớ đệm RDD. Biểu đồ này được chuẩn hóa theo tùy chọn N_1. Chúng ta có thể thấy rằng tất cả thời gian thực hiện công việc đều giống nhau; sự khác biệt giữa chúng là ít hơn 5%. Trong khối lượng công việc TeraSort, không có sự cải thiện hoặc suy giảm hiệu suất nào do thay đổi cấu hình và tùy chọn. Trong giai đoạn sắp xếp, có một vài sự xáo trộn trên mạng. Tuy nhiên, kích thước của đọc ngẫu nhiên và ghi ngẫu nhiên là 25 MB, khá nhỏ so với PageRank và TC. Do đó, cấu hình vùng heap JVM và tùy chọn bộ nhớ đệm RDD không ảnh hưởng đến hiệu suất. Hơn nữa, khối lượng công việc TeraSort không bao gồm các công việc lặp lại như trong quá trình đóng chuyển tiếp, do đó không có lợi ích gì từ bộ nhớ đệm RDD trong giai đoạn trước.

ways to improve brain function

4.5. Phân tích thử nghiệm phân cụm K-Means

Thời gian hoàn thành công việc được chuẩn hóa của phân cụm k-means cho tập dữ liệu 1,5 GB được hiển thị trong Hình 9. Mục đích của phân cụm k-means là tìm các cụm k trong tập dữ liệu dựa trên phép đo khoảng cách (ví dụ: khoảng cách Euclide). Trong khối lượng công việc này, thuật toán giảm SSE (tổng sai số bình phương) [24] bằng cách lặp lại phép tính khoảng cách giữa k điểm trung tâm và từng điểm dữ liệu. Trong thử nghiệm này, chúng tôi lặp lại quá trình này tám lần. Lượng dữ liệu cần xáo trộn là tối thiểu vì dữ liệu cần thiết từ giai đoạn trước là thông tin về các điểm trung tâm và SSE trong mỗi giai đoạn. Trong khối lượng công việc phân cụm k-means của chúng tôi, lượng dữ liệu đọc/ghi ngẫu nhiên tối đa là 1.0 MB và tối thiểu là 0.8 MB. Hiện tượng tràn xáo trộn không xảy ra ở đây vì không gian xáo trộn có đủ trong tất cả các cài đặt. Trong các thử nghiệm không có tùy chọn bộ nhớ đệm, không có sự khác biệt giữa các tùy chọn _1, _2 và _3, bởi vì các cài đặt này không lưu bất kỳ RDD nào vào bộ nhớ đệm và trong cả ba cài đặt, chế độ xáo trộn không gian là đủ.

improve your memory

Khi lưu trữ RDD trong bộ nhớ chính hoặc bộ nhớ và SSD, dung lượng lưu trữ cho RDD càng nhiều thì hiệu suất trong thời gian thực hiện công việc càng được cải thiện vì nhiều RDD có thể được lưu vào bộ nhớ đệm trên không gian lưu trữ. Khi so sánh tùy chọn_chỉ bộ nhớ với tùy chọn bộ nhớ_và_SSD, tùy chọn bộ nhớ_và_SSD cho thấy sự cải thiện hiệu suất tốt hơn. Điều này là do trong tùy chọn_chỉ bộ nhớ, dung lượng lưu trữ không đủ ngay cả trong tùy chọn M_3. Ngoài ra, việc lưu trữ RDD trên SSD sẽ giải quyết được tình trạng thiếu bộ nhớ lưu trữ như vậy. Tùy chọn bộ nhớ_và_SSD đã cải thiện hiệu suất trung bình 10% so với tùy chọn chỉ{10}}bộ nhớ.

Lưu ý rằng khối lượng công việc phân cụm k-means cho thấy xu hướng hiệu suất trái ngược với PageRank và khối lượng công việc đóng bắc cầu do sự khác biệt về lượng dữ liệu ngẫu nhiên. Chúng ta sẽ thảo luận điều này chi tiết hơn trong tiểu mục sau.

5. Thảo luận và tóm tắt

5.1. Cuộc thảo luận

Chúng tôi đã phân tích các yếu tố chính gây ra vấn đề suy giảm hiệu suất tiềm ẩn dựa trên đặc điểm của khối lượng công việc và các giai đoạn xử lý. Kết quả thử nghiệm sâu rộng của chúng tôi được tóm tắt liên quan đến việc áp dụng các kỹ thuật tối ưu hóa hiệu suất của nền tảng Spark cho các khối lượng công việc khác nhau như sau:

• Suy giảm hiệu suất do thu thập rác Java: Trong khối lượng công việc PageRank với tập dữ liệu 5{2}}0 MB và tập dữ liệu 1GB, GC xảy ra khi không có đủ dung lượng lưu trữ của vùng heap JVM để lưu trữ RDD. Trong giai đoạn Distinct0 đọc tệp đầu vào từ HDFS và lưu nó vào RDD, GC sẽ xảy ra. Chúng tôi mở rộng không gian lưu trữ của vùng heap JVM thông qua cấu hình để giải quyết vấn đề GC này. Chúng tôi có thể cải thiện hiệu suất để giảm GC vì không gian lưu trữ của vùng heap JVM có thể được mở rộng. Trong Hình 3 và 5, với cùng tùy chọn bộ nhớ đệm RDD, cấu hình _3 hiển thị hiệu suất tốt nhất trong giai đoạn Distinct0. Ngoài ra, trong PageRank với tập dữ liệu 1 GB, một số tùy chọn không thành công ở giai đoạn FlatMap do thiếu bộ nhớ. Chi phí GC tăng nhiều đến mức giai đoạn này bị lỗi hoặc rơi vào vòng lặp vô hạn. Vì vậy, chúng tôi xây dựng cụm có ổ SSD để giải quyết vấn đề này. Nó cho thấy sự cải thiện hiệu suất và thành công trong công việc không thành công khi chỉ sử dụng bộ nhớ, như trong Hình 6, M&S_1 và S{10}}.

• Suy giảm hiệu suất do tràn ngẫu nhiên: Trong khối lượng công việc PageRank với tập dữ liệu 500 MB và tập dữ liệu 1 GB, ở giai đoạn FlatMap, chúng ta có thể thấy tùy chọn M&S_1 hiển thị hiệu suất tốt nhất vì nó có ít ngẫu nhiên nhất tràn (Hình 4: M&S_1 nhanh hơn 30% so với N_1; Hình 6: M&S_1 nhanh hơn 40% so với N_3). PageRank có nhiều nhiệm vụ xáo trộn. Do đó, khi không gian xáo trộn của vùng heap JVM không đủ để xáo trộn dữ liệu qua mạng thì hiện tượng tràn xáo trộn sẽ xảy ra. Do đó, để giảm hiện tượng tràn xáo trộn, việc mở rộng không gian xáo trộn của vùng heap JVM trở thành yếu tố then chốt để cải thiện hiệu suất.

Hơn nữa, chúng ta có thể cải thiện hiệu suất bằng cách lưu trữ RDD cả trên bộ nhớ và SSD. Điều này có thể làm cho người thực thi mở rộng bộ nhớ xáo trộn của vùng JVM để giảm tình trạng tràn xáo trộn. Nếu có nhiều lần lặp lại hơn, hiệu suất từ ​​giai đoạn FlatMap sẽ là điểm mấu chốt của việc cải thiện hiệu suất. Trong thử nghiệm tập dữ liệu 1GB, thời gian thực hiện công việc của S_3 là tùy chọn tốt nhất vì RDD chỉ được lưu vào bộ nhớ đệm trên SSD và có đủ bộ nhớ heap trên các trình thực thi. Do đó, trong tùy chọn S_3, các giai đoạn riêng biệt nhanh hơn bất kỳ tùy chọn nào khác. Tuy nhiên, nếu số lần lặp tăng lên, giai đoạn FlatMap sẽ ảnh hưởng đến thời gian thực hiện công việc. Do đó, tùy chọn M&S_1 có thể đạt được hiệu suất tuyệt vời trong trường hợp này. Thông qua những phân tích này, chúng tôi có thể xác định rằng sự xáo trộn có ảnh hưởng quan trọng đến thời gian hoàn thành công việc. Do đó, chúng ta phải mở rộng bộ nhớ xáo trộn của vùng heap JVM và lưu trữ RDD cả trong bộ nhớ và SSD để có đủ dung lượng bộ nhớ xáo trộn nhằm ngăn chặn tình trạng tràn xáo trộn.

• Sự suy giảm hiệu suất do thời gian bị chặn đọc ngẫu nhiên: Có thời gian bị chặn đọc ngẫu nhiên trên khối lượng công việc TC. Nó xảy ra khi có nhiều tác vụ trong giai đoạn và mỗi tác vụ cần đọc RDD trước đó thông qua mạng. Theo kết quả của thử nghiệm TC (Hình 7), tùy chọn M&S nhanh hơn tùy chọn M. Trong cùng tùy chọn bộ nhớ đệm RDD, việc mở rộng không gian xáo trộn của vùng heap JVM nhanh hơn việc mở rộng không gian lưu trữ. Lý do để cải thiện hiệu suất là bằng cách mở rộng không gian xáo trộn của vùng JVM, thời gian bị chặn đọc ngẫu nhiên sẽ giảm trong mỗi tác vụ.

5.2. Tóm tắt: Cách nào là tốt nhất?

Trong các kết quả thử nghiệm toàn diện, không có một thiết lập nào tốt nhất để tăng cường tất cả khối lượng công việc, vì mỗi khối lượng công việc này có những đặc điểm khác nhau, ngay cả trong thời gian thực hiện công việc của nó. Tuy nhiên, chúng tôi vẫn có thể đề xuất cách tối ưu hóa cấu hình của nền tảng điện toán phân tán trong bộ nhớ bằng cách xem xét sự đa dạng của khối lượng công việc mục tiêu như sau:

• Cấu hình vùng nhớ heap Spark JVM—vùng xáo trộn so với vùng lưu trữ: Theo kết quả thử nghiệm của bốn khối lượng công việc khác nhau, chúng ta có thể quan sát sự khác biệt về hiệu suất tùy thuộc vào đặc điểm khối lượng công việc. Ví dụ: PageRank là một ví dụ điển hình về việc có một lượng lớn dữ liệu xáo trộn nên việc phân bổ nhiều bộ nhớ hơn cho phần xáo trộn sẽ cải thiện hiệu suất tổng thể. Tuy nhiên, trong trường hợp phân cụm k-mean, chúng ta càng phân bổ nhiều vào bộ nhớ lưu trữ, trái ngược với bộ nhớ xáo trộn, thì thời gian thực hiện càng cần ít hơn. Do đó, nếu chúng ta có thể điều chỉnh linh hoạt phần trăm phân bổ bộ nhớ JVM theo đặc điểm khối lượng công việc, thì chúng ta có thể tối ưu hóa tổng thời gian thực hiện. Hadoop YARN [25] cho phép chúng tôi phân công công việc cho các loại cụm (cấu hình) khác nhau để chúng tôi có thể áp dụng ý tưởng này cho cụm Hadoop có kích thước lớn nhằm đáp ứng các đặc điểm bộ nhớ cho nhiều loại công việc khác nhau.

• Chính sách bộ nhớ đệm RDD—bộ nhớ so với SSD: Trong hầu hết các trường hợp, bộ nhớ đệm dựa trên SSD hiển thị hiệu suất tốt nhất trừ khi tất cả RDD có thể vừa với bộ nhớ chính thực tế. Do đó, chính sách bộ nhớ đệm được hỗ trợ bởi SSD có thể là một lựa chọn khả thi cho những khối lượng công việc đầy thách thức đòi hỏi lượng bộ nhớ chính đáng kể mà bất kỳ nút đơn lẻ nào trong cụm đều không thể đáp ứng được.

6. Kết luận

Trong bài báo này, chúng tôi đã nghiên cứu các yếu tố chính dẫn đến sự suy giảm hiệu suất của hệ thống Spark chạy trên cụm máy tính dựa trên máy chủ hàng hóa không có đủ bộ nhớ chính khả dụng. Sau khi thử nghiệm và phân tích, chúng tôi đã trình bày các lựa chọn thay thế có thể cải thiện hiệu suất tổng thể.

Việc thu gom rác Java xảy ra khi không gian lưu trữ của vùng heap JVM không đủ do thiếu bộ nhớ vật lý. Java GC khiến các tác vụ phải chờ thu gom rác để tổng thời gian hoàn thành công việc tăng lên. Sự cố tràn xáo trộn xảy ra khi không gian xáo trộn của vùng heap JVM không đủ trong giai đoạn xáo trộn. Tràn ngẫu nhiên làm tăng chi phí CPU để thực hiện tuần tự hóa nhằm truyền dữ liệu xáo trộn trung gian vào đĩa do thiếu dung lượng xáo trộn. Trong thử nghiệm khối lượng công việc TC, thời gian chặn đọc ngẫu nhiên khiến tác vụ phải chờ đọc dữ liệu ngẫu nhiên qua mạng do thiếu không gian ngẫu nhiên. Tất cả những yếu tố này có khả năng làm tăng thời gian hoàn thành công việc tổng thể, điều này có thể ảnh hưởng nghiêm trọng đến hiệu suất của hệ thống Spark.

Để giải quyết những vấn đề này, chúng tôi xây dựng một cụm có ổ SSD và lưu trữ RDD riêng biệt trên cả bộ nhớ và SSD bằng cách sử dụng SSD để bổ sung không gian lưu trữ của bộ nhớ. Ngoài ra, chúng tôi điều chỉnh cấu hình vùng heap JVM để mở rộng không gian xáo trộn. Kết quả là chúng tôi có thể cải thiện hiệu suất 30% cho khối lượng công việc PageRank và cải thiện hiệu suất 42% cho khối lượng công việc TC. Chúng tôi đã xác định rằng sự cố tràn xáo trộn có thể là yếu tố chính làm suy giảm hiệu suất và đã chứng minh qua thử nghiệm rằng trong khối lượng công việc bao gồm nhiều lần lặp lại và xáo trộn, việc mở rộng không gian xáo trộn có thể mang lại hiệu suất tăng đáng kể. Ngoài ra, chúng tôi nhận thấy rằng các kiểu công việc sử dụng bộ nhớ khác nhau có thể ảnh hưởng đến tổng thời gian thực hiện tùy thuộc vào việc phân bổ phần trăm bộ nhớ lưu trữ/trộn xộn trong JVM. Theo phân tích hiệu suất của PageRank và phân cụm k-mean, việc phân bổ bộ nhớ trong JVM được điều chỉnh phù hợp với đặc điểm khối lượng công việc có thể cải thiện đáng kể thời gian hoàn thành công việc.

Việc tích hợp những phát hiện này vào nền tảng Spark sẽ là một trong những công việc trong tương lai của chúng tôi. Ví dụ: nếu khối lượng công việc có thể được mô tả theo lượng dữ liệu ngẫu nhiên, thì cấu hình được tối ưu hóa có thể được tự động áp dụng để tăng tốc quá trình xử lý khối lượng công việc mục tiêu. Do đó, trong các cấu hình máy chủ không đồng nhất, việc phát triển hệ thống lập lịch nhận biết mức sử dụng bộ nhớ khối lượng công việc có thể cải thiện hiệu suất tổng thể của cụm dựa trên Spark.

Sự đóng góp của tác giả:

Khái niệm hóa, JL (Jaehwan Lee); phương pháp luận, JL (Jaehwan Lee) và JC; phần mềm, JC và JL (Jaehyun Lee); xác nhận, JC, JL (Jaehyun Lee) và JL (Jaehwan Lee); điều tra, JL (Jaehwan Lee) và J.-SK; tài nguyên, JL (Jaehwan Lee) và J.-SK; quản lý dữ liệu, JC và JL (Jaehyun Lee); viết—chuẩn bị bản thảo gốc, JC và JL (Jaehyun Lee); viết—đánh giá và biên tập, JL (Jaehwan Lee) và J.-SK; hình dung, JL (Jaehyun Lee); giám sát, JL (Jaehwan Lee) và J.-SK; quản lý dự án, JL (Jaehwan Lee) và J.-SK; mua lại tài trợ, JL (Jaehwan Lee). Tất cả các tác giả đã đọc và đồng ý với phiên bản đã xuất bản của bản thảo.

help with memory

Kinh phí:

Nghiên cứu này được hỗ trợ bởi Chương trình Nghiên cứu Khoa học Cơ bản (NRF{0}}R1F1A1072696) thông qua Quỹ Nghiên cứu Quốc gia Hàn Quốc (NRF) do Bộ Khoa học và CNTT tài trợ, chương trình GRRC của tỉnh Kyunggi (số GRRC-KAU{ {5}}B01, "Nghiên cứu về Nền tảng hội tụ video và không gian cho dịch vụ 360VR") và chương trình hỗ trợ ITRC (Trung tâm nghiên cứu công nghệ thông tin) (IITP-2021-2018-0-01423).

Tuyên bố của Ban Đánh giá Thể chế:

Không áp dụng được.

Tuyên bố đồng ý sau khi được thông báo:

Không áp dụng được.

Tuyên bố về tính sẵn có của dữ liệu:

Cung cấp theo yêu cầu.

Xung đột lợi ích:

Các tác giả tuyên bố không có xung đột lợi ích.


Người giới thiệu

1. Trưởng khoa, J.; Ghemawat, S. MapReduce: Đơn giản hóa việc xử lý dữ liệu trên các cụm lớn. Cộng đồng. ACM 2008, 51, 107–113. [Tham khảo chéo]

2. Dự án Apache Hadoop: Phần mềm nguồn mở dành cho điện toán phân tán, có thể mở rộng và đáng tin cậy. Có sẵn trực tuyến: https://hadoop.apache.org/ (truy cập vào ngày 10 tháng 9 năm 2021).

3. Shvachko, K.; Quang, H.; Radia, S.; Chansler, R. Hệ thống tệp phân tán Hadoop. Trong Kỷ yếu của hội nghị chuyên đề lần thứ 26 của IEEE về hệ thống và công nghệ lưu trữ dung lượng lớn (MSST), Incline Village, NV, Hoa Kỳ, ngày 3–7 tháng 5 năm 2010; trang 1–10.

4. Zaharia, M.; Chowdhury, M.; Franklin, MJ; Shenker, S.; Stoica, I. Spark: Điện toán cụm với các bộ làm việc. HotCloud 2010, 10, 95.

5. Ousterhout, K.; Rasti, R.; Ratnasamy, S.; Shenker, S.; Chun, BG Tìm hiểu về hiệu suất trong các khung phân tích dữ liệu. Trong Kỷ yếu của Hội nghị chuyên đề USENIX lần thứ 12 về Thiết kế và Triển khai Hệ thống Mạng (NSDI), Oakland, CA, USA, ngày 4–6 tháng 5 năm 2015; trang 293–307.

6. Xing, W.; Ghorbani, A. Thuật toán PageRank có trọng số. Trong Kỷ yếu của Hội nghị thường niên lần thứ hai của IEEE về nghiên cứu dịch vụ và mạng truyền thông, Fredericton, NB, Canada, ngày 21 tháng 5 năm 2004; trang 305–314.

7. Chakradhar, ST; Agrawal, VD; Rothweiler, SG Thuật toán đóng bắc cầu để tạo thử nghiệm. IEEE Trans. Máy tính hỗ trợ Des. Tích phân. Hệ thống mạch 1993, 12, 1015–1028. [Tham khảo chéo]

8. O'Malley, O. Terabyte Sắp xếp trên Apache Hadoop. Yahoo. Tháng 5 năm 2008. trang 1–3. Có sẵn trực tuyến: http://sortbenchmark.org/ YahooHadoop.pdf (truy cập vào ngày 10 tháng 9 năm 2021).

9. Phân cụm K-Means. Có sẵn trực tuyến: https://en.wikipedia.org/wiki/K-means_phân cụm (truy cập vào ngày 10 tháng 9 năm 2021).

10. Zaharia, M.; Chowdhury, M.; Đa, T.; Dave, A.; Ma, J.; McCauly, M.; Franklin, MJ; Shenker, S.; Stoica, I. Bộ dữ liệu phân tán có khả năng phục hồi: Một bản tóm tắt có khả năng chịu lỗi dành cho điện toán cụm trong bộ nhớ. Trong Kỷ yếu của Hội nghị chuyên đề USENIX lần thứ 9 về Thiết kế và Triển khai Hệ thống Mạng (NSDI), San Jose, CA, USA, 25–27 tháng 4 năm 2012; trang 15–28.

11. Davidson, A.; Hoặc A. Tối ưu hóa hiệu suất xáo trộn trong Spark; Tường trình kỹ thuật; Berkeley-Khoa Kỹ thuật Điện và Khoa học Máy tính, Đại học California: Berkeley, CA, Hoa Kỳ, 2013.

12. Nicolae, B.; Costa, CHA; Misale, C.; Katrinis, K.; Park, Y. Tận dụng I/O thích ứng để tối ưu hóa các mô hình xáo trộn dữ liệu tập thể cho phân tích dữ liệu lớn. IEEE Trans. Phân phối song song. Hệ thống. 28, 2017, 1663–1674. [Tham khảo chéo]

13. Trương, H.; Cho, B.; Seyfe, E.; Ching, A.; Freedman, MJ Riffle: Dịch vụ xáo trộn được tối ưu hóa cho phân tích dữ liệu quy mô lớn. Trong Kỷ yếu của Hội nghị EuroSys lần thứ 13; EuroSys '18; Hiệp hội Máy tính: New York, NY, Hoa Kỳ, 2018. [CrossRef]


For more information:1950477648nn@gmail.com




Bạn cũng có thể thích