Cấu trúc dữ liệu của Spark cho hệ thống Big Data

Kiến trúc dữ liệu lớn bao gồm ba hệ thống con chính:

 

  • Nhập dữ liệu: Hệ thống con này chịu trách nhiệm tiêu thụ dữ liệu từ nhiều nguồn ở các định dạng khác nhau một cách đáng tin cậy, an toàn và hiệu quả. Tùy thuộc vào mức độ phức tạp của việc nhập dữ liệu, các công nghệ khác nhau được triển khai. Trước các kiến ​​trúc dữ liệu lớn, hầu hết các dữ liệu được nhập vào đều xuất phát từ các hệ thống vận hành chứa các hệ thống hồ sơ. Một hệ thống hồ sơ là nguồn duy nhất được duy trì trong cơ sở dữ liệu. Bản ghi đó thường được chi phối bởi một sản phẩm quản lý dữ liệu chủ (MDM) và được bảo vệ như một viên ngọc quý của một tổ chức. Spark thể là một thách thức cho các chuyên gia kỹ thuật về cách nghĩ về các hệ thống hồ sơ. Trong mô hình mới của luồng dữ liệu không có lược đồ từ nhiều nguồn vào môi trường dữ liệu lớn, một hệ thống bản ghi có thể được lưu trong cơ sở dữ liệu hoặc hoạt động trong bộ nhớ.

 

  • Xử lý dữ liệu: Hệ thống bản ghi sau đó được xử lý bằng các công cụ trích xuất, chuyển đổi và tải (ETL) để chuyển đổi dữ liệu hoặc làm phong phú nó để đáp ứng nhu cầu của người dùng trong doanh nghiệp. Một lần nữa, Spark cung cấp cho động cơ để thực hiện các biến đổi khác nhau. Trên thực tế, các kiến ​​trúc dữ liệu lớn đã thay đổi ETL thành ELT – trích xuất-tải-chuyển đổi. Giờ đây, với sự trợ giúp của Spark, ELT đang chuyển đổi thành DELDT – tìm kiếm-giải nén-tải-tìm kiếm-chuyển đổi. Vì vậy, Spark đang được sử dụng để tìm kiếm các nguồn dữ liệu ở quy mô tại các vị trí ban đầu của chúng và một lần nữa khi nhiều nguồn dữ liệu được duy trì trong các cơ sở hạ tầng dữ liệu lớn. Tìm kiếm là khả năng hiểu các đặc điểm của các giá trị dữ liệu để giải mã các phân loại của chúng, chẳng hạn như dữ liệu nhạy cảm hoặc dữ liệu thuộc về lĩnh vực kinh doanh. Khám phá này trở thành một phần của siêu dữ liệu sau đó được sử dụng để kích hoạt các khả năng quản trị dữ liệu như bảo mật và quyền riêng tư dữ liệu, dòng dõi và xuất xứ.

 

  • Truy cập dữ liệu: Đây là phần cuối cùng trong kiến ​​trúc nơi người dùng cuối phân tích dữ liệu để đáp ứng các nhu cầu kinh doanh khác nhau của họ. Thông thường, người dùng cuối là các nhà phân tích kinh doanh sử dụng các công cụ kinh doanh thông minh (BI) để chạy các báo cáo và trực quan hóa. Spark không chỉ cung cấp nền tảng chuẩn bị dữ liệu để đáp ứng các nhu cầu này mà còn mở rộng các kiểu truy cập dữ liệu cho các nhà khoa học dữ liệu muốn chạy thuật toán ML trên đầu dữ liệu.

Spark là công cụ hợp nhất để nhập dữ liệu từ nhiều nguồn khác nhau bằng các kỹ thuật khác nhau; xử lý dữ liệu thành nhiều định dạng dữ liệu như Parquet, ORC, Avro hoặc bus tin nhắn Kafka; và lưu trữ nó trong một trong nhiều mục tiêu khác nhau (xem Hình 1). Trong toàn bộ kiến ​​trúc, Spark có thể được sử dụng để cung cấp phân tích ở bất kỳ giai đoạn nào.

Spark - in - big - dataADLS = Azure Data Lake Shore; C* = Apache Cassandra; CDC = change data capture; GCP = Google Cloud Platform; GCS = Google Cloud Storage; JDBC = Java Database Connectivity; MQTT = Message Queue Telemetry Transport; S3 = Simple Storage Service

Spark

Kiến trúc dữ liệu lớn tỏa sáng khi chúng được sử dụng để nhập dữ liệu từ nhiều nguồn ở các định dạng có cấu trúc hoặc không cấu trúc cho các mục đích phân tích nâng cao. Các công nghệ dữ liệu lớn như Hadoop đang được triển khai để hợp nhất dữ liệu từ các cơ sở dữ liệu có quan hệ hoặc các nguồn khác vào một hồ dữ liệu. Các nguồn đầu vào bao gồm từ các hệ thống máy tính lớn đến các file bình thường trên một Network File System (NFS). Hình 1 mô tả một số nguồn phổ biến, bao gồm:

  • Hệ thống quản lý cơ sở dữ liệu quan hệ (Relational database management systems – RDBMS)
  • cơ sở dữ liệu vận hành và giao dịch và kho dữ liệu
  • Dữ liệu nhấp chuột và nhật ký web (Clickstream data and web logs)
  • Dữ liệu thị trường hoặc phương tiện truyền thông xã hội
  • Dữ liệu không gian địa lý (vĩ độ và kinh độ)
  • Dữ liệu cảm biến (điểm cuối IoT)

 

Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS), cơ sở dữ liệu hoạt động và giao dịch và kho dữ liệu.

Dữ liệu từ các ứng dụng dựa trên Oracle, SQL Server, Db2 và các hệ thống quan hệ khác có thể được cung cấp ở chế độ hàng loạt hoặc thay đổi gia tăng đối với dữ liệu. Cái sau được gọi là chụp dữ liệu thay đổi (Change Data Capture). Dữ liệu quan hệ hàng loạt có thể được nhập vào bằng cách sử dụng Apache Sqoop hoặc thậm chí như một lệnh gọi API JDBC. Dữ liệu này cũng có thể được sử dụng dưới dạng tệp phẳng bằng FTP. Spark hiện được sử dụng để nâng cao hiệu năng Apache Sqoop cho việc nhập hàng loạt. Tuy nhiên, Sqoop yêu cầu dữ liệu phải được duy trì trong HDFS. Ngoài ra, Spark có thể được sử dụng để đọc dữ liệu trực tiếp từ RDBMS vào bộ nhớ của nó dưới dạng DataFrames. Điều này có thể được thực hiện bằng cách bao gồm tệp jar trình điều khiển JDBC RDBMS trong mã Spark. Điều này rất quan trọng vì Spark hiện đang được sử dụng để xử lý dữ liệu IoT tốc độ cao từ các thiết bị và cảm biến, nhưng siêu dữ liệu cần thiết để thực hiện các phân tích hữu ích thường đến từ RDBMS. Một số ví dụ về siêu dữ liệu trong các trường hợp sử dụng IoT bao gồm các đặc điểm về tài sản và thiết bị, thông tin vị trí, dữ liệu bảo hành và thông tin chuỗi cung ứng.

Các hệ thống CRM từ các nhà cung cấp như Salesforce và NetSuite là ví dụ về các ứng dụng sử dụng công nghệ cơ sở dữ liệu quan hệ.

Dữ liệu nhấp chuột và Nhật ký web. Khi người dùng nhấp qua các ứng dụng trong trình duyệt web hoặc trên ứng dụng dành cho thiết bị di động, các tổ chức sẽ thu thập dữ liệu đầu vào để phân tích luồng dữ liệu cho các mẫu để cải thiện trải nghiệm của khách hàng hoặc khắc phục sự bất thường. Dữ liệu này có thể đến dưới ke-value (XML hoặc JavaScript (JSON)) và cung cấp cho các tổ chức một kho tàng thông minh

Spark là một lựa chọn rất phổ biến để thực hiện phân tích nhấp chuột và phân tích nhật ký. Vì dữ liệu này thường rất lớn và đạt tốc độ rất cao, Spark được sử dụng để xử lý dữ liệu trong bộ nhớ, tổng hợp và thực hiện phân tích. Dòng nhấp và nhật ký được phân tích để hiểu và dự đoán các hành vi khác của khách hàng.

Thị trường hoặc dữ liệu truyền thông xã hội. Các tổ chức đã học cách giám sát các mạng xã hội như Twitter, Instagram, Snap, Pinterest, Facebook và LinkedIn để trích xuất dữ liệu liên quan đến khách hàng hoặc sản phẩm của họ. Hầu hết mạng xã hội làm cho dữ liệu có thể truy cập được thông qua các API. Một trường hợp sử dụng phổ biến cho dữ liệu này là dành cho các sáng kiến ​​phân tích tình cảm của người dùng nhằm giải mã xem các bình luận trên phương tiện truyền thông xã hội có thuận lợi hay không. Những sáng kiến ​​này đã được thực hiện trong Hadoop bằng MapReduce, nhưng có thể được thực hiện hiệu quả hơn nhiều trong Spark.

Dữ liệu không gian địa lý. Dữ liệu không gian địa lý có thông tin vị trí và được tạo ra bởi một số lượng lớn các thiết bị như phương tiện, vệ tinh, điện thoại di động và cảm biến IoT. Các trường hợp sử dụng dữ liệu không gian địa lý rất đa dạng và được sử dụng bởi các cơ sở thương mại, chính quyền địa phương và các cơ sở quốc phòng. Ví dụ, các công ty phân phối gói nhập dữ liệu không gian địa lý để tối ưu hóa hoạt động cho đội xe tải của họ. Các tổ chức cứu trợ thiên tai sử dụng dữ liệu không gian địa lý để theo dõi các thảm họa tự nhiên như bão.

Dữ liệu cảm biến. Dữ liệu IoT từ các điểm cuối bao gồm cảm biến và thiết bị ngày càng được tận dụng để cải thiện hiệu quả trong các tổ chức. Dữ liệu IoT có thể ở các định dạng khác nhau, chẳng hạn như nhị phân hay JSON, được truyền qua các giao thức như MQTT, AMQP, COAP hoặc HTTP. Không giống như các danh mục khác, một số trường hợp sử dụng cho IoT yêu cầu xử lý diễn ra trên điểm cuối hoặc trên máy chủ trung gian được gọi là IoT Gateway hoặc trên cloud. Dữ liệu IoT cần được truyền phát và lưu trữ để phân tích lịch sử hoặc phân tích nâng cao.

Spark có các đầu nối có sẵn cho các định dạng nguồn được đề cập ở trên. Ngoài ra, dữ liệu có thể được đưa vào một khung nhắn tin phân tán như Kafka, có tích hợp chặt chẽ với Spark.Dữ liệu đã xử lý có thể được duy trì trong các kho lưu trữ dữ liệu của tổ chức, có thể bao gồm từ các hệ thống cơ sở dữ liệu có quan hệ hoặc không quan hệ đến các hệ thống lưu trữ trên cloud. Spark cũng có thể ghi đầu ra vào một bus tin nhắn, chẳng hạn như Apache Kafka. Ngoài ra, Spark có thể ghi dữ liệu ở nhiều định dạng tệp khác nhau, chẳng hạn như Avro, Parquet và ORC.