Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dữ liệu lớn và Các bước tiếp cận Apache Spark

Hong Ong
November 06, 2017

Dữ liệu lớn và Các bước tiếp cận Apache Spark

Tổ chức: TopDev.
Chủ đề: Dữ liệu lớn và các bước tiếp cận trong 3 giờ
Speaker: Ông Xuân Hồng - Researcher engineer @ Trusting Social.
Ngày: 30/09/2017.

Hong Ong

November 06, 2017
Tweet

More Decks by Hong Ong

Other Decks in Technology

Transcript

  1. Dữ liệu lớn và các bước tiếp cận: Apache Spark

    Ông Xuân Hồng Research engineer @ TrustingSocial
  2. Nội dung • Tổng quan hệ thống Big Data •

    RDD cơ bản • Data Frame cơ bản • Demo • Kinh nghiệm • Tìm hiểu thêm
  3. Tổng quan hệ thống Big Data Message queue Processing Storage

    Management • Amazon Kinesis • SQS • Apache Kafka • Apache Spark • Apache Storm • Apache Flink • Hadoop • AWS S3, Google storage • NoSQL • Jenkins • Git • Docker • Ansible • Travis
  4. • RDD: Resilient Distributed Dataset. • Immutable: không thay đổi

    được, chỉ có thể tạo ra RDD mới. • Lazy evaluated: tính toán để đó, chừng nào có Action mới thực thi. • Distributed: phân tán trên các cluster/workers. RDD cơ bản
  5. RDD cơ bản • Master/Driver ◦ Chuyển program thành các

    tasks cho các workers. ◦ Scheduling tasks để các workers hoạt động đồng bộ với nhau. • n-Cluster/Executors ◦ Hoàn thành các tasks và trả kết quả về Driver. ◦ Cache dữ liệu khi được yêu cầu. • SparkContext dùng để tạo RDDs.
  6. RDD cơ bản Transformations Actions • map() • flatMap() •

    filter() • distinct() • sample() • collect() • count() • countByValue() • take() • top() • takeOrdered() Các thao tác transformations chỉ được thực thi khi lệnh Actions được gọi. Ví dụ: hàm action collect() sẽ trigger hàm transformations map() thực hiện tính toán của mình.
  7. Data Frame cơ bản • Kế thừa từ RDDs. •

    Tối ưu hoá hiệu suất tính toán nhờ Spark-SQL Catalyst optimizer. • Hỗ trợ thao tác ETL dễ dàng hơn nhờ SQL-like. • Học tập từ Python/Pandas và R Dataframe mô phỏng dữ liệu dạng bảng.
  8. Demo Installation • pip • pip install virtualenv • pip

    install pandas • cd ~ • mkdir virtualenv • cd virtualenv • virtualenv topdevlibs • source topdevlibs/bin/activate • pip install jupyter • brew install apache-spark • create pyspark profile ◦ export PATH=$PATH:/usr/local/Cellar/apache-spark/2.2.0/bin ◦ export PYSPARK_DRIVER_PYTHON=jupyter ◦ export PYSPARK_DRIVER_PYTHON_OPTS='notebook' pyspark • pyspark
  9. • Nên dùng Notebook để dễ code và kiểm tra

    hiệu suất. • Nên dùng Schema để load đúng định dạng dữ liệu. • Binary (parquet, gzip) > Text (csv, json), File > Database. • Tự tạo dữ liệu Big Data bằng Mockaroo. • Nên sử dụng cache khi bảng dữ liệu được sử dụng nhiều lần tiếp đó. • Nên xoá cache trước khi khởi tạo cache mới để tránh tràn bộ nhớ. • Đối với bảng dữ liệu lớn nên lưu bảng tạm ra đĩa thay vì cache. • Code SparkSQL sáng sủa hơn Dataframe built-in function. • Upgrade lên version 2.0 khi có thể để tối ưu tính toán và quản lý bộ nhớ. • Học thông qua: ◦ Thực hành ◦ Cheat sheet ◦ Side project Kinh nghiệm
  10. Tìm hiểu thêm • Thiết lập driver/workers với Zookeeper, Mesos,

    Marathon, Chronos. • Configuration cho Spark • Cách deploy bằng Docker. • Databricks community. • Load dữ liệu từ các source khác (MongoDB, MySQL, PostgreSQL, S3, JDBC, Cassandra …) • Làm việc với AWS S3, Google Cloud Storage. • Python vs Scala vs R. • Spark Dataframe vs Pandas Dataframe. • Cache vs Persist. • Cài notebook cho Spark Scala. • Cấu hình hệ thống notebook cho từng yêu cầu hệ thống khác nhau (spark-small, spark-medium, spark-large, spark-extra).