Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.16 MB, 33 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>Đại học Quốc gia Hà Nội Trường Đại học Khoa học Tự nhiên </b>
<b>---***--- </b>
<b>BÁO CÁO CUỐI KỲ HỌC PHẦN TÍNH QUẢN TRỊ DỮ LIỆU LỚN </b>
<b>Thành viên nhóm : Nguyễn Thị Ngọc Anh 21000404 Nguyễn Thị Hằng 21002141 </b>
<b>Phan Diệu Linh 21002154 </b>
<b>Hà Nội - 2023 </b>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">MỤC LỤC
<b>I. Introduction ... 3 </b>
<b>II. Related Work ... 4 </b>
<i><b>1. Phương pháp sử dụng Apache Spark, MongoDB và AWS ... 4 </b></i>
<i><b>2. Phương pháp song song ... 6 </b></i>
<i><b>3. Phương pháp sử dụng Hadoop Distributed File System (HDFS) và </b></i>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">Cùng với sự phát triển không ngừng về sản xuất và chất lượng đời sống con người ngày càng nâng cao, các vấn đề về môi trường đã dần được người dân quan tâm. Một trong số đó, vấn đề về chất lượng khơng khí đáng được chú ý vì nó ảnh hưởng tới sức khoẻ và môi trường sống của chúng ta. Đặc biệt đối với các thành phố lớn, hiểu xu hướng thay đổi khơng khí, nhận thơng tin chất lượng khơng khí kịp thời, chính xác và tồn diện cũng như đưa ra dự đốn chính xác về chất lượng khơng khí là cần thiết để giúp chúng ta phát hiện, hiểu rõ hơn về mức độ ơ nhiễm khơng khí tại các vị trí cụ thể và đưa ra các biện pháp cần thiết để cải thiện chất lượng khơng khí, bảo vệ sức khỏe của bản thân. Bài tốn này cũng có thể áp dụng trong nhiều lĩnh vực khác nhau như y tế, quản lý môi trường, và quy hoạch đô thị.
Dự án của chúng em tập trung vào việc sử dụng dữ liệu thời tiết được cập nhập hàng giờ để dự đốn mức độ ơ nhiễm khơng khí của từng vị trí cụ thể dựa trên toạ độ bản đồ. Để giải quyết bài toán, chúng em đã thu thập dữ liệu về chất lượng khơng khí bao gồm chỉ số ơ nhiễm khơng khí “AQI” cùng với dữ liệu về thời tiết cung cấp thông tin về các yếu tố như “nhiệt độ”, “độ ẩm”, “tốc độ gió” và “áp suất khơng khí”,... Tiếp theo, chúng em tiến hành xử lý dữ liệu bằng cách loại bỏ nhiễu, điền giá trị thiếu và chuẩn hóa dữ liệu để có thể sử dụng cho việc dự đốn. Sau đó, phát triển các mơ hình dự đốn chất lượng khơng khí dựa trên dữ liệu đã thu thập được. Với mỗi toạ độ, sẽ có các bộ dữ liệu tương ứng khác nhau dùng để huấn luyện mơ hình. Kết quả dự đoán được hiển thị trực quan trên bản đồ để người dùng dễ dàng nhìn thấy và hiểu với 2 thông tin
Chúng em đã tìm hiểu một vài phương pháp quản lý dữ liệu của các tác giả khác khi ứng dụng vào bài toán:
<i><b>1. Phương pháp sử dụng Apache Spark, MongoDB và AWS </b></i>
Bài báo này là nghiên cứu về việc dự đoán chất lượng khơng khí ở California, tuy nhiên, tác giả không tập trung vào kết quả dự đốn chất lượng khơng khí, mà chỉ tập trung vào so sánh hiệu suất. Tác giả đã sử dụng các cơng nghệ sau:
- Hai mơ hình học máy gồm: hồi quy logistic và phân lớp random forest.
- Hệ thống tính tốn phân tán gồm:
+ Apache Spark để tính tốn và xử lý dữ liệu. + MongoDB để lưu trữ dữ liệu.
+ Triển khai hệ thống trên AWS hay Amazon Web Service, một nền tảng điện toán đám mây cung cấp giải pháp cho tính tốn, lưu trữ và mạng.
Lý do được tác giả đưa ra là do Apache spark có tốc độ xử lý nhanh, dễ sử dụng, có nhiều tiện ích (như spark SQL hay MLlib) và có thể chạy ở bất cứ đâu. MongoDB cho phép lưu trữ dữ liệu dưới bất kỳ cấu trúc nào, dễ mở rộng, phù hợp với dữ liệu lớn và có hiệu suất tốt. Và AWS có tính khả dụng và tính mở rộng cao, phù hợp với xử lý dữ liệu lớn.
Dữ liệu được tác giả sử dụng gồm khoảng 600 nghìn bản ghi, được lấy trong khoảng thời gian từ năm 2008 đến năm 2017 tại California, với kích thước khoảng 1GB.
Ta có thể mơ tả hệ thống của tác giả như sau: đầu tiên, dữ liệu được lấy từ các API rồi xử lý sao cho khơng cịn thuộc tính thừa hay bị lỗi. Dữ liệu này
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">sau đó được lưu trữ trong MongoDB. Khi thực thi chương trình, dữ liệu được lấy ra bằng cách sử dụng Spark SQL, được gộp lại và tạo ra dataframe tương ứng. Tiếp đến, sử dụng Spark ML để huấn luyện các mơ hình học máy, rồi cuối cùng áp dụng mơ hình này để dự đốn kết quả. Tất cả q trình này đều được thực hiện trên nền tảng AWS, sử dụng các tiện ích như AWS Simple Storage Service (S3), AWS Elastic Compute Cloud (EC2) và AWS Elastic MapReduce (EMR).
Có thể thấy, lượng dữ liệu được tác giả sử dụng là rất lớn, và cần được truy xuất mỗi lần thực hiện tính tốn, do vậy việc sử dụng Apache Spark và MongoDB là sự lựa chọn tuyệt vời. Và nền tảng AWS cũng giải quyết được vấn đề tài nguyên khi mà mọi tính tốn và lưu trữ đều được xử lý trên đám mây, không tốn đến tài nguyên của máy local. Hình dưới đây là minh chứng của tác giả về việc hiệu suất của hệ thống này tốt đến nhường nào:
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">Tuy nhiên, AWS không phải sự lựa chọn tốt cho sinh viên khi địi hỏi một khoản phí nhất định cho các dịch vụ mà chúng em cần sử dụng, mặc dù điều này là hoàn toàn hợp lý với một nền tảng toàn diện như vậy.
<i><b>2. Phương pháp song song </b></i>
lid=IwAR2plUr08mNSBp6fo6Ib9IAgFpCV1-If8aeied9AVVnS4FanjYC-Rxf0P5g
Trong bài báo này tác giả đã xây dựng một hệ thống theo dõi và dự báo thời tiết trong lĩnh vực nông nghiệp
- Tập dữ liệu: dữ liệu thời tiết từ tháng 1 đến tháng 3 năm 2017 tại khu vực Bogor
- Với các dữ liệu được lấy là: thời gian (time of observation), ngày (date), hướng gió (wind direction), tốc độ gió (wind speed), lượng mưa (rain volume), nhiệt độ (temperature), độ ẩm (humidity), áp suất khơng khí (air pressure).
Công nghệ được sử dụng trong bài báo này bao gồm:
- Thu thập dữ liệu bằng bộ cảm biến WSN (Wireless sensor networks) - Xử lý song song và phân tích hiệu suất tính tốn bằng mơ hình
ARIMA
Hệ thống theo dõi và dự báo thời tiết bao gồm các bước sau: - Bước 1: Thu thập dữ liệu cần thiết cho hệ thống
- Bước 2: Xử lý dữ liệu bằng phương pháp tính tốn song song
<i><b>Bước 1: Thu thập dữ liệu cần thiết cho hệ thống </b></i>
Đầu tiên tác giả đã sử dụng bộ cảm biến WSN (Wireless sensor networks) để thu thập các dữ liệu cần thiết. Bộ cảm biến WSN này hoạt động như sau:
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">Các dữ liệu cần thiết sẽ được các sensors thu thập và lưu dưới dạng file (CSV) với các thuộc tính là: thời gian (time of observation), ngày (date), hướng gió (wind direction), tốc độ gió (wind speed), lượng mưa (rain volume), nhiệt độ (temperature), độ ẩm (humidity), áp suất khơng khí (air pressure).
File CSV này sẽ được gửi đến WSN node tại đây dữ liệu sẽ được kiểm tra và làm sạch. Bằng cách dựa trên chuỗi thời gian thì những dữ liệu trùng lặp sẽ được loại bỏ.
Tiếp đến dữ liệu này được đến Data Services để lưu trữ vào cơ sở dữ liệu phục vụ cho quá trình tính tốn sau này. Dưới đây là các thơng số về kích thước bộ nhớ để lưu trữ WSN node theo giây, phút, giờ, ngày và tháng:
Như vậy, thuật tốn trong bước này được mơ tả như sau:
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8"><i><b>Bước 2: Xử lý dữ liệu bằng q trình tính tốn song song </b></i>
Trong phần quá trình xử lý song song thì khối lượng công việc sẽ được chia thành nhiều bộ xử lý bằng mơ hình ARIMA như hình dưới đây:
Quá trình xử lý song song này sẽ được thực hiện trên máy tính với 8 bộ xử lý và 5500 bản ghi dữ liệu. Sau đó tác giả thực hiện phân vùng các dữ liệu này dựa trên loại dữ liệu: nhiệt độ tối thiểu (minimum temperature), nhiệt độ tối đa (maximum temperature), áp suất khơng khí (air pressure), độ ẩm (humidity), lượng mưa (daily rainfall) và năng lượng mặt trời (solar).
Tiếp đến hệ thống sẽ phân phối dữ liệu vào các process thích hợp để thực hiện tính toán như vậy tốc độ xử lý dữ liệu sẽ nhanh hơn. Kết quả cho thấy khi áp dụng q trình tính tốn song song trong việc xử lý dữ liệu thời tiết thì tốc độ nhanh hơn gấp 2-3 lần so với bình thường.
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><i><b>3. Phương pháp sử dụng Hadoop Distributed File System (HDFS) và Spark </b></i>
Bài báo này giải quyết vấn đề dự đốn chất lượng khơng khí sử dụng một tập dữ liệu không thời gian lớn và bất cân bằng. Hệ thống của họ dựa trên 3 cơng nghệ chính: tính tốn song song trên hệ thống Hadoop và Spark phân tán, phương pháp phân vùng kép và thuật toán Random Forest. Chúng em quan tâm nhiều hơn về cách họ sử dụng Hadoop và Spark, nên sẽ không đề cập đến phương pháp phân vùng kép và thuật toán Random Forest ở phần này.
- Hadoop: sử dụng hai cơng nghệ chính là Hadoop Distributed File System (HDFS) và Yet Another Resource Negotiator (YARN). HDFS được sử dụng để lưu trữ và truy vấn dữ liệu từ nhiều máy tính (node), sử dụng các node gồm master node và slave node. Master node cài đặt HDFS được gọi là name node, có nhiệm vụ chia dữ liệu thành các phần vào các slave node, điều khiển các node này và đồng thời lưu trữ các thông tin cần thiết cho việc truy vấn dữ liệu. Slave node cài đặt HDFS được gọi là data node, có nhiệm vụ lưu trữ một phần dữ liệu và đọc, ghi dữ liệu dưới sự chỉ đạo của name node. YARN gồm hai node gọi là quản lý tài nguyên và quản lý nhân sự (các node), có nhiệm vụ điều chỉnh tài nguyên hiện có như bộ nhớ, CPU,... trên các máy tính, lên lịch cho những cơng việc cần làm, làm khi nào, ở đâu, giao tiếp giữa các node và giao việc cho các node.
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">- Spark Core được tác giả sử dụng để thực hiện những công việc đọc, ghi dữ liệu và tính tốn trong bộ nhớ, sử dụng Resilient Distributed Dataset (RDD) để tăng tốc độ tính tốn. Tuy nhiên RDD không hỗ trợ làm việc với kiểu dữ liệu không gian, nên tác giả đã sử dụng thư viện GeoSpark để hỗ trợ làm việc với kiểu dữ liệu này.
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">Có thể mô tả lại cấu trúc hệ thống mà tác giả đã xây dựng như sau.
<i><b>1. Mô tả dataset </b></i>
Dữ liệu được sử dụng trong dự án này lấy từ là dữ liệu được phép sử dụng cho các hoạt động phi thương mại.
Tập dữ liệu được sử dụng bao gồm 2 phần chính: tập dữ liệu dùng để huấn luyện mơ hình học máy và tập dữ liệu dùng để dự đốn. Trong đó, tập dữ liệu huấn luyện gồm dữ liệu về thời tiết và dữ liệu về chất lượng khơng khí, cịn tập dữ liệu dự đốn thì chỉ có dữ liệu về thời tiết mà chưa có dữ liệu về chất lượng khơng khí. Chúng em sẽ sử dụng dữ liệu thời tiết được dự báo trước này để dự đoán chất lượng khơng khí vào những ngày đó.
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">Địa điểm sẽ được lựa chọn trên bản đồ, vậy nên khơng có thơng tin về vị trí trong các tập dữ liệu. Mỗi địa điểm mới được chọn sẽ lấy ra một tập dữ liệu khác nhau. Dữ liệu được lấy trực tiếp từ API, chuyển đổi thành dataframe và xử lý, không cần thông qua công cụ lưu trữ nào.
a. Tập dữ liệu huấn luyện: gồm 5016 bản ghi, mỗi bản ghi ứng với 1 giờ, được lấy trong khoảng thời gian từ 210 ngày trước đến 2 ngày trước so với hiện tại (khoảng 7 tháng). Lý do nhóm em khơng lấy dữ liệu đến sát ngày hiện tại là do trên trang web chỉ cập nhật đến 2 ngày trước hiện tại.
Nhóm em lựa chọn 5016 bản ghi là do con số này đủ để xây dựng một mô hình đủ chính xác cho bài tốn dự đốn chất lượng khơng khí. Khơng nên lấy khoảng thời gian q xa do đặc thù chất lượng khơng khí bị ảnh hưởng bởi nhiều yếu tố, trong đó có những yếu tố chỉ xuất hiện trong một khoảng thời gian, ít khi lặp lại. Ví dụ như đại dịch COVID-19, nếu chúng ta đưa cả khoảng thời gian xảy ra đại dịch vào trong tập dữ liệu này để dự đoán cho khoảng thời gian khơng có dịch thì kết quả sẽ khơng cịn đúng nữa.
Tập dữ liệu này được ghép từ 2 phần: thời tiết và chất lượng khơng khí.
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">Dữ liệu về thời tiết có dạng như sau:
Dữ liệu về chất lượng khơng khí có dạng như sau:
Sau khi xử lý gộp hai dữ liệu này lại, tập dữ liệu sẽ có các thuộc tính như sau:
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">+ date: ngày và giờ ghi số liệu.
+ temperature_2m: nhiệt độ tại khoảng cách 2m so với mặt đất. + relative_humidity_2m: độ ẩm tại khoảng cách 2m so với mặt đất. + dew_point_2m: sương mù tại khoảng cách 2m so với mặt đất. + apparent_temperature: nhiệt độ biểu kiến.
+ precipitation: tổng lượng mưa của giờ trước. + snow_depth: độ dày tuyết trên mặt đất. + cloud_cover: tổng độ che phủ mây.
+ cloud_cover_low: độ che phủ mây ở tầng thấp (2km). + surface_pressure: áp suất khơng khí trên bề mặt. + et0_fao_evapotranspiration: lượng thoát hơi nước.
+ wind_speed_10m: tốc độ gió tại khoảng cách 10m so với mặt đất. + wind_direction_10m: hướng gió tại khoảng cách 10m so với mặt
đất.
+ wind_gusts_10m: gió giật tại khoảng cách 10m so với mặt đất. + us_aqi: chỉ số chất lượng khơng khí (air quality index), là đặc trưng
cho chất lượng khơng khí, được tính theo chuẩn Hoa Kỳ.
Giá trị AQI theo chuẩn Hoa Kỳ được phân thành các mức như sau:
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">b. Tập dữ liệu dự đoán: gồm 168 bản ghi, mỗi bản ghi ứng với 1 giờ, dự báo thời tiết trong vòng 7 ngày tới. Tập dữ liệu này chỉ bao gồm dữ liệu về thời tiết, tức là có các thuộc tính giống hệt như mơ tả ở trên ngoại trừ thuộc tính “us_aqi”.
Các thuộc tính được chúng em lựa chọn kỹ lưỡng từ hàng chục các thuộc tính thời tiết sao cho chúng có ý nghĩa nhất với mơ hình.
+ Ngày và giờ là thuộc tính quan trọng, dùng để kết nối các tập dữ liệu với nhau và lựa chọn số ngày mong muốn sử dụng.
+ Các thuộc tính nhiệt độ, độ ẩm, sương mù, lượng mưa, tuyết, độ che phủ mây, áp suất khơng khí đều có ảnh hưởng lớn đến chất lượng khơng khí ở thời điểm hiện tại.
+ Các thuộc tính như lượng thốt hơi nước, tốc độ gió, hướng gió và gió giật khơng chỉ ảnh hưởng đến chất lượng khơng khí của hiện tại mà cịn liên quan đến chất lượng khơng khí của khoảng thời gian sau đó.
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16"><i><b>2. Mơ tả về công nghệ quản lý dữ liệu được sử dụng trong dự án </b></i>
2.1 : Pandas
<small>❖ </small> Khác với các công nghệ như Apache Spark, Hadoop hay Kafka rất thích hợp để xử lý dữ liệu lớn với quy mô phân tán. Pandas thường được sử dụng để xử lý dữ liệu trung bình đến lớn trên một máy đơn (single machine). Nó là một thư viện xử lý dữ liệu rất mạnh trên Python, cung cấp các cấu trúc dữ liệu nhanh, mạnh mẽ, linh hoạt. Pandas được thiết kế để làm việc dễ dàng và trực quan với dữ liệu có cấu trúc (dạng bảng, đa chiều, không đồng nhất) và dữ liệu chuỗi thời gian.
dạng JSON được trả về từ OpenMeteo API thành một cấu trúc dữ liệu là DataFrame để dễ quản lý và xử lý. Sau đây là mơ tả chi tiết về vai trị của Pandas trong từng hàm cụ thể:
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">+ Hàm “getAirHistory (lat, lon)”:
<small>● </small> Sử dụng Pandas để tạo DataFrame “hourly_dataframe” từ dữ liệu thời tiết cập nhập hàng giờ được trả về từ OpenMeteo Air Quality API.
<small>● </small> Dữ liệu bao gồm thời gian “date” và chỉ số chất lượng không khí “us_aqi”.
<small>● </small> Pandas giúp xử lý thơng tin thời gian, chuyển đổi đơn vị thời gian và tạo một chuỗi thời gian có tần suất giữa các giờ. + Hàm “getWeatherHistory” và “getWeatherForecast ”:
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">● Sử dụng Pandas để tạo DataFrame “hourly_dataframe” từ dữ liệu thời tiết hàng giờ được trả về từ OpenMeteo Weather Archive API.
● Dữ liệu bao gồm thời gian “date” và các biến thời tiết như “nhiệt độ”, “độ ẩm”, “điểm sương”, “áp suất khơng khí”, v.v. ● Pandas giúp xử lý thông tin thời gian và tạo một cấu trúc dữ
liệu dễ quản lý cho việc phân tích dữ liệu thời tiết.
- Tiếp đó, Pandas được sử dụng trong quá trình chuẩn bị và xử lý dữ liệu trước khi đưa vào mơ hình học máy trong Apache Spark. Cụ thể với hàm “runModel”:
● Sử dụng Pandas để thực hiện việc kết hợp (merge) dữ liệu từ “air_history_pd” và “weather_history_pd” dựa trên cột “date”. Kết
</div>