intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lưu trữ và xử lý dữ liệu lớn: Chương 6 - Các kĩ thuật xử lý dữ liệu lớn theo khối (Phần 2)

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:52

22
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Lưu trữ và xử lý dữ liệu lớn: Chương 6 - Các kĩ thuật xử lý dữ liệu lớn theo khối (Phần 2)" trình bày các nội dung chính sau đây: MapReduce với chuỗi các jobs; Toàn cảnh về I/O dữ liệu; RAM có khả năng thay thế ổ đĩa cứng; Một nền tảng xử lý dữ liệu hợp nhất cho dữ liệu lớn;... Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lưu trữ và xử lý dữ liệu lớn: Chương 6 - Các kĩ thuật xử lý dữ liệu lớn theo khối (Phần 2)

  1. Chương 6 Các kĩ thuật xử lý dữ liệu lớn theo khối - phần 2 Apache Spark Một nền tảng xử lý dữ liệu hợp nhất cho dữ liệu lớn
  2. MapReduce với chuỗi các jobs • Iterative jobs với MapReduce đòi hỏi thao tác I/O với dữ liệu trên HDFS • Thực tế I/O trên ổ đĩa cứng rất chậm!
  3. Toàn cảnh về I/O dữ liệu 0.1 Gb/s 1 Gb/s or125 MB/s Nodesin another Network rack CPUs: 10GB/s 1 Gb/s or125 MB/s Nodesin 100MB/s 600MB/s same rack 3-12 msrandom 0.1 ms random access access $0.025 perGB $0.35 perGB
  4. RAM có khả năng thay thế ổ đĩa cứng 4
  5. Một nền tảng xử lý dữ liệu hợp nhất cho dữ liệu lớn • Hỗ trợ tốt hơn MapReduce trong • Các giải thuật có tính lặp - Iterative algorithms • Khai phá dữ liệu trong môi trường tương tác - Interactive data mining • Khả năng chịu lỗi, khai thác tính địa phương của dữ liệu, tính khả mở • Ẩn đi sự phức tạp cua của môi trường phân tán khi lập trình
  6. Một nền tảng xử lý dữ liệu hợp nhất cho dữ liệu lớn Environments YARN Workloads DataFrames API and SparkSQL Spark Streaming MLlib GraphX RDDAPI SparkCore {JSON} Data Sources
  7. Khai thác bộ nhớ trong thay vì ổ đĩa HDD HDFS HDFS HDFS 7
  8. Sự khác nhau giữa Spark và MapReduce Apache Hadoop MR Apache Spark Storage Chỉ sử dụng HDD Sử dụng cả bộ nhớ trong và HDD Operations Hai thao tác Map và Reduce Bao gồm nhiều thao tác biến đổi (transformations) và hành động (actions) trên dữ liệu Execution model Xử lý theo khối – batch Theo khối, tương tác , luồng Languages Java Scala, Java, Python và R
  9. So sánh hiệu năng Spark và MapReduce https://databricks.com/blog/2014/10/10/spark-petabyte-sort.html
  10. Giao diện dòng lệnh tương tác (Scala, Python and Ronly)
  11. Thực thi chương trình Spark W Ex RDD T RDD T Driver Program WorkerMachine W Ex RDD T RDD T WorkerMachine
  12. Resilient Distributed Dataset (RDD) • RDDs là cấu trúc dữ liệu song song, có khả năng chịu lỗi (fault-tolerant, parallel data structures) mà cho phép người dùng chỉ định lưu trữ dữ liệu trung gian trên bộ nhớ (intermediate results in memory), điều khiển sự phân chia để tối ưu hóa việc phân tán dữ liệu, và cũng có thể thay đổi, chỉnh sửa những dữ liệu này sử dụng một tập các thao tác rất đa dạng (a rich set of operators). • RDDs có khả năng tự động tái tạo lại khi bị lỗi • RDD được thiết kế tối ưu cho các biến đổi thô, theo lô (coarse-grained transformations) thay vì hỗ trợ các thao tác cập nhật quá chi tiết (fine-grained updates) • Vd., map, filter và join mà tác động tới nhiều bản ghi dữ liệu đồng thời thay vì là các thao tác chỉ cập nhật lên một đối tượng dữ liệu riêng lẻ 12
  13. Sự phân vùng của RDD và khả năng song song hóa RDD item-1 item-6 item-11 item-16 item-21 item-2 item-7 item-12 item-17 item-22 item-3 item-8 item-13 item-18 item-23 item-4 item-9 item-14 item-19 item-24 item-5 item-10 item-15 item-20 item-25 W W W Ex Ex Ex RDD RDD RDD RDD RDD
  14. Khởi tạo RDD • Một RDD cơ sở có thể được tạo theo 2 cách • Song song hóa một collection (ví dụ mảng trong Python) • Đọc dữ liệu từ một nguồn bên ngoài (S3, C*, HDFS, etc) Error, ts, Info, ts, msg8 Error, ts, Error, ts, msg1 Warn, Warn, ts, msg3 Info, msg4 Warn, ts, msg2 msg2 Info, ts, ts, msg5 ts, msg9 Error, ts, msg8 Info, ts, Error, ts, logLinesRDD msg1 msg5 msg1
  15. Phương thức Parallelize // Parallelize in Scala val wordsRDD = sc.parallelize(List("fish", "cats", "dogs")) • Một mảng làm thm số đầu vào cho phương thức parallelize của SparkContext • Thường được sử # Parallelize in Python dụng để thử wordsRDD = sc.parallelize(["fish", "cats", "dogs"]) nghiệm vì đòi hỏi toàn bộ dữ liệu phải có sẵn trên bộ nhớ trong. // Parallelize in Java JavaRDD wordsRDD = sc.parallelize(Arrays.asList("fish", "cats", "dogs"));
  16. RDD khởi tạo từ tệp tin văn bản // Read a local txt file in Scala Ngoài ra có các val linesRDD = sc.textFile("/path/to/README.md") phương thức đọc từ HDFS, C*, S3, HBase, etc. # Read a local txt file in Python linesRDD = sc.textFile("/path/to/README.md") // Read a local txt file in Java JavaRDD lines = sc.textFile("/path/to/README.md");
  17. Các thao tác trên RDD • 2 dạng thao tác: transformations and actions • Transformations là lazy (không được tính toán ngay lập tức) • Transformations chỉ được thực thi khi một action được gọi • Có thể lưu trữ lâu dài (hoặc tạm thời) dữ liệu của RDD trên RAM và cứng
  18. Ví dụ về transformation logLinesRDD Error, ts, Info, ts, msg8 Error,ts, Error, ts, msg1 Warn, Warn, ts, msg3 Info, msg4 Warn, ts, msg2 msg2 Info, ts, msg5 ts, msg9 Error, ts, ts,msg8 Info, ts, Error, ts, (input/base RDD) msg1 msg5 msg1 .filter( λ ) Error,ts, Error,ts, msg3 Error,ts, msg1 Error, msg4 Error, ts, msg1 ts, msg1 errorsRDD
  19. Ví dụ về action errorsRDD Error,ts, msg3 Error,ts, Error,ts, msg4 Error, msg1 Error, ts, msg1 ts, msg1 .coalesce( 2) Error, ts, msg1 Error, ts, msg4 Error, ts, msg3 Error, ts, msg1 Error, ts, msg1 cleanedRDD .collect( ) Driver
  20. Execute DAG! .collect( ) Driver
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2