1. Trang chủ
  2. » Tất cả

apache-spark

19 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Apache Spark Apache Spark hệ thống mã nguồn mở cho phép thực tính tốn cụm nhằm tạo khả phân tích liệu nhanh Apache Spark basic Apache Spark overview Apache Spark RDD Hướng dẫn tạo Spark Scala Maven project Intellij Spark - SparkSession Apache Spark basic Kiến thức Apache Spark Apache Spark basic Apache Spark overview Ngày có nhiều hệ thống xử lý liệu thông tin sử dụng Hadoop rộng rãi để phân tích liệu lớn Ưu điểm lớn Hadoop dựa mơ hình lập trình song song với xử lý liệu lớn MapReduce, mơ hình cho phép khả tính tốn mở rộng, linh hoạt, khả chịu lỗi, chi phí rẻ Điều cho phép tăng tốc thời gian xử lý liệu lớn nhằm trì tốc độ, giảm thời gian chờ đợi liệu ngày lớn Hadoop tảng tính tốn cho nhiều cho toàn xử lý liệu lớn vấn đề mở rộng tính tốn song song toàn xếp hạng Apache Haddop sử dụng nhiều công ty lớn Yahoo, Google Dù có nhiều điểm mạnh khả tính tốn song song khả chịu lỗi cao Apache Haddop có nhược điểm tất thao tác phải thực ổ đĩa cứng điều làm giảm tốc độ tính tốn gấp nhiều lần Để khắc phục nhược điểm Apache Spark đời Apache Spark chạy nhanh 10 lần so với Haddop đĩa cứng 100 lần chạy nhớ RAM, hình biểu thị thời gian chạy tính tốn hồi quy Logistic Haddop Spark Giới thiệu Apache Spark Apache Spark open source cluster computing framework phát triển sơ khởi vào năm 2009 AMPLab đại học California, Berkeley Sau này, Spark trao cho Apache Software Foundation vào năm 2013 phát triển Apache Spark phát triển nhằm tăng tốc khả tính tốn xử lý Haddop Spark cho phép xây dựng phân tích nhanh mơ hình dự đốn Hơn nữa, cịn cung cấp khả truy xuất toàn liệu lúc, nhờ ta không cần phải lấy mẫu liệu địi hỏi ngơn ngữ lập trình R Thêm vào đó, Spark cịn cung cấp tính streaming, dùng để xây dựng mơ hình realtime cách nạp toàn liệu vào nhớ Khi ta có tác vụ lớn mà xử lý laptop hay server, Spark cho phép ta phân chia tác vụ thành phầndễ quản lý Sau đó, Spark chạy tác vụn ày nhớ, cluster nhiềuserver khác để khai thác tốc độ truy xuất nhanh từ RAM Spark sử dụng API Resilient Distributed Dataset (RDD) để xử lý liệu Spark nhận nhiều hưởng ứng từ cộng đồng Big Data giới cung cấp khả tính tốn nhanh nhiều thư viện hữu ích kèm Spark SQL (với kiểu liệu DataFrames), Spark Streaming, MLlib (machine learning: classification, regression, clustering, collaborative filtering, dimensionality reduction) GraphX (tính tốn song song liệu đồ thị) Tính Apache Spark Apache Spark có tính đặc trưng sau đây: Tốc độ: Spark chạy cụm Hadoop chạy nhanh 100 lần chạy nhớ RAM, nhanh 10 lần chạy ổ cứng Bằng việc giảm số thao tác đọc nghi lên đĩa cứng Nó lưu trữ trực tiếp liệu xử lý lên nhớ Hỗ trợ đa ngôn ngữ: Spark cung cấp API có sẵn cho ngơn ngữ Java, Scala, Python Do đó, bạn viết ứng dụng nhiều ngôn ngữ khác Spark kèm 80 truy vấn tương tác mức cao Phân tích nâng cao: Spark không hỗ trợ Map Reduce, cịn hỗ trợ truy vấn SQL, xử lý theo Stream, học máy, thuật toán đồ thị (Graph) Các thành phần Apache Spark Apache Spark Core: Spark Core thành phần cốt lõi thực thi cho tác vụ làm tảng cho chức khác Nó cung cấp khảnăng tính tốn nhớ dataset nhớ hệ thống lưu trữ Spark SQL: Là thành phần nằm Spark Core, cung cấp sựảo hóa cho liệu SchemaRDD, hỗ trợ liệu có cấu trúc bán cấu trúc Spark Streaming: Cho phép thực phân tích xử lý trực tuyến xử lý theo lơ MLlib (Machine Learning Library): MLlib tảng học máy phân tán bên Spark kiến trúc phân tán dựa nhớ Theo so sánh benchmark Spark MLlib nhanh lần so với phiên chạy Hadoop (Apache Mahout) GrapX: Grapx tảng xử lý đồ thị dựa Spark Nó cung cấp Api để diễn tảcác tính tốn đồ thị cách sử dụng Pregel Api Resilient Distributed Datasets Resilient Distributed Datasets (RDD) cấu trúc liệu Spark Nó tập hợp bất biến phân tán đối tượng Mỗi dataset RDD chia thành nhiều phần vùng logical Có thể tính tốn node khác cụm máy chủ (cluster) RDDs chứa kiểu liệu Python, Java, đối tượng Scala, bao gồm kiểu liệu người dùng định nghĩa Thông thường, RDD cho phép đọc, phân mục tập hợp ghi RDDs tạo qua điều khiển xác định liệu nhớ RDDs, RDD tập hợp có khả chịu lỗi thành phần tính tốn song song Có hai cách để tạo RDDs: Tạo từ tập hợp liệu có sẵn ngôn ngữ sử dụng Java, Python, Scala Lấy từ dataset hệ thống lưu trữ bên HDFS, Hbase sở liệu quan hệ Xem thêm Spark RDD Apache Spark basic Apache Spark RDD Resilient Distributed Datasets Resilient Distributed Datasets (RDD) cấu trúc liệu Spark Nó tập hợp bất biến phân tán đối tượng Mỗi dataset RDD chia thành nhiều phần vùng logical Có thể tính tốn node khác cụm máy chủ (cluster) RDDs chứa kiểu liệu Python, Java, đối tượng Scala, bao gồm kiểu liệu người dùng định nghĩa Thông thường, RDD cho phép đọc, phân mục tập hợp ghi RDDs tạo qua điều khiển xác định liệu nhớ RDDs, RDD tập hợp có khả chịu lỗi thành phần tính tốn song song Có hai cách để tạo RDDs: Tạo từ tập hợp liệu có sẵn ngơn ngữ sử dụng Java, Python, Scala Lấy từ dataset hệ thống lưu trữ bên HDFS, Hbase sở liệu quan hệ Thực thi MapRedure MapReduce áp dụng rộng rãi để xử lý tạo liệu lớn với thuật toán xử lý phân tán song song cụm Nó cho phép người dùng viết tính tốn song song, sử dụng tập hợp tốn tử cấp cao, mà khơng phải lo lắng xử lý/phân phối công việc khả chịu lỗi Tuy nhiên, hầu hết framework tại, cách để sử dụng lại liệu tính tốn (Ví dụ: hai cơng việc MapReduce) ghi vào storage (Ví dụ: HDFS) Mặc dù framework cung cấp nhiều hàm thư viện để truy cập vào tài ngun tính tốn cụm Cluster, điều chưa đủ Cả hai ứng dụng Lặp (Iterative) Tương tác (Interactive) yêu cầu chia sẻ truy cập xử lý liệu nhanh công việc song song Chia sẻ liệu chậm MapReduce chép tốc độ I/O ổ đĩa Về hệ thống lưu trữ, hầu hết ứng dụng Hadoop, cần dành 90% thời gian để thực thao tác đọc-ghi HDFS - Iterative Operation MapReduce: - Interactive Operations MapReduce: Thực thi Spark RDD Để khắc phục vấn đề MapRedure, nhà nghiên cứu phát triển framework chuyên biệt gọi Apache Spark Ý tưởng Spark Resilient Distributed Datasets (RDD); hỗ trợ tính tốn xử lý nhớ Điều có nghĩa, lưu trữ trạng thái nhớ dạng đối tượng công việc đối tượng chia sẻ cơng việc Việc xử lý liệu nhớ nhanh 10 đến 100 lần so với network disk - Iterative Operation Spark RDD: - Interactive Operations Spark RDD: Các loại RDD Các RDD biểu diễn tập hợp cố định, phân vùng record để xử lý song song Các record RDD đối tượng Java, Scale hay Python tùy lập trình viên chọn Khơng giống DataFrame, record DataFrame phải dịng có cấu trúc chứa field định nghĩa sẵn RDD API sử dụng series Spark 1.x sử dụng version 2.X khơng cịn dùng thường xun RDD API sử dụng Python, Scala hay Java: Scala Java: Perfomance tương đương hầu hết phần (Chi phí lớn xử lý raw object) Python: Mất lượng performance, chủ yếu cho việc serialization tiến trình Python JVM Các transformation action với RDD RDD cung cấp transformation action hoạt động giống DataFrame lẫn DataSets Transformation xử lý thao tác lazily Action xử lý thao tác cần xử lý tức thời - Một số transformation: Nhiều phiên transformation RDD hoạt động Structured API, transformation xử lý lazily, tức giúp dựng execution plans, liệu truy xuất thực thực action distinct: loại bỏ trùng lắp RDD filter: tương đương với việc sử dụng where SQL – tìm record RDD xem phần tử thỏa điều kiện Có thể cung cấp hàm phức tạp sử dụng để filter record cần thiết – Như Python, ta sử dụng hàm lambda để truyền vào filter map: thực cơng việc toàn RDD Trong Python sử dụng lambda với phần tử để truyền vào map flatMap: cung cấp hàm đơn giản hàm map Yêu cầu output map phải structure lặp mở rộng sortBy: mơ tả hàm để trích xuất liệu từ object RDD thực sort từ randomSplit: nhận mảng trọng số tạo random seed, tách RDD thành mảng RDD có số lượng chia theo trọng số - Một số action: Action thực thi transformation thiết lập để thu thập liệu driver để xử lý ghi liệu xuống công cụ lưu trữ reduce: thực hàm reduce RDD để thu giá trị count: đếm số dòng RDD countApprox: phiên đếm xấp xỉ count, phải cung cấp timeout khơng nhận kết countByValue: đếm số giá trị RDD sử dụng map kết nhỏ tất liệu load lên memory driver để tính tốn nên sử dụng tình số dịng nhỏ số lượng item khác nhỏ countApproxDistinct: đếm xấp xỉ giá trị khác countByValueApprox: đếm xấp xỉ giá trị first: lấy giá trị dataset max min: lấy giá trị lớn nhỏ dataset take method tương tự: lấy lượng giá trị từ RDD take trước hết scan qua partition sử dụng kết để dự đoán số lượng partition cần phải lấy thêm để thỏa mãn số lượng lấy top takeOrdered: top hiệu takeOrdered top lấy giá trị xếp ngầm RDD takeSamples: lấy lượng giá trị ngẫu nhiên RDD Một số kỹ thuật RDD - Lưu trữ file: Thực ghi vào file plain-text Có thể sử dụng codec nén từ thư viện Hadoop Lưu trữ vào database bên yêu cầu ta phải lặp qua tất partition RDD – Công việc thực ngầm high-level API sequenceFile flat file chứa cặp key-value, thường sử dụng làm định dạng input/output MapReduce Spark ghi sequenceFile ghi lại cặp key-value Đồng thời, Spark hỗ trợ ghi nhiều định dạng file khác nhau, cho phép define class, định dạng output, config compression scheme Hadoop - Caching: Tăng tốc xử lý cache Caching với RDD, Dataset hay DataFrame có nguyên lý Chúng ta lựa chọn cache hay persist RDD, mặc định, xử lý liệu nhớ - Checkpointing: Lưu trữ lại bước xử lý để phục hồi Checkpointing lưu RDD vào đĩa cứng để tiến trình khác để thể sử dụng lại RDD point làm partition trung gian thay tính tốn lại RDD từ nguồn liệu gốc Checkpointing tương tự cache, khác lưu trữ vào đĩa cứng không dùng API DataFrame Cần sử dụng nhiều để tối ưu tính tốn Apache Spark basic Hướng dẫn tạo Spark Scala Maven project Intellij Tạo Scala project Intellij Click New Project - Chọn Maven -> Create from archetype -> org.scala-tools.archetypes:scala-archetypessimple - Màn hình tiếp theo, nhập tên project, ví dụ: spark-hello-world-example - Màn hình tiếp theo, nhập thơng tin artifact-id group-id project - Chọn Finish Cài đặt Scala Plugin - Chọn File > Settings (hoặc Ctrl + Alt + s ) - Chọn Plugins từ cột bên trái - Chọn Install để cài đặt Scala plugin 3 Cài đặt Scala SDK - Intellij hiển thị thông báo Setup Scala SDK - Chọn Setup Scala SDK - Chọn Create - Màn hình tiếp theo, chọn Download -> Chọn Scala version (2.12.12 thời điểm viết) Cấu hình pom.xml - Cập nhật Scala version: 2.12.12 - Thêm dependency: org.apache.spark spark-core_2.12 3.0.0 compile org.apache.spark spark-sql_2.12 3.0.0 compile - Xóa build plugin org.scala-tools maven-scala-plugin compile testCompile ${scala.version} -target:jvm-1.5 Xóa file khơng cần thiết - src/test - src/main/scala/org.example.App Hello World với Spark Scala - Click chuột phải vào package bạn, chọn New -> Scala Class -> Nhập tên chọn loại Scala Object package org.example import org.apache.spark.sql.SparkSession object SparkSessionTest extends App{ val spark = SparkSession.builder() master("local[1]") appName("Laptrinh") getOrCreate(); println("First SparkContext:") println("APP Name :"+spark.sparkContext.appName); println("Deploy Mode :"+spark.sparkContext.deployMode); println("Master :"+spark.sparkContext.master); val sparkSession2 = SparkSession.builder() master("local[1]") appName("Laptrinh-VN") .getOrCreate(); println("Second SparkContext:") println("APP Name :"+sparkSession2.sparkContext.appName); println("Deploy Mode :"+sparkSession2.sparkContext.deployMode); println("Master :"+sparkSession2.sparkContext.master); } Apache Spark basic Spark - SparkSession Spark session: Đại diện cho khả tương tác với executors chương trình Spark session entry point chương trình Spark Từ SparkSession, tạo RDD/ DataFrame/ DataSet, thực thi SQL… từ thực thi tính tốn phân tán Spark Session bao gồm tất API context có sẵn như: Spark Context SQL Context Streaming Context Hive Context Khởi tạo SparkSession Spark-shell Mặc định, Spark shell cung cấp spark object, sử dụng để khởi tạo biến: scala> val sqlcontext = spark.sqlContext Khởi tạo SparkSession chương trình Scala Để khởi tạo SparkSession Scala Python, bạn cần sử dụng phương thức builder() getOrCreate(): val spark = SparkSession.builder() master("local[1]") appName("Laptrinh.vn") getOrCreate(); master()  - Nếu bạn chạy cluster, bạn cần sử dụng master name đối số master(), thông thường yarn mesos Sử dụng  local[x] chạy chế độ standalone, x (số int > 0) - số partition tạo sử dụng RDD, DataFrame, and Dataset Lý tưởng nhất, x số CPU core bạn có appName()  - Tên application getOrCreate()  - Return a SparkSession object tồn tại, ngược lại tạo SparkSesssion Method STT Method Mô tả version Return Spark version builder Khởi tạo new SparkSession createDataFrame createDataset emptyDataFrame Khởi tạo empty DataFrame emptyDataset Khởi tạo empty Dataset getActiveSession Return active SparkSession implicits Truy cập nested Scala object Khởi tạo DataFrame từ collection RDD Khởi tạo Dataset từ DataFrame, Collection RDD Trả thể lớp DataFrameReader, sử dụng để read đọc ghi từ csv, parquet, avro định dạng tệp khác vào DataFrame Trả thể lớp DataStreamReader, sử dụng 10 readStream để đọc liệu truyền trực tuyến,  sử dụng để đọc liệu truyền trực tuyến vào DataFrame 11 sparkContext Trả SparkContext 12 sql 13 sqlContext Trả SQLContext 14 stop Dừng SparkContext 15 table 16 udf Trả DataFrame sau thực thi SQL đề cập Trả DataFrame bảng dạng xem Tạo UDF Spark để sử dụng DataFrame, Dataset SQL

Ngày đăng: 12/04/2022, 00:01

HÌNH ẢNH LIÊN QUAN

Thêm vào đó, Spark còn cung cấp tính năng streaming, được dùng để xây dựng các mô hình real- real-time bằng cách nạp toàn bộ dữ liệu vào bộ nhớ - apache-spark
h êm vào đó, Spark còn cung cấp tính năng streaming, được dùng để xây dựng các mô hình real- real-time bằng cách nạp toàn bộ dữ liệu vào bộ nhớ (Trang 4)
15 table Trả về DataFrame của một bảng hoặc - apache-spark
15 table Trả về DataFrame của một bảng hoặc (Trang 19)

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN