1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống

60 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Tác giả Trần Cao Nguyên
Người hướng dẫn PGS.TS. Thoại Nam
Trường học Đại học Quốc gia TP. HCM
Chuyên ngành Khoa học máy tính
Thể loại Luận văn thạc sĩ
Năm xuất bản 2018
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 60
Dung lượng 614,83 KB

Cấu trúc

  • 1.1. Lý do ch ọ n đề tài (12)
  • 1.2. M ụ c tiêu và gi ớ i h ạ n c ủ a đề tài (12)
  • 1.3. Ý ngh ĩ a c ủ a đề tài (13)
  • 1.4. C ấ u trúc lu ậ n v ă n (14)
  • 2.1. T ổ ng quan v ề big data (15)
    • 2.1.1. Khái ni ệ m v ề big data (15)
    • 2.1.2. Các đặ c tr ư ng c ủ a big data (16)
    • 2.1.3. Ứ ng d ụ ng hi ệ n t ạ i c ủ a big data (16)
  • 2.2. Gi ớ i thi ệ u v ề Apache Hadoop (17)
    • 2.2.1. Ki ế n trúc c ủ a Hadoop (17)
    • 2.2.2. Ki ế n trúc c ủ a HDFS (19)
    • 2.2.3. S ơ đồ x ử lý c ủ a Map-Reduce (20)
  • 2.3. Gi ớ i thi ệ u v ề streaming data (22)
    • 2.3.1. So sánh batch processing v ớ i streaming processing (22)
    • 2.3.2. Ứ ng d ụ ng streaming data trong th ự c t ế (23)
  • 2.4. Gi ớ i thi ệ u v ề Apache Spark (23)
    • 2.4.1. Spark trong h ệ sinh thái c ủ a Hadoop (23)
    • 2.4.2. Ki ế n trúc c ủ a Spark (24)
    • 2.4.3. Ứ ng d ụ ng c ủ a Spark (25)
    • 2.4.4. Gi ớ i thi ệ u v ề Spark Streaming (26)
  • 3.1. Trên Th ế gi ớ i (28)
  • 3.2. Ở Vi ệ t Nam (28)
  • 4.1. B ộ thông s ố ch ấ t l ượ ng c ầ n giám sát (30)
  • 4.2. Đồ hình c ủ a m ạ ng l ướ i c ấ p n ướ c (34)
    • 4.2.1. Đồ hình tham kh ả o trong th ự c t ế (34)
    • 4.2.2. M ộ t s ố đề xu ấ t trên đồ hình c ấ p n ướ c (35)
  • 4.3. T ổ ch ứ c l ư u tr ữ d ữ li ệ u (37)
    • 4.3.1. T ổ ch ứ c thu nh ậ n d ữ li ệ u (37)
    • 4.3.2. Đị nh d ạ ng d ữ li ệ u (37)
  • 4.4. Thi ế t k ế ứ ng d ụ ng (39)
    • 4.4.1. S ơ đồ kh ố i c ủ a ứ ng d ụ ng (39)
    • 4.4.2. L ượ c đồ tu ầ n t ự (40)
    • 4.4.3. L ư u đồ thu ậ t toán (41)
    • 4.4.4. M ụ c tiêu c ủ a ứ ng d ụ ng (45)
  • 5.1. Môi tr ườ ng hi ệ n th ự c và cách s ử d ụ ng (46)
    • 5.1.1. Môi tr ườ ng hi ệ n th ự c (46)
    • 5.1.2. Các b ướ c cài đặ t framework (46)
    • 5.1.3. Cách s ử d ụ ng ứ ng d ụ ng (49)
  • 5.2. K ế t qu ả ch ạ y ứ ng d ụ ng (51)
  • 6.1. Nh ữ ng đ i ề u đ ã đạ t đượ c (54)
  • 6.2. Nh ữ ng đ i ể m h ạ n ch ế (54)
  • 6.3. H ướ ng phát tri ể n đề tài (55)

Nội dung

II.NHIỆM VỤ VÀ NỘI DUNG: Đề tài nghiên cứu bộ thông số về chỉ tiêu chất lượng nước ăn uống được chỉ định trong tài liệu QCVN 01:2009/BYT để chọn lọc một bộ thông số tối thiểu cần thiết đ

Lý do ch ọ n đề tài

Hiện nay, ở các thành phố lớn, các khu chung cư, khu dân cư, hộ gia đình ngày càng có nhu cầu cao về chất lượng nước ăn uống Hơn nữa, sự phát triển dân số và các tác động của yếu tố môi trường sống có khả năng ảnh hưởng rất nhiều đến chất lượng nước ăn uống được cung cấp Do đó, luận văn này mong muốn giúp giải quyết được vấn đề cảnh báo một cách nhanh chóng và dự báo sớm các khả năng xấu có thể xảy ra đối với chất lượng nước ăn uống được cung cấp cho các khu chung cư, khu dân cư, hộ gia đình Đây là nhu cầu của các hộ dân trong tương lai sắp tới Trên thực tế, đây cũng đang là nhu cầu được đặt ra bởi các công ty cung cấp nước trên địa bàn các thành phố lớn

Hệ thống cấp nước cho một thành phố khá phức tạp với nhiều tuyến đường ống đi tới khắp các khu dân cư và đến tận các hộ gia đình Do đó, Big data là phương pháp luận phù hợp với việc thu thập data từ việc triển khai đặt thiết bị đo đến từng hộ dân Việc data được thu thập liên tục từ khắp các điểm đặt thiết bị đo nên được đảm bảo bằng một phương pháp tổ chức lưu nhận và xử lý phù hợp Một phương pháp rất phù hợp cho trường hợp này là Streaming data.

M ụ c tiêu và gi ớ i h ạ n c ủ a đề tài

Mục tiêu của luận văn này gồm các ý như sau:

- Nghiên cứu và đánh giá bộ thông số môi trường về chất lượng của nước ăn uống có thể quan trắc được Các thông số về chỉ tiêu chất lượng nước ăn uống được chỉ định trong tài liệu QCVN 01:2009/BYT [4]

- Đề xuất một bộ các thông số có ảnh hưởng trực tiếp và nguy hại đến sức khỏe con người cần thiết phải thực hiện việc giám sát từ việc nghiên cứu và đánh giá các thông số trong tài liệu QCVN 01:2009/BYT

2 - Đề xuất sự bố trí các điểm đặt thiết bị đo trong đồ hình của mạng lưới cấp nước

- Xây dựng hệ thống phân tích dữ liệu thu thập được đối với các thông số chất lượng của nước ăn uống để cảnh báo ngay khi phát hiện bất kỳ vị trí đo nào xảy ra bất thường

Với mục tiêu như trên, luận văn này có giới hạn như sau:

- Tập trung nghiên cứu bộ thông số về chỉ tiêu chất lượng nước ăn uống được chỉ định trong tài liệu QCVN 01:2009/BYT

- Tìm hiểu và phân tích đồ hình của hệ thống cấp nước đang được triển khai bởi công ty cấp nước đóng trên địa bàn thành phố Hồ Chí Minh

- Tập trung vào việc phân tích dữ liệu đã thu thập được, không tham gia vào việc xây dựng thiết bịđo đạc

- Hệ thống phân tích dữ liệu thu thập được có chức năng cảnh báo tức thời các vị trí xảy ra vượt quá giới hạn cho phép và sự suy giảm áp lực nước trong đường ống, chưa thực hiện khả năng dự báo những bất thường có thể xảy ra ở các vị trí khác trong hệ thống cấp nước.

Ý ngh ĩ a c ủ a đề tài

Ý nghĩa khoa học: Đề tài vận dụng Streaming data để giải quyết bài toán phân tích được đặt ra trên hệ thống phát sinh dữ liệu lớn theo thời gian thực Ý nghĩa thực tiễn: Đề tài giải quyết bài toán đang được đặt ra bởi các cơ quan hữu quan và người dân ở các thành phố về khả năng nhận biết chất lượng nước ăn uống đang được sử dụng hàng ngày một cách minh bạch, nhanh chóng và liên tục

C ấ u trúc lu ậ n v ă n

Chương 1, Giới thiệu: giới thiệu tổng quan về đề tài, mục tiêu nghiên cứu và giới hạn của đề tài, ý nghĩa của đề tài

Chương 2, Kiến thức nền tảng: trình bày tổng quan các khái niệm cơ bản về Big data, bộ công cụ (framework) Hadoop và mô hình Map-Reduce, Streaming data, bộ công cụ (framework) Spark

Chương 3, Một số công trình liên quan: Giới thiệu và đánh giá các công trình nghiên cứu, các sản phẩm liên quan đã và đang được thực hiện trong thực tế

Chương 4, Phương pháp giải quyết vấn đề: trình bày bộ thông sốđược đề xuất, đồ hình cấp nước và đề xuất sự bố trí các thiết bịđo, định dạng dữ liệu và tổ chức lưu trữ dữ liệu, xây dựng ứng dụng phân tích dữ liệu bằng Spark

Chương 5, Thử nghiệm: trình bày việc thực thi cụ thể ứng dụng phân tích dữ liệu bằng Spark trên máy tính cá nhân như: cấu hình máy, các bước cài đặt, chạy ứng dụng Trình bày các kết quả thử nghiệm, đánh giá kết quả thu được

Chương 6, Kết luận: Tổng hợp những điều đạt được của đề tài, những điểm hạn chế của đề tài, và đề xuất một số hướng phát triển đề tài

CH ƯƠ NG 2: KI Ế N TH Ứ C N Ề N T Ả NG

Chương này trình bày tổng quan các kiến thức và công nghệ nền tảng được vận dụng để tiến tới xây dựng đề tài này, bao gồm: Big data, Apache Hadoop, Streaming data, Apache Spark.

T ổ ng quan v ề big data

Khái ni ệ m v ề big data

Thuật ngữ “Big data” (tạm dịch là “dữ liệu lớn”; sau đây, tôi xin được sử dụng cụm từ

“Big data” để diễn đạt trong toàn bộ nội dung tiếp theo) xuất hiện vào khoảng những năm 1990, và gần đây, nó đã trở thành một thuật ngữ phổ biến

Big data là thuật ngữ dùng để nói đến các tập dữ liệu rất lớn và phức tạp Những tập dữ liệu này rất khó hoặc không thể xử lý được bằng những phần mềm ứng dụng truyền thống về quản trị dữ liệu như các hệ quản trị cơ sở dữ liệu quan hệ, các phần mềm trực quan hóa dữ liệu, v.v mà phải được tổ chức lưu trữ và xử lý trên các hệ thống máy tính phân tán cùng với các bộ công cụ phù hợp

Một số khía cạnh liên quan đến việc xuất hiện các tập dữ liệu rất lớn có thể kểđến như sau:

- Các ngồn phát sinh dữ liệu: Dữ liệu được phát sinh từ sự lao động sản xuất ở tất cả các ngành nghề trong đời sống hàng ngày Sự đa dạng của các loại hình lao động nảy sinh ra rất nhiều các nhu cầu khác nhau về việc khai thác các thông tin trong các nguồn dữ liệu được sinh ra

- Các thiết bị và phương thức cho việc thu nhận và lưu trữ dữ liệu: Các thiết bị sinh dữ liệu ngày càng đa dạng, kết hợp với sự phát triển ngày càng mạnh mẽ của mạng máy tính cùng với giá thành ngày càng giảm của các thiết bị lưu trữ giúp cho việc thu thập và lưu trữ dữ liệu ngày càng dễ dàng và nhanh chóng

Trong những năm gần đây, IoT (Internet vạn vật) đang phát triển mạnh mẽ giúp cho việc thu nhận và lưu trữ dữ liệu càng thuận lợi hơn

- Các loại định dạng dữ liệu: Dữ liệu phát sinh từ lao động sản xuất tồn tại ở nhiều định dạng khác nhau và thường được phân nhóm thành ba loại: có cấu trúc, bán cấu trúc và không có cấu trúc Điều này cũng đặt ra nhiều thách thức cho việc xử lý các dữ liệu được thu thập với dung lượng lớn

5 Các bài toán mà hiện nay, big data thường được áp dụng để xử lý là: giám sát, dự báo các thay đổi bất thường của các đối tượng đang diễn tiến nào đó trong thực tế như thời tiết, hành vi của một nhóm người, giá cả sản phẩm, v.v Với các đặc trưng của mình, big data luôn phải đối mặt với các thách thức như: tìm kiếm, chia sẻ, trực quan hóa, bảo mật thông tin, v.v

Các đặ c tr ư ng c ủ a big data

Big data có các đặc trưng được viết tắt thành các chữ V (theo các từ tiếng Anh) Cũng có nhiều khi, chúng ta gặp ởđâu đó, các đặc trưng này là 3V, 4V hoặc thậm chí là 5V

Ban đầu, các đặc trưng của big data được mô tả trong 3V là Volume, Velocity và Variety Dần dần, các khái niệm và phát biểu về big data được diễn giải chi tiết hơn và các đặc trưng này có thêm Veracity (trở thành 4V), rồi đến Value (trở thành 5V) Các đặc trưng này như sau:

- Volume: Dung lượng của dữ liệu được tạo ra từ các nguồn phát sinh Dung lượng này là rất lớn nên cần phải được lưu trữ bằng các hệ thống phù hợp

- Velocity: Tốc độ phát sinh dữ liệu và tốc độ lan truyền dữ liệu Big data thường có tốc độ sinh dữ liệu theo thời gian thực (real-time)

- Variety: Sự đa dạng về các loại dữ liệu được phát sinh từ nhiều nguồn khác nhau Các hệ quản trị cơ sở dữ liệu quan hệ truyền thống tổ chức dữ liệu có cấu trúc thành các bảng, nhưng trên thực tế, hơn 80% lượng dữ liệu sinh ra là không có cấu trúc và ở nhiều định dạng khác nhau

- Veracity: Sựđáng tin cậy về chất lượng của dữ liệu Chất lượng của dữ liệu sẽ ảnh hưởng rất lớn đến kết quả của các phương pháp phân tích dữ liệu

- Value: Sựđáng giá của dữ liệu Dữ liệu được phát sinh từ nhiều nguồn; do đó, việc lựa chọn nguồn dữ liệu nào để thu nhận và phân tích sao cho có thể đáp ứng được càng nhiều yêu cầu phân tích thì sẽ càng đáng giá.

Ứ ng d ụ ng hi ệ n t ạ i c ủ a big data

Hiện nay, big data đang phát triển một cách mạnh mẽ bởi rất nhiều tổ chức và tập đoàn lớn trên Thế giới Sự phát triển này đã kích thích sự ra đời của các công nghệ có thể kểđến như sau:

6 - Công nghệ lưu trữ: DAS (Công nghệ lưu trữ song song trên các ổ đĩa tốc độ cao), các công nghệ lưu trữ chia sẻ như SAN, NAS

- Công nghệ phần mềm: Xuất hiện các giải pháp triển khai và phát triển hệ thống lưu trữ và xử lý phân tán mạnh mẽ như GFS, HDFS, NoSQL, IoT, v.v

- Dịch vụ công nghệ thông tin điển hình: Amazon, Facebook, Twitter, Google Drive, v.v

Các lĩnh vực đời sống hiện đang ứng dụng big data gồm có: Quản lý chính phủ, tài chính, sản xuất, giáo dục, y học, v.v

Gi ớ i thi ệ u v ề Apache Hadoop

Ki ế n trúc c ủ a Hadoop

Hadoop có 4 thành phần như sau:

- Hadoop Common: Là thư viện và các tiện ích về Java để các thành phần khác triệu gọi nhằm khởi động Hadoop

- Hadoop YARN (Yet Another Resource Negotiator): Là framework dành cho việc lập lịch các tác vụ và quản lý tài nguyên trong cụm máy tính

- HDFS (Hadoop Distributed File System): Là hệ thống lưu trữ dữ liệu phân tán

Hệ thống này có giá thành tương đối rẻ nhưng rất đáng tin cậy

- Bộ xử lý Map-Reduce: Là các chương trình thực thi các giải thuật Map và Reduce một cách song song trên hệ thống máy tính phân tán để đưa ra kết quả nhanh chóng đối với tập dữ liệu lớn

7 Sơđồ khối các thành phần của Hadoop như Hình 1 [5] dưới đây:

Hình 1: Các thành phần của Hadoop

Kiến trúc lưu trữ và xử lý dữ liệu của Hadoop được tổ chức theo dạng Master- Slave như Hình 2 dưới đây, trong đó:

- Master có vai trò: Tiếp nhận các yêu cầu về metadata (tức là các dữ liệu dùng cho việc điều khiển) từ bên ngoài, xử lý các yêu cầu đó rồi phát ra các yêu cầu đểđiều phối hoạt động của các Slave

- Slave có vai trò: Tiếp nhận các yêu cầu điều phối từ Master và thực hiện theo

Hình 2: Kiến trúc Master-Slave của Hadoop

Ki ế n trúc c ủ a HDFS

Kiến trúc của HDFS khớp với kiến trúc của Hadoop Hình 3 [28] dưới đây là kiến trúc của HDFS

Hình 3: Kiến trúc của HDFS

- Kiến trúc của HDFS gồm có hai đối tượng chính là: NameNode và DataNode

+ NameNode đóng vai trò Master: tiếp nhận các yêu cầu xử lý từ chương trình khách (client) bên ngoài Sau khi nhận biết các thông tin trong metadata,

NameNode sẽ xác định được khối dữ liệu (block) nào trên DataNode nào cần được thao tác và gửi yêu cầu xuống DataNode đó

+ DataNode đóng vai trò Slave: tiếp nhận yêu cầu về thao tác nhận được từ

NameNode Từ yêu cầu đó, DataNode xác định được khối dữ liệu cần thao tác để cho phép chương trình khách bên ngoài thao tác đến khối dữ liệu đó

- Các mối liên hệ giữa các cặp đối tượng như sau:

+ Client – NameNode: Yêu cầu (request) và hồi đáp (response) đối với metadata

9 + NameNode – DataNode: Chuyển các yêu cầu từ Client đến DataNode và điều phối DataNode

+ Client – DataNode: Trực tiếp đọc, ghi các khối dữ liệu

- HDFS được thiết kếđể có thể chạy được trên các phần cứng phổ thông

- HDFS có khả năng không bị sai lệch (resilient) nhờ có cơ chế Replication Cơ chế này sẽ tạo ra các bản sao của mỗi khối dữ liệu và lưu trữ ở các DataNode khác trong cùng cụm máy tính.

S ơ đồ x ử lý c ủ a Map-Reduce

Sơđồ xử lý của Map-Reduce phù hợp với kiến trúc của Hadoop Trong đó thể hiện các bước xử lý của một cặp thao tác Map-Reduce

Sơđồ xử lý của Map-Reduce như trong Hình 4 được giải thích như sau:

- Map-Reduce thực hiện 3 giai đoạn có tên là: Map, Shuffle và Reduce

+ Giai đoạn Map: xử lý dữ liệu ban đầu và cho ra danh sách các cặp

+ Giai đoạn Reduce: là sự kết hợp của giai đoạn Shuffle và Reduce để rút gọn danh sách các cặp

- NameNode có vai trò là Master, còn các DataNode có vai trò là các Slave

- Các bước xử lý từ giai đoạn Map đến Reduce:

+ Ứng dụng của người dùng (User hay Client) gửi một yêu cầu vào cụm máy tính Ví dụ: “Đếm số lượng từ” Yêu cầu này sẽđến NameNode

+ Sau khi nhận biết các thông tin, NameNode chuyển yêu cầu này đến các DataNode chứa các khối dữ liệu tương ứng

+ Mỗi DataNode sẽ thực hiện hàm Map trên các khối dữ liệu của nó để sinh ra một danh sách các cặp

+ Một DataNode nào đó sẽđược chọn để thực hiện hàm Reduce Ví dụ như DataNode_1 trong sơđồ này

+ DataNode được chọn sẽ thực thi hàm Reduce trên kết quả của hàm Map ở các DataNode nhưđã được tạo ra ở bước trên

10 + Hàm Reduce sẽ tạo ra kết quả là danh sách các cặp rồi gửi kết quả này tới NameNode

+ NameNode sử dụng kết quả này để trả lời đối yêu cầu của ứng dụng

Hình 4: Sơđồ xử lý của Map-Reduce

Ví dụ: Bài toán Word Count: Đếm số lần xuất hiện của mỗi từ (word) trong 2 khối dữ liệu dạng text (văn bản) khác nhau

Ta chỉ xét hoạt động và kết quả của Map-Reduce, tức là từ sau thời điểm DataNode nhận được yêu cầu từ NameNode cho đến lúc các DataNode thực hiện xong và có kết quả cuối cùng để gửi cho NameNode

Hình 5 dưới đây thể hiện dữ liệu input và kết quả của các giai đoạn Map và Reduce

Hình 5: Ví dụ “Word Count”.

Gi ớ i thi ệ u v ề streaming data

So sánh batch processing v ớ i streaming processing

- Batch processing (xử lý dữ liệu theo lô): là sự xử lý các khối dữ liệu đã được lưu trữ trong hệ thống qua một khoảng thời gian nào đó (gọi là batch data), thường là đủ dài để có thể lưu trữ được một lượng dữ liệu theo yêu cầu phân tích Do đó, mỗi khi xử lý dữ liệu, ứng dụng thường tốn khá nhiều thời gian để thao tác trên lượng lớn dữ liệu đã lưu trữ

Map-Reduce của Hadoop được sử dụng cho việc xử lý dữ liệu theo lô

Batch processing thường được ứng dụng cho các yêu cầu phân tích và tổng hợp thông tin một cách chi tiết để phục vụ cho việc đánh giá tổng thể hơn

- Streaming processing (xử lý dữ liệu theo dòng): là sự xử lý lượng dữ liệu ngay khi nó được sinh ra và gửi đến hệ thống có cài đặt ứng dụng xử lý dữ liệu Sự xử lý này sẽ cho ra các kết quả phân tích ngay lập tức Do xử lý dữ liệu ngay khi đến hệ thống và chưa lưu xuống thiết bị lưu trữ nên dữ liệu sẽ được nạp ngay vào bộ nhớ của hệ thống máy tính Do đó, thời gian xử lý lượng dữ liệu sẽ rất nhanh

Streaming processing thường được ứng dụng cho các yêu cầu phân tích tức thời trên các dữ liệu phát sinh liên tục

Ứ ng d ụ ng streaming data trong th ự c t ế

- Streaming data được ứng dụng trên các hệ thống cần thông báo tức thời như: phát hiện hành vi gian lận trên các trang web thương mại điện tử, phát hiện sự sai lệch hay biến thiên vượt ngưỡng của các thông số của các máy móc trong các hệ thống sản xuất, v.v

- Về công nghệ phần mềm, hiện nay đã có nhiều framework được phát triển để xây dựng các ứng dụng xử lý streaming data như: Apache Spark, Apache Storm, Apache Kafka, Apache Flink, Apache Samza, WSO2 Stream Processor (WSO2 SP), v.v

Gi ớ i thi ệ u v ề Apache Spark

Spark trong h ệ sinh thái c ủ a Hadoop

Qua nhiều năm phát triển, Hadoop đã được xây dựng thành một bộ gồm nhiều framework Người ta gọi đó là Hệ sinh thái Hadoop (Hadoop ecosystem)

Theo như Hình 6 [29] dưới đây, ta có thể thấy Spark là một thành phần trong hệ sinh thái của Hadoop

Hình 6: Spark trong hệ sinh thái Hadoop

Do đó, khi Spark được triển khai, nó sẽ gắn chặt với Hadoop

13 Có ba cách triển khai Spark vào hệ thống Hadoop như Hình 7 [5] dưới đây, gồm có:

- Standalone (hay Spark Standalone): cách triển khai này sẽ đặt Spark ở ngay phía trên HDFS và Spark sẽ truy cập HDFS một cách trực tiếp

- Hadoop YARN: cách triển khai này sẽ làm cho Spark hoạt động thông qua YARN Khi đó, các thao tác truy cập HDFS đều được thực hiện thông qua YARN

- Spark in MapReduce (SIMR): cách triển khai này sẽ được sử dụng khi người dùng muốn chạy các tác vụ của Spark cùng với sự hỗ trợ của các chức năng Map-Reduce có sẵn của Hadoop

Hình 7: Ba cách triển khai Spark vào hệ thống Hadoop.

Ki ế n trúc c ủ a Spark

Kiến trúc của Spark được trình bày như Hình 8 [30] dưới đây, gồm có các thành phần như sau:

- Apache Spark Core: Là cơ sở nền tảng cho tất cả các thành phần khác được xây dựng lên Nó cung cấp khả năng tính toán trên bộ nhớ và cả các truy cập thiết bị lưu trữ ngoài

- Spark SQL: Là thành phần cung cấp khả năng truy cập dữ liệu có cấu trúc và bán cấu trúc

- Spark Streaming: Là thành phần hỗ trợ xử lý dữ liệu keo kiểu streaming processing

14 - MLlib (Machine Learning Library): Là framework học máy (Machine learning) phân tán dựa trên cơ chế phân tán và tính toán trên bộ nhớ của Spark

- GraphX: Là framework dành cho xử lý đồ thị phân tán

- SparkR: Là thành phần cho phép sử dụng Spark bằng cú pháp của ngôn ngữ R

R là ngôn ngữ dành cho việc thao tác, tính toán trên dữ liệu và hiển thị kết quả ở dạng đồ họa Với SparkR, các công việc này sẽđược thực thi một cách song song trên hệ thống máy tính phân tán

Hình 8: Các thành phần của Spark.

Ứ ng d ụ ng c ủ a Spark

Spark được phát triển để là một framework có khả năng hỗ trợ nhiều loại bài toán về xử lý tập dữ liệu lớn trên hệ thống máy tính phân tán như: xử lý dữ liệu dạng batch data, streaming data, các ứng dụng tương tác theo thời gian thực, v.v… Trong luận văn này, Spark được đề cập chủ yếu về khía cạnh xử lý streaming data

Spark không phải là framework xử lý dữ liệu theo kiểu streaming processing thực thụ, mà là xử lý dữ liệu theo kiểu lai streaming processing (hybrid-streaming processing), tức là theo kiểu lai giữa batch processing với streaming processing Trong khi streaming processing thực thụ sẽ xử lý mỗi gói dữ liệu ngay khi nó đến, thì Spark không xử lý ngay mà chờ một khoảng thời gian ngắn để dữ liệu đến và lưu trữ liên tục với nhau tạo thành một lô dữ liệu; khi đó, Spark mới lấy lô dữ liệu đó và nạp vào bộ nhớ để xử lý Điều này tận dụng được các ưu điểm của batch data mà vẫn đảm bảo kết

15 quả xử lý dữ liệu được đưa ra nhanh chóng cho người dùng Khoảng thời gian chờ này của Spark sẽ được thiết lập bởi người sử dụng tùy theo yêu cầu hay ngữ cảnh hoạt động thực tế của ứng dụng

Do đó, Spark được ứng dụng trong nhiều lĩnh vực của đời sống như: tài chính, thương mại điện tử, y tế, giải trí đa phương tiện, du lịch, v.v…

Trong lĩnh vực khoa học máy tính, Spark được ứng dụng cho các nghiên cứu như: Học máy (Machine learning), Phân tích tương tác (Interactive analysis), Tính toán mờ(Fuzzy computing), v.v…

Gi ớ i thi ệ u v ề Spark Streaming

Do luận văn này sẽ xây dựng một ứng dụng bằng Spark sử dụng thư viện của thành phần Spark Streaming nên phần này sẽ giới thiệu về Spark Streaming

Quá trình tiếp nhận dữ liệu và đưa ra kết quả của Spark Streaming:

Spark Streaming bao gồm các API để ứng dụng gọi nhằm thực hiện xử lý dữ liệu từ các nguồn thu nhận dữ liệu như Kafka, Flume, Twitter, ZeroMQ, Kinesis, TCP socket

Các API này là các hàm như map, reduce, join, window, v.v Chúng thực hiện các giải thuật tính toán rồi cho ra kết quả là dữ liệu đã qua xử lý Sau đó, các dữ liệu này sẽđược lưu xuống các hệ thống lưu trữ

Quá trình này được minh họa như Hình 9 [7] dưới đây:

Hình 9: Quá trình tiếp nhận dữ liệu và đưa ra kết quả của Spark Streaming

16 Sự thực thi bên trong của Spark Streaming:

Spark Streaming nhận luồng dữ liệu (data stream) đầu vào và chia nó thành các lô dữ liệu (data batch) Sau đó, đơn vị xử lý (Spark engine) sẽ xử lý các lô dữ liệu này và tạo ra kết quả cũng là một lô dữ liệu

Hình 10 [7] dưới đây minh họa sự thực thi bên trong của Spark Streaming

Hình 10: Sự thực thi bên trong của Spark Streaming

Giải thích: Sau khi nhận luồng dữ liệu đầu vào từ các nguồn như Kafka, Flume, v.v…, Spark sẽ tổ chức nó thành DStream (Discretized Stream) Thực chất thì DStream là một luồng dữ liệu liên tục mà mỗi phần tử trong đó được gọi là RDD (Resilient Distributed Dataset) Mỗi RDD cũng gồm có các phần tử dữ liệu Mỗi RDD sẽ được coi như là một DStream đã chuyển đổi (Transformed DStream)

Mối quan hệ này giữa DStream và RDD có thểđược minh họa như Hình 11 dưới đây:

Các phần tử dữ liệu trong mỗi RDD DStream

Hình 11: Mối quan hệ chứa đựng giữa DStream và RDD

CH ƯƠ NG 3: M Ộ T S Ố CÔNG TRÌNH LIÊN

Chương này trình bày một số dự án và sản phẩm liên quan đến giám sát và phân tích chất lượng nước ăn uống đã và đang triển khai trên Thế giới và Việt Nam.

Trên Th ế gi ớ i

Trên Thế giới, hiện tại, nhiều quốc gia tiên tiến đã có một số tổ chức thực hiện các đề tài nghiên cứu về chất lượng nước cung cấp cho tiêu dùng Trong số đó, tôi thu thập được các thông tin rõ ràng nhất là từ tổ chức EPA (Environmental Protection Agency) của Hoa Kỳ Tổ chức này thực hiện việc nghiên cứu và triển khai hệ thống quan trắc và phân tích [25] có nhiều mục tiêu tương tự nhưđề tài này Và hệ thống của họ cũng có khả năng triển khai đến từng hộ gia đình Tuy nhiên, mục tiêu nghiên cứu và các tiêu chuẩn đánh giá của họ là theo quy chuẩn của Hoa Kỳ mà không phải là bộ thông số phù hợp với điều kiện của Việt Nam Hơn nữa, hệ thống mà họ triển khai có giá thành khá cao, không mang tính chất đại trà, gần gũi với đại đa số người dân.

Ở Vi ệ t Nam

Ở Việt Nam, hiện đã có một số dự án đã và đang được triển khai trong thực tế như:

- Dự án “Xây dựng hệ thống mạng cảm biến, kho dữ liệu đám mây phục vụ giám sát môi trường, cảnh báo và giảm nhẹ thiên tai” [19] được thực hiện từ năm 2012 Đây là dự án được thực hiện bởi sự hợp tác giữa Bộ Thông tin và Truyền thông Việt Nam với Bộ Nội vụ và Truyền thông Nhật Bản, Viện công nghiệp phần mềm và nội dung số Việt Nam (NISCI) cùng tập đoàn Panasonic Dự án này thực hiện việc lắp đặt một số trạm quan trắc ở một số thành phố lớn của Việt Nam Các trạm quan trắc này sẽ lấy số liệu của một vài thông số để các chuyên gia phân tích và đưa ra các cảnh báo về môi trường nước sông hồ Có rất ít trong số các thông số này phục vụ cho việc đánh giá mức độảnh hưởng đến sức khỏe trong nước ăn uống

- Các bộ sản phẩm quan trắc và giám sát chất lượng nước được thực hiện bởi các công ty công nghệ ở Việt Nam cho các đối tác trong nước Các bộ sản phẩm này thường bao gồm các thiết bị đo đạc khá lớn và đắt tiền kèm với

18 hệ thống server lưu trữ dữ liệu và các phần mềm hỗ thực hiện việc trực quan hóa dữ liệu để hỗ trợ các chuyên gia trong việc giám sát chất lượng nước Một số bộ sản phẩm điển hình:

+ Công ty Dynamic Solutions International triển khai dự án "Đánh giá chất lượng nước cấp Hà Nội" [20]: Đo đạc mức độ của Asen và các thông số khác gồm Nitrat, Mangan, Sắt, Độ cứng, Clo dư , Coliform tổng số, E-coli

Thực hiện đo đạc tại các hộ gia đình với tần suất đo là 3 tháng/lần + Ngoài ra còn có các bộ sản phẩm thực hiện việc quan trắc và giám sát chất lượng nước mặt và nước ngầm của các công ty công nghệ khác như: Hệ thống Quan trắc nước mặt tự động DQA800 của công ty AiPT [21], Hệ thống Quan trắc môi trường/quan trắc nước mặt của công ty Hach Việt Nam [22], Trạm quan trắc nước mặt [23] và Trạm quan trắc nước ngầm [24] của tông ty công nghệ Việt An

Nhìn chung, ở Việt Nam hiện tại vẫn chưa có công trình thực sự dành cho riêng cho việc giám sát và phân tích chất lượng nước ăn uống mà có thể triển khai đến từng hộ gia đình với việc ghi nhận lượng dữ liệu lớn một cách liên tục để phục vụ tốt cho việc cảnh báo tức thời và đưa ra các dự báo về chất lượng nước ăn uống cho người dân

CH ƯƠ NG 4: PH ƯƠ NG PHÁP GI Ả I QUY Ế T

Chương này trình bày về các khía cạnh của hệ thống giám sát chất lượng nước ăn uống bao gồm:

- Bộ các thông số chất lượng cần giám sát

- Đồ hình của mạng lưới cấp nước tham khảo

- Phương pháp xây dựng một ứng dụng bằng framework Spark để giám sát theo thời gian thực đối với các thông sốđã đề xuất

- Một số đề xuất dành cho bài toán dự báo chất lượng nước ăn uống trong mạng lưới.

B ộ thông s ố ch ấ t l ượ ng c ầ n giám sát

Với mục tiêu như đã trình bày ở chương 1, đề tài này sẽ đề xuất một bộ các thông số chất lượng nước ăn uống thỏa mãn các tiêu chí như sau:

- Các thông số phải được chọn lọc từ tài liệu QCVN 01:2009/BYT

- Các thông số này phải có khả năng được đo đạc bằng các cảm biến điện tử (sensor) tương ứng đang có trên thị trường trong hoặc ngoài nước mà giá thành chấp nhận được, kích thước của cảm biến phải khá nhỏ và kết quảđo đạc có sai số thấp Tiêu chí này là nhằm cung cấp bộ thông số cho các nhóm xây dựng thiết bịđo nhằm hiện thực hóa đề tài này trong tương lai gần

- Tổng hợp tất cả các thông số trong bộ này vừa đủ để có được sự đảm bảo tối thiểu về chất lượng nước ăn uống trên nguồn nước được cung cấp bởi nhà máy cấp nước Tức là các thông số không có mặt trong bộ này là chắc chắn đã được đảm bảo chất lượng qua quá trình xử lý nước của nhà máy trước khi đưa nước hòa vào mạng lưới và rất khó xuất hiện các bất thường đối với các thông sốđó

Bên cạnh đó, khi tham khảo ý kiến của chuyên gia ngành Môi trường học là PGS.TS

Nguyễn Phước Dân thuộc trường Đại học Bách Khoa Tp Hồ Chí Minh, và nhận được sự trả lời từ các câu hỏi khảo sát đối với một số chuyên viên thuộc công ty cấp nước Sawaco đang đóng trên địa bàn thành phố Hồ Chí Minh thì bộ thông số này được bổ sung thêm một thông số nữa là Áp lực nước

20 Bộ thông sốđược đề xuất như trong bảng 1 dưới đây:

Bảng 1: Bộ thông số chất lượng nước ăn uống được đề xuất

STT Tên chỉ tiêu Đơn vị Giới hạn tối đa cho phép Cách thức đo

Chỉ tiêu cảm quan và thành phần vô cơ

4 Hàm lượng Mangan tổng số mg/l 0.3 Sensor

Hóa chất khử trùng và sản phẩm phụ

6 Coliform tổng số Vi khuẩn/

8 Áp lực nước bar Sensor

Trong bộ thông số này, Áp lực nước có giá trị yêu cầu tối thiểu thay đổi tùy vào mức độ của đường ống trong mạng lưới cấp nước của nhà máy nước Hơn nữa, áp lực nước trên mỗi tuyến ống cũng có giá trị yêu cầu tối thiểu thay đổi tùy theo thời gian trong ngày Ví dụ: trong khoảng thời gian từ 10:00 tối hôm trước đến 5:00 sáng hôm sau thì giá trị yêu cầu tối thiểu giảm đi một nửa do ít có nhu cầu tiêu thụ của người dân nên nhà máy chủ động giảm áp lực xuống Do đó, giá trị tối thiểu đó không được ghi cụ thể trong bảng trên

21 Nếu nhóm nghiên cứu nào đó muốn thực hiện việc xây dựng thiết bị đo cho bộ thông số này, việc cần thiết nhất chính là lựa chọn các sensor phù hợp đối với tiêu chí của dự án Các đặc điểm cần được cân nhắc khi lựa chọn mỗi sensor gồm có:

- Độ phân giải của giá trị - Độ chính xác của kết quảđo

- Thời gian đáp ứng cho mỗi lần đo

- Khoảng nhiệt độ hoạt động được của sensor

- Khoảng áp suất hoạt động được của sensor

Ví dụ về một số sensor đang có mặt trên thị trường hiện nay:

- Sensor đo Mangan tổng số:

- Sensor đo Coliform tổng số:

- Sensor đo Áp lực nước:

Bảng 2 dưới đây là một số nhà sản xuất sensor và thiết bị đo dành cho các thông số chất lượng nước đáng tin cậy hiện nay:

Bảng 2: Danh sách một số nhà sản xuất sensor và thiết bị đo chất lượng nước

Tên nhà sản xuất Địa chỉ trang web

ADS Environmental Service adsenv.com

Analytical Sensors & Instruments Ltd asi-sensors.com

DKK-TOA Corporation toadkk.co.jp/english

Environment SA environnement-sa.com

Global Water Instrumentation, Inc globalw.com

Omega Engineering, Inc omega.com

Severn Trent Services severntrent.com

Stevens Water Monitoring Systems, Inc stevenswater.com

YSI (A trademark of Xylem Inc.) ysi.com

Đồ hình c ủ a m ạ ng l ướ i c ấ p n ướ c

Đồ hình tham kh ả o trong th ự c t ế

Do đề tài này có hy vọng sẽ được triển khai trong thực tế nên đề tài cần phải tham khảo đồ hình (topology) của mạng lưới cung cấp nước đang hoạt động của một công ty cấp nước đang đóng trên địa bàn thành phố Từđồ hình thực tế này, đề tài sẽđưa ra những đề xuất nhằm triển khai được hệ thống giám sát và phân tích chất lượng nước trong mạng lưới cung cấp Đồng thời, đồ hình này cũng là cơ sởđể xem xét về một đồ hình tổng quát cho các mạng lưới cấp nước khác trên thực tế

Hình 12 dưới đây là đồ hình cấp nước của công ty Sawaco đang đóng trên địa bàn thành phố Hồ Chí Minh Tôi xin được gọi đồ hình này là “đồ hình cấp nước tham khảo” cho các diễn đạt trong các nội dung tiếp theo

Nhà máy c ấ p n ướ c Đồ ng h ồ đ o áp l ự c n ướ c

Hình 12: Đồ hình cấp nước tham khảo Đồ hình này được phác họa lại như Hình 12 dựa trên [26] và [27] cùng với sự giải thích của các chuyên viên thuộc công ty Sawaco

24 Đồ hình cấp nước tham khảo có các yếu tố như sau:

- Nhà máy cấp nước: Là điểm cung cấp nước cho toàn bộ các điểm tiêu thụ trên mạng lưới cấp nước Nhà máy cấp nước sẽ nhận nước từ các nguồn bên ngoài rồi đưa vào hệ thống xử lý để lọc thành nước thỏa mãn toàn bộ các thông số chất lượng được chỉ định trong tài liệu qui chuẩn Sau đó nhà máy nước mới đẩy nước vào đường ống cấp nước chính để nước được hòa vào mạng lưới rồi truyền đến các điểm tiêu thụ Xét về mặt toán học, nó có vai trò như một nút gốc trong đồ thị dạng cây

- Hộ dân và chung cư: Là các điểm tiêu thụ trong mạng lưới cấp nước Xét về mặt toán học, chúng có vai trò như các nút lá trong đồ thị dạng cây

- Tuyến ống: Truyền tải nước từ nhà máy nước đến các điểm tiêu thụ băng qua các điểm rẽ đường ống, các trạm đo áp lực nước và một số rất ít trạm tăng áp lực nước Trên toàn tuyến ống, các đoạn khác nhau sẽ được lắp đặt ống nước có đường kính khác nhau Đường kính được thể hiện bằng ghi chú dạng “Dxxxxmm”; trong đó, “xxxxmm” là đường kính tính bằng đơn vị milimet Ví dụ: D2500mm tức là đường kính 2500 milimet Xét về mặt toán học, chúng có vai trò như các cạnh trong đồ thị có trọng số dạng cây

- Đồng hồđo áp lực nước: Được lắp đặt trên các đoạn đường ống để giám sát áp lực nước, giúp nhà máy nước có các biện pháp xử lý hoặc chẩn đoán khi xảy ra sự cố suy giảm áp lực nước Mỗi đoạn đường ống có thể lắp đặt một hoặc vài đồng hồđo áp lực nước tùy vào nhu cầu giám sát của nhà máy.

M ộ t s ố đề xu ấ t trên đồ hình c ấ p n ướ c

Khi triển khai hệ thống giám sát và phân tích chất lượng nước vào đồ hình trên thực tế, đề tài có một sốđề xuất như sau:

- Các điểm tiêu thụ phải được ưu tiên lắp đặt thiết bị đo, vì đây là nơi mà nước được người dân sử dụng trực tiếp Đây cũng là nơi cách xa nhà máy nhất trong đồ hình nên khả năng xảy ra các bất thường về chất lượng là cao nhất

- Ở những điểm khác nhau trong đồ hình, thiết bị đo không nhất thiết phải luôn luôn bao gồm tất cả các cảm biến đểđo được tất cả các thông số trong bộ thông sốđề xuất nhằm giảm chi phí xây dựng thiết bịđo Điều này là bởi vì các tuyến ống gần nhà máy, hoặc các tuyến ống mới lắp đặt thì khả năng phát sinh các bất thường sẽ thấp hơn các tuyến ống khác

25 - Ở những điểm khác nhau trong đồ hình, và đối với các thông số khác nhau trong bộ thông số, ta có thể ấn định tần suất thực hiện đo khác nhau giúp giảm lượng dữ liệu trên tổng thể đồ hình truyền về máy chủ (server) đang chạy hệ thống giám sát và phân tích chất lượng nước Điều này là bởi vì đối với các tuyến ống khác nhau về mặt chất liệu hoặc thời gian sử dụng, và các thông số khác nhau sẽ có mức độ thường xuyên phát sinh bất thường khác nhau

- Đối với bài toán phân tích để dự báo chất lượng nước trong đồ hình, chúng ta cần chú ý về thứ tự của các điểm đặt thiết bị đo Trong đồ hình, nước được lưu chuyển theo một chiều từ nhà máy đi qua các trạm trung gian có cấp độ khác nhau, rồi đi dần về những điểm tiêu thụ Do đó, thứ tự của các cấp độ này sẽ là cơ sở cho bài toán dự báo bất thường mỗi khi có một vị trí nào đó đang phát sinh bất thường

Ví dụ: Nếu có một hộ dân bị cảnh báo không đảm bảo chất lượng đối với thông số nào đó thì ta có thể truy ngược lên trạm trung chuyển phía trên hộ dân này đểđối chiếu Từ kết quảđối chiếu đó, ta có thể dựđoán được chất lượng nước ở các hộ dân nhận nước từ chung một trạm trung chuyển với hộ dân đang bị cảnh báo Đó là phân tích để dự báo khả năng xảy ra bất thường ở những điểm đo lân cận trong mạng lưới

Bên cạnh đó, ta cũng có thể thực hiện phân tích để loại trừđiểm đo bị nghi ngờ là nguồn gốc phát sinh bất thường như sau: Phía trước (tính theo chiều dòng nước chảy) ở những nơi mà đường ống lớn được rẽ thành các đường ống nhỏ hơn, ta nên đặt thiết bị đo để đối chiếu và loại trừ địa điểm có khả năng là nguồn gốc phát sinh bất thường khi một điểm đo phía dưới đó đang bị phát hiện có bất thường

Tóm lại, việc chọn lựa vị trí như vừa được đề xuất ở trên đểđo trong đồ hình giúp tiết kiệm chi phí lắp đặt thiết bị đo trong mạng lưới Hơn nữa, việc kết hợp với thứ tự vị trí đặt thiết bịđo trong đồ hình sẽ giúp chúng ta có cơ sở cho bài toán phân tích để dự báo chất lượng nước trong toàn bộ mạng lưới

T ổ ch ứ c l ư u tr ữ d ữ li ệ u

T ổ ch ứ c thu nh ậ n d ữ li ệ u

- Thiết bị đo được lắp đặt ở rất nhiều điểm trong đồ hình cấp nước Các điểm đo là các hộ dân, chung cư, hoặc các điểm phía trước vị trí rẽ nhánh của đường ống hoặc bất kỳ nơi nào trong đường ống mà cơ quan quản lý chất lượng nước trong mạng lưới mong muốn Các thiết bị đo này sẽ đo giá trị của các thông số theo định kỳ và gửi số liệu đo được về máy chủ được chỉ định

- Trên toàn hệ thống, ta có thể đặt một (hoặc vài) máy chủ có cài đặt ứng dụng thu nhận dữ liệu theo dạng streaming và ứng dụng phân tích để xử lý dữ liệu theo streaming.

Đị nh d ạ ng d ữ li ệ u

Đề tài này sẽ hiện thực ứng dụng xử lý dữ liệu dạng streaming data được cung cấp từ ứng dụng thu nhận dữ liệu trên cùng một máy chủ Ứng dụng này sẽ sử dụng định dạng dữ liệu là text với cú pháp thể hiện là CSV, trong đó:

- Mỗi hàng là một record (bản ghi) tương ứng với một mẫu tin được gửi từ một thiết bị đo trong đồ hình cấp nước

- Trên mỗi hàng, các thông sốđược ngăn cách nhau bằng dấu phẩy

Ví dụ: Một đoạn dữ liệu nhận được từứng dụng thu nhận dữ liệu như sau:

1010253950,15,2,7.9,0.3,0.5,0,0,90 1010253951,15,2,7.9,0.3,0.5,0,0,90 1010253952,15,2,7.9,0.3,0.5,0,0,90 1010253953,15,2,7.9,0.3,0.5,0,0,90 1010253954,15,2,7.9,0.3,0.5,0,0,90 Ý nghĩa các thông số trên mỗi hàng:

- Thứ tự các thông số trên mỗi hàng là:

Vị_trí, Màu, Độ_đục, pH, Mn, Clo_dư, Coliform_tổng_số, E_Coli, Áp_lực_nước

27 - Về thông số Vị_trí, đây là mã số quy định vị trí của điểm đặt thiết bị đo Mã số này nên được cấu tạo theo định dạng phân cấp tuyến đường ống để phục vụ cho bài toán phân tích (để thực hiện chức năng dự báo) Bài toán phân tích sẽ sử dụng các thông tin trong thông số Vị_trí như sau:

Mã số là một dãy chữ số hệ 10 (Decimal) hoặc hệ 16 (Hexadecimal) gồm các thành phần:

+ Chữ số đầu tiên: mã số của nhà máy nước Nếu đồ hình phát triển rộng hơn với việc có thêm một vài nhà máy khác cùng đấu nối vào mạng lưới cấp nước thì chữ số này sẽ có tác dụng phân biệt được nhà máy nào

+ Hai chữ số tiếp theo: mã số của trạm phân phối mức hai, sau nhà máy cấp nước

+ Hai chữ số tiếp theo: mã số của trạm phân phối mức ba, sau mức hai Có thểđưa thêm các chữ số dạng này nếu đồ hình có nhiều mức phân phối hơn

+ Bốn chữ số cuối cùng: mã số của điểm tiêu thụ (hộ dân hoặc chung cư) sẽ cho biết một hộ dân là thuộc sự phân phối của một trạm thứ cấp nào đó

Ta gọi mỗi vị trí đặt thiết bị đo là một nút trong đồ thị Đối với bài toán phân tích, chúng ta sẽ sử dụng ý nghĩa của các dãy chữ số trong thông số Vị_trí để lần tìm ra nút cha của nút đang bị cảnh báo bất thường nhằm đối chiếu xem có sự hợp lý về giá trị của thông sốđang bị bất thường ở nút con hay không Tiếp đó, ta có thể dự báo xem rằng nút cha có phải là nguồn phát sinh bất thường đối với thông sốđó ở nút con hay không Hơn nữa, ta có thể dựa theo thông số này để suy ra vị trí của các nút con khác cùng cấp và dự báo khả năng bị phát sinh bất thường đối với những nút con đó

- Về thông số Áp_lực_nước: Như đã nói ở phần trước, giá trị đo được của thông số này có đạt yêu cầu hay không thì còn phụ thuộc vào mức độđường ống tại vị trí đo và thời điểm đo đạc Thêm vào đó, áp lực ở các mức độ đường ống khác nhau còn được phép sai lệch một khoảng cho phép Do đó, cần phải có một bảng thông tin chi tiết về giá trị yêu cầu tối thiểu và độ sai lệch cho phép đối với thông số này để đối chiếu và so sánh trong xử lý của ứng dụng

Hiện tại, vì một số lý do khách quan nên tôi vẫn chưa được phía công ty cấp nước cung cấp tài liệu quy định về áp lực nước để tham khảo nên trong phần hiện thực của ứng dụng, tôi chỉ sử dụng đơn vị đo là phần trăm (%), dụng ý là nếu áp lực nước đo được là X% so với yêu cầu (ví dụ như 90% chẳng hạn) thì điểm đo đó được coi như thỏa mãn áp lực nước

28 - Các thông số còn lại: Ứng dụng sẽ so sánh giá trị nhận được với giá trị tối đa cho phép đối với từng thông số nhưđã được đề cập trong bảng 1.

Thi ế t k ế ứ ng d ụ ng

S ơ đồ kh ố i c ủ a ứ ng d ụ ng

Hình 13 dưới đây là sơ khối của ứng dụng:

Streaming data source Streaming Context

Hình 13: Sơđồ khối của ứng dụng

Giải thích: Ứng dụng gồm các khối chức năng:

- Spark Context: Chỉ định các thiết lập để sử dụng Spark, ví dụ như tên ứng dụng và master node liên kết

29 - Streaming Context: Chỉ định ngữ cảnh để lấy streaming data, ví dụ như khoảng thời gian định kỳ lấy data từ nguồn thu nhận dữ liệu Context này sẽ định kỳ gửi yêu cầu đến nguồn thu nhận dữ liệu để nhận được các DStream rồi chuyển đổi thành danh sách các RDD

- RDD Checker: Hàm thực hiện so sánh các thông số của từng bản ghi và đưa ra cảnh báo tức thời nếu phát hiện bất kỳ thông số nào vượt ra khỏi miền giá trị cho phép Hàm này nhận danh sách các RDD từ Streaming Context làm đầu vào (input) cho xử lý.

L ượ c đồ tu ầ n t ự

Lược đồ tuần tự thể hiện các bước hoạt động chính của ứng dụng, được minh họa trong Hình 14 dưới đây:

Hình 14: Lược đồ tuần tự của ứng dụng

30 Giải thích: Theo lược đồ tuần tự trong Hình 14, ứng dụng có các bước thực hiện chính như sau:

3: Kết nối tới ứng dụng thu nhận streaming data và yêu cầu lấy dữ liệu

4: Lượng streaming data lấy được sẽ được xem như là một DStream Chuyển đổi DStream này thành danh sách các RDD

5: Truyền mỗi RDD này vào hàm kiểm tra RDD Mỗi RDD là giá trị của một thông số của bản ghi hiện hành Nếu RDD nào nằm ngoài miền giá trị cho phép thì cảnh báo ra màn hình console.

L ư u đồ thu ậ t toán

Do Spark đã hỗ trợ các xử lý liên quan đến việc nhận dữ liệu và tổ chức dữ liệu trong bộ nhớ sao cho có thể thực thi song song trên đa nhân của bộ xử lý nên ứng dụng cần phải chọn lựa các bước để thực hiện như trong lược đồ tuần tự bằng các hàm phù hợp của module Spark Streaming Ứng dụng gồm có hai hàm là: hàm thực thi thân chương trình chính và hàm kiểm tra giá trị của từng thông số

Lưu đồ thuật toán của thân chương trình chính:

Lưu đồ thuật toán của thân chương trình chính được minh họa trong Hình 15

Lưu đồ này gồm các bước xử lý như sau:

- Bước 1: Tạo ra một Spark Context bằng hàm SparkContext(…) để khai báo tên của ứng dụng và khởi tạo các thiết lập mặc định để chạy ứng dụng Spark

- Bước 2: Tạo ra Streaming Context hoạt động trên Spark Context bằng hàm StreamingContext(…) Streaming Context sẽ khởi tạo các thiết lập để xử lý streaming data và ấn định khoảng thời gian cho mỗi chu kỳ thực hiện

- Bước 3: Kết nối với nguồn streaming data bằng hàm socketTextStream(…) để lấy streaming data dạng text đang được thu nhận ở socket Lượng data lấy được sẽđược xem như là một DStream

- Bước 4: Chuyển đổi DStream thành danh sách các RDD bằng hàm flatMap(…) với ký tự phân tách là dấu phẩy (,) do streaming data được lưu

31 ở dạng CSV Với việc chuyển đổi này, mỗi RDD là giá trị của một thông số

- Bước 5: Lặp qua từng RDD để gọi hàm kiểm tra giá trị của chúng

- Bước 6: Sau một khoảng thời gian định kỳ, quay trở lại bước 3 để tiếp tục lấy streaming data và xử lý

Hình 15: Lưu đồ thuật toán của ứng dụng

32 Lưu đồ thuật toán của hàm thực hiện việc kiểm tra RDD:

Sau khi có được danh sách các RDD, ứng dụng cần thực thi một hàm để kiểm tra giá trị của mỗi RDD Lưu đồ thuật toán của hàm kiểm tra RDD được minh họa như Hình 16 dưới đây.

Hình 16: Lưu đồ thuật toán của hàm kiểm tra RDD

Hàm kiểm tra RDD có một biến toàn cục để giữ index của thông số trong mỗi record được gọi tên là Current Index Biến này được khởi tạo là 0, tức là index của thông số đầu tiên trong mỗi record, đó chính là thông số Vị_trí

Hàm kiểm tra RDD có gồm các bước xử lý như sau:

- Bước 1: Kiểm tra giá trị của biến Current Index:

+ Nếu bằng 0 thì RDD hiện tại là giá trị của thông số Vị_trí, lưu giá trị này lại và kết thúc hàm

+ Nếu khác 0 thì RDD hiện tại là giá trị của một thông số chất lượng nào đó, chuyển đổi RDD này thành giá trị số dạng dấu chấm động

- Bước 2: Tùy vào giá trị của biến Current Index để biết giá trị hiện tại là của thông số chất lượng nào để so sánh với miền giá trị của thông sốđó:

+ Nếu Current Index là Index của pH thì so sánh giá trị hiện tại xem có nằm trong miền giá trị của pH hay không

+ Nếu Current Index là Index của Mn thì so sánh giá trị hiện tại xem có nằm trong miền giá trị của Mn hay không

+ Nếu Current Index là Index của Áp lực nước thì so sánh giá trị hiện tại xem có nhỏ hơn giá trị tối thiểu của Áp lực nước hay không

+ Nếu Current Index là Index của một trong số năm thông số còn lại thì so sánh giá trị hiện tại xem có lớn hơn giá trị tối đa của thông số tương ứng hay không

Nếu có sự vượt ra khỏi miền giá trị an toàn thì xuất cảnh báo ra màn hình gồm có mã Vị trí và tên của thông số bị vượt ra khỏi miền giá trị

- Bước 3: Tăng giá trị Current Index lên 1 để biến này chỉ đến thông số tiếp theo trong record hiện hành

Nếu sau khi tăng lên 1, giá trị của Current Index lớn hơn 8 (là số lượng thông số của mỗi record) thì có nghĩa là record hiện hành đã được kiểm tra đủ các thông số nên giá trị của Current Index sẽ được thiết lập về 0 để sử dụng cho record mới tiếp theo

M ụ c tiêu c ủ a ứ ng d ụ ng

Dưới đây là sự tóm tắt chức năng và mục tiêu của ứng dụng trước khi luận văn chuyển qua chương 5, là chương trình bày về sự triển khai thử nghiệm ứng dụng và kết quả thu được

Chức năng của ứng dụng:

- Chức năng của ứng dụng: Phân tích streaming data nhận được để đưa ra cảnh báo tức thời đối với những thông số nào thuộc những điểm đo nào không còn đảm bảo chất lượng

- Đối với bài toán phân tích để dự báo chất lượng trong mạng lưới: Ứng dụng đã thực hiện chuyển đổi dữ liệu nhận được ở dạng bán cấu trúc thành dữ liệu có cấu trúc nhằm phục vụ cho việc phát triển bài toán phân tích để dự báo chất lượng nước sau này

Kết quả mong muốn của ứng dụng:

Kết quả mong muốn của ứng dụng: Định kỳ phân tích một lượng dữ liệu được thể hiện qua các con số như sau:

- Số lượng bản ghi: hơn 8 triệu Đây là số lượng điểm đo phù hợp với mạng lưới cấp nước của những thành phố cỡ lớn ở Việt Nam

- Dung lượng dữ liệu: khoảng 300 MB

- Thời gian xử lý cho phép: 5 phút/chu kỳ Các bước hoạt động của ứng dụng:

Khi hoạt động, trong mỗi chu kỳ tính toán, ứng dụng sẽ trải qua các bước sau:

- Lấy streaming data: Ứng dụng yêu cầu streaming data từ nguồn thu nhận dữ liệu

- Chuyển đổi dữ liệu từ dạng thô thành dữ liệu có cấu trúc

- Phân tích nhanh từng bản ghi trong dữ liệu Nếu có bất kỳ thông số nào không đảm bảo chất lượng, ứng dụng sẽ cảnh báo ra màn hình mã vị trí của điểm đo cùng với các thông số không đảm bảo chất lượng của vị trí đó

Thời lượng cho mỗi chu kỳ tính toán được thiết lập bởi người sử dụng ứng dụng sao cho phù hợp với nhu cầu giám sát trong thực tế Ví dụ : 5 phút

Ngoài ra, framework Spark cũng xây dựng một trang web cục bộ để cung cấp các thông tin về quá trình thực thi của ứng dụng, ví dụ như thời lượng xử lý thực sự trên dữ liệu, số lượng tổng cộng các bản ghi được xử lý, v.v… Địa chỉ của trang web cục bộ này là: http://localhost:4040

CH ƯƠ NG 5: TH Ử NGHI Ệ M

Chương này trình bày về kết quả chạy thử nghiệm ứng dụng giám sát chất lượng nước ăn uống nhưđã được trình bày về phần thiết kế và mục tiêu ở chương trước.

Môi tr ườ ng hi ệ n th ự c và cách s ử d ụ ng

Môi tr ườ ng hi ệ n th ự c

Ứng dụng được hiện thực trên máy tính cá nhân có cấu hình và môi trường cài đặt như sau:

+ Spark: Version: 2.1.0, Mode hoạt động với Hadoop: Standalone

- Ngôn ngữ lập trình: Python.

Các b ướ c cài đặ t framework

Trên thực tế, việc cài đặt các framework nhưđược liệt kê ở trên thường tốn khá nhiều thời gian và công sức do chúng ta dễ đối mặt với sự không tương thích về phiên bản giữa các framework với nhau Do đó, trong phần này, luận văn sẽ trình bày các bước cài đặt đối với các phiên bản nhưđề cập ở phần trên

Các bước cài đặt nên tuân theo trình tự dưới đây:

- Cài đặt: Python JDK Scala Hadoop và Spark

- Sau đó, thêm đường dẫn thư mục (path) của JDK, Scala và Spark vào biến môi trường PATH trong file ~/.bashrc

- Nạp lại nội dung của file ~/.bashrc

$sudo apt-get install python-software-properties

$sudo echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" > /etc/apt/sources.list.d/webupd8team- java.list # Có th ể ph ả i s ử d ụ ng quy ề n root m ớ i ch ạ y # đượ c l ệ nh này

$sudo add-apt-repository ppa:webupd8team/java

$sudo apt-get install oracle-java8-installer

$java –version # Ki ể m tra version c ủ a Java

$sudo wget www.scala-lang.org/files/archive/scala- 2.11.8.deb

$scala –version # Ki ể m tra version c ủ a Scala

#### Cài đặ t SBT cho Scala

$sudo echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list

$sudo apt-key adv keyserver hkp://keyserver.ubuntu.com:80 recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823

$sudo apt-get -y install sbt

37 Cài đặt Hadoop và Spark:

Spark chỉ cần tải về (download) file nén rồi giải nén vào một thư mục nào đó là được Đường dẫn (link) download: https://archive.apache.org/dist/spark/spark- 2.1.0/spark-2.1.0-bin-hadoop2.7.tgz

File nén này đã bao gồm cả Hadoop bên trong nó

Thêm đường dẫn vào biến môi trường PATH trong file ~/.bashrc: export JAVA_HOME=/usr/lib/jvm/java-8-oracle export SCALA_HOME=/usr/share/scala export SPARK_HOME=/home/username/spark-2.1.0-bin-hadoop2.7

# Gi ả s ử n ơ i l ư u th ư m ụ c c ủ a Spark là /home/username/ export PATH=$PATH:$JAVA_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin

Nạp lại nội dung của file ~/.bashrc:

Khởi động Spark Shell xem có thể chạy được chưa:

$spark-shell # N ế u s ử d ụ ng ngôn ng ữ Scala

$pyspark # N ế u s ử d ụ ng ngôn ng ữ Python

Nếu xuất hiện thông báo như bên dưới đây thì tức là Spark đã được cài đặt thành công Sau đó, bấm tổ hợp phím Ctr+D để thoát khỏi Spark Shell

Cách s ử d ụ ng ứ ng d ụ ng

Trên thực tế, các ứng dụng về streaming data được phát triển bằng Spark khi hoạt động sẽ lấy dữ liệu từ một ứng dụng thu nhận dữ liệu nào đó, ví dụ như Apache Kafka Ứng dụng Spark sẽ coi đó như là server thu nhận dữ liệu đầu vào cho mình Ứng dụng được phát triển thử nghiệm của đề tài này được dựđịnh lấy dữ liệu từ một server như vậy Nhưng do có sự hạn chế về mặt thời gian nên đề tài chưa được nghiên cứu cách thức lấy dữ liệu theo cách như vậy Thay vào đó, khi chạy ứng dụng này, chúng ta sẽ sử dụng lệnh Netcat của Linux để giả lập một server thu nhận dữ liệu từ một file text được chỉ định File text được chỉ định đó là một file có cấu trúc CSV lưu trữ các bản ghi nhưđã được trình bày ở mục 4.3.2

Dữ liệu được giả lập từ các kết quả đo đạc theo định kỳ trong thực tế của công ty Sawaco [18]

Các bước chạy ứng dụng:

- Chạy ứng dụng trong môi trường Spark:

Lệnh: spark-submit /Monitoring_DWQ.py localhost 9999 60

+ spark-submit: Nạp file mã nguồn vào môi trường Spark để chạy

+ /Monitoring_DWQ.py: Đường dẫn (path) và tên file mã nguồn của ứng dụng này

+ localhost: hostname của server nơi đang chạy ứng dụng thu nhận dữ liệu Ở đây, ứng dụng được chạy trên máy đơn nên chỉ định hostname là localhost

+ 9999: port mà ứng dụng thu nhận dữ liệu sẽ giao tiếp trên server

+ 60: thời gian (tính bằng giây) mà ứng dụng sẽ định kỳ gửi yêu cầu để lấy dữ liệu tới server

+ -l 9999: Chỉ định Netcat sẽ lắng nghe trên port 9999 Chúng ta có thể chỉ định port khác và cần chú ý là port truyền vào ở dòng lệnh để chạy ứng dụng phải giống với port này

+ < stream300M.log: Chỉđịnh tên file chứa dữ liệu giả lập sẽđược chuyển vào cho Netcat Để tự động chạy Netcat lặp đi lặp lại nhiều lần với nhiều file dữ liệu giả lập khác nhau, ta có thể viết một file script để thực hiện điều này

Ví dụ: Giả sử ta có thư mục “inputstream” chứa các file giả lập có tên được đánh số liên tiếp là “stream1.log”, “stream2.log”, “stream3.log”, v.v… thì ta có thể viết một file script tên “streamserver.sh” như sau:

Value=$((${RANDOM} % $3 + 1)) Filename=$PrefixName$Value$SuffixName echo $Filename nc -l $1 < $Filename sleep $2 done

K ế t qu ả ch ạ y ứ ng d ụ ng

Tôi đã tiến hành chạy ứng dụng này với ba tập dữ liệu streaming data có dung lượng khác nhau là 50 MB, 100 MB và 300 MB

Lý do tôi chọn lựa ba tập dữ liệu có dung lượng như thế này là vì số lượng bản ghi trong các tập dữ liệu này khá phù hợp nếu dữ liệu được tạo ra trong mỗi chu kỳ 5 phút đo một lần từ tất cả các điểm đo được triển khai trong các mạng lưới cấp nước trong thực tế:

+ File 50 MB: có gần 1.400.000 bản ghi, rất phù hợp với mạng lưới cấp nước của các thành phố cỡ trung ở Việt Nam

+ File 100 MB: có gần 2.800.000 bản ghi, rất phù hợp với mạng lưới cấp nước của các thành phố cỡ khá lớn ở Việt Nam

+ File 300 MB: có hơn 8.400.000 bản ghi, rất phù hợp với mạng lưới cấp nước của các thành phố cỡ lớn ở Việt Nam như thành phố Hồ Chí Minh

Ngoài ra, tôi cũng đã thử nghiệm với tập dữ liệu có dung lượng streaming data lớn hơn hẳn, vào khoảng 700 MB (tập dữ liệu này có hơn 20 triệu bản ghi) để xem được khả năng xử lý tối đa của máy tính có cấu hình như đã nêu ở mục 5.1.1 như thế nào

Khi thử nghiệm, tôi nhận thấy là do hạn chế bộ nhớ RAM của máy tính này nên ứng dụng chỉ nạp và xử lý được hơn 11.000.000 bản ghi

Bảng 3 dưới đây là tổng hợp kết quả mà ứng dụng đã chạy với các dung lượng kể trên:

Tổng số lượng bản ghi

Số lượng bản ghi bị warning

50 MB 1.391.501 13 giây 1: Độđục trên giá trị tối đa

- pH dưới giá trị tối thiểu

- Clo_dư trên giá trị tối đa

300 MB 8.464.501 1 phút 19 giây 1: Áp_lực_nước dưới giá trị tối thiểu

700 MB 20.944.130 Nạp và xử lý được 11.130.320 bản ghi

Bảng 3: Kết quả tổng hợp chạy ứng dụng trên bốn tập dữ liệu khác nhau

Các hình 17, 18, 19 dưới đ dụng chạy với tập dữ liệu có dung l

Hình 19: Ứng dụng thông báo b

41 i đây là một số hình chụp lại các màn hình k u có dung lượng 300 MB: ng kê tổng số bản ghi của tập dữ liệu mà ứng d

: Trang web hiển thị diễn tiến thời gian hoạt động củ ng thông báo bản ghi có bất thường trên màn hình console. i các màn hình kết quả khi ứng ng dụng đã chạy ủa ứng dụng ng trên màn hình console

42 Một số nhận xét về kết quả thu được:

- Với các số lượng bản ghi khá phù hợp với các mạng lưới cấp nước ở các thành phố lớn như đã nêu ở trên, ứng dụng có thể xử lý trong khoảng thời gian chỉ dưới hai phút mặc dù cấu hình phần cứng không mạnh nên sẽ rất thích hợp cho việc giám sát mạng lưới cấp nước ở các thành phố lớn của Việt Nam hiện nay nếu giả sử hệ thống giám sát này có thời lượng của chu kỳđo đạc và phát sinh, thu nhận dữ liệu vào khoảng 5 phút một lần

- Đối với dung lượng dữ liệu 700 MB nhưđã nêu ở trên, nếu được thực hiện trên máy tính có cấu hình mạnh hơn, nhất là bộ nhớ RAM thì khả năng chạy thành công là rất cao Do đó, nếu trên thực tế triển khai với các hệ thống máy tính xử lý phân tán thì kết quả sẽ còn tốt hơn nữa.

Chương này sẽ tổng kết những việc đã làm được, những đóng góp của luận văn cũng như sẽ trình bày những hạn chế và hướng phát triển sau này.

Nh ữ ng đ i ề u đ ã đạ t đượ c

- Luận văn đã thực hiện được việc khảo sát thực tế, và kiểm chứng với công ty cấp nước đang đóng trên địa bàn thành phố về những thông số chất lượng nước ăn uống được quy định trong tài liệu QCVN 01:2009/BYT

- Luận văn này đã đề xuất được một bộ thông số dành cho việc kiểm tra chất lượng nước ăn uống ở những nơi tiêu thụ nước hoặc những vị trí trung gian trong mạng lưới cấp nước, là những nơi mà nước ăn uống thường không còn được đảm bảo 100% chất lượng như khi được phát ra từ nhà máy cấp nước

- Luận văn này đã bước đầu xây dựng được một ứng dụng xử lý dữ liệu dạng streaming, có thể hoạt động được trong thực tếđể phục vụ cho việc giám sát chất lượng nước ăn uống theo thời gian thực

- Luận văn đã đề xuất được các ý tưởng cơ bản dành cho việc phân tích dữ liệu Cộng với việc ứng dụng mà luận văn xây dựng đã chuyển đổi được dữ liệu thô thành dữ liệu có cấu trúc, nên luận văn đã đóng góp được những bước đầu cho việc hiện thực bài toán dự báo chất lượng nước trong mạng lưới

- Với bộ thông sốđối với chất lượng nước ăn uống đã đề xuất, luận văn này có thểđóng góp bộ thông sốđó cho các nhóm nghiên cứu khác để xây dựng thiết bị đo với giá thành phải chăng để có thể được ứng dụng đại trà đến nhiều hộ gia đình có nhu cầu.

Nh ữ ng đ i ể m h ạ n ch ế

- Quá trình khảo sát thực tế về hệ thống cấp nước chưa thật sự hoàn thiện vì vẫn chưa thu thập được bảng thông tin quy định chi tiết về thông số áp lực nước Điều này khiến cho việc đưa ra cảnh báo đối với thông số áp lực nước chưa được phù hợp với thực tế

44 - Luận văn chưa nghiên cứu được một framework nổi bật cho việc thu nhận dữ liệu dạng streaming để làm đầu vào cho ứng dụng

- Ứng dụng do luận văn này xây dựng thực hiện được chức năng cảnh báo tức thời đối với các thông số, nhưng chưa có chức năng phân tích sâu để đưa ra dự báo về những bất thường có thể xảy ra trong mạng lưới khi có một điểm đo bị phát hiện có sự bất thường

- Luận văn chỉ mới thực hiện thử nghiệm trên máy đơn mà chưa phải là một hệ thống máy tính phân tán.

H ướ ng phát tri ể n đề tài

- Vì đề tài này hướng đến việc phát triển một hệ thống hoạt động trong thực tế nên hướng phát triển được ưu tiên hàng đầu là: hiện thực khả năng cảnh báo chính xác đối với thông số Áp lực nước theo thông tin quy định của công ty cấp nước

- Phát triển chức năng phân tích offline và đưa ra các dự báo những bất thường có thể xảy ra trong mạng lưới cấp nước

- Hiện thực khả năng hoạt động của ứng dụng trên hệ thống máy tính phân tán

- Phát triển ứng dụng có chức năng phân tích và dự báo những bất thường cho mạng lưới cấp nước có nhiều nhà máy đưa nước vào hòa mạng chéo nhau

- Ứng dụng Máy học (Machine learning) để phát triển chức năng đề xuất những điểm cần đặt thiết bị đo khi đưa vào ứng dụng cho một đồ hình bất kỳ của mạng lưới cấp nước khác

[1] Chuck Lam, 2011, “Hadoop in Action”, Manning Publications Co., United States of America, pp 24 - 59

[2] Holden Karau, Andy Konwinski, Patrick Wendell, Matei Zaharia, 2014, “Learning Spark”, O’Reilly Media, Inc., United States of America, pp 1 - 25, pp 34 - 44, pp

[3] Holden Karau, 2013, “Fast Data Processing with Spark”, Packt Publishing Ltd., pp 31 - 76

[4] Bộ Y tế, 2009, “Quy chuẩn kỹ thuật quốc gia về chất lượng nước ăn uống QCVN 01:2009/BYT”, Bộ Y tế, Hà Nội

[5] Hadoop – Introduction, https://www.tutorialspoint.com/hadoop/hadoop_introduction.htm, 4-2018

[6] Install Spark On Ubuntu- A Beginners Tutorial for Apache Spark, https://data- flair.training/blogs/install-spark-ubuntu, 8-2018

[7] Spark Programming Guide, https://spark.apache.org/docs/1.5.0/programming- guide.html, 8-2018

[8] Spark Streaming Programming Guide, https://spark.apache.org/docs/1.5.0/streaming-programming-guide.html, 10-2018

[9] Hanna HI727, https://hannainst.com/hi727-color-of-water.html, 10-2017

[10] ABB Y075008-344, http://www.abb.com/SmartLinks/Default.aspx?gidB.PARTS.USINYY075008- 344&parts=True, 10-2017

[11] ABB Aztec ATS430, https://new.abb.com/products/measurement- products/analytical/continuous-water-analysis/turbidity-measurement/aztec-ats430- turbidity-and-total-suspended-solids-sensor, 10-2017

[12] ABB AP300, https://new.abb.com/products/measurement- products/analytical/continuous-water-analysis/ph-orp-measurement/ph-orp- sensors/ap300-general-purpose-ph-redox-sensor, 10-2017

46 [13] Hach LCW532, https://de.hach.com/mangan-pipettiertest-0-005-0-5-mg-l- mn/product?id&370285172, 10-2017

[14] ToaDKK FCL-221CA sensor, http://www.analyticon.com/products/portable- handheld-meters/Residual-Chlorine-Meter-Low-range-0-2ppm.php, 10-2017

[15] Colifast Field Kit, http://www.colifast.no/products/colifast-field-kit, 10-2017

[16] ATCC 15597, https://www.atcc.org/products/all/15597.aspx, 10-2017

[17] Bosch BME280, https://www.bosch- sensortec.com/bst/products/all_products/bme280, 10-2017

[18] Trang thông tin Nội kiểm chất lượng nước Sawaco, http://sawaco.com.vn/wps/portal/!ut/p/b1/vY9Rb4IwEID_kXelBdrHClpQilhkCC_GO V1Q0cUs2-

TXrzOLb86neZdccsl3991BDRUVvkcc4QuYQ31YfjSvy_fmeFjuf_raWyicqLw_dhAj 7qMkAZqABw5GrgUqCwRKRsxPEHmiXIxlVBgxpRQlvTdfQjW0pb5wf625AHgjJ P4CVxNXxJrYdEz6wi5UFCoL-DdPEQRmMEe2yLfnt7jbdWbrm1h3w3F-

GiAZOKjDjUmLXafTNUnDFZKwJHrQdHkyivWpwFwk2cuTKfoy0OXXeXNHmO F_C_lEWGE20xPFM4rUe_SHzoOFglphpWEEdfPc9j5XbQ97lLtUOMT1UDBGGP OgVJBGx3YNbb1PPBN182uu5TcPvx1A/dl4/d5/L2dBISEvZ0FBIS9nQSEh, 9-2018

[19] Xây dựng hệ thống mạng cảm biến, kho dữ liệu đám mây phục vụ giám sát môi trường, cảnh báo và giảm nhẹ thiên tai, http://hepa.gov.vn/content/tintuc_chitiet.php?catid57&subcatid=0&newsidS7&la ngid=0, 10-2017

[20] Đánh giá chất lượng nước cấp Hà Nội 2009 – 2016, https://arsenic.ds- intl.biz/phuong-phap-danh-gia, 10-2017

[21] Trạm quan trắc chất lượng nước đa thông số Model DQA800, http://aiptgroup.com/LSI-/Tram-quan-trac-chat-luong-nuoc-da-thong-so-DQA800, 10- 2017

[22] Thông tin chi tiết sản phẩm Quan trắc môi trường/quan trắc nước mặt, http://www.hach.vn/chi-tiet-san-pham-brand.aspx?idA1, 10-2017

[23] Trạm quan trắc chất lượng nước mặt tựđộng, http://www.vietan- enviro.com/tram-quan-trac-chat-luong-nuoc-mat-tu-dong, 9-2018

47 [24] Trạm quan trắc chất lượng nước ngầm tựđộng, http://www.vietan- enviro.com/tram-quan-trac-chat-luong-nuoc-ngam-tu-dong, 9-2018

[25] John S Hall, Jeffrey G Szabo, Srinivas Panguluri, Greg Meiners, 2009,

"Distribution System Water Quality Monitoring: Sensor Technology Evaluation Methodology and Results – A Guide for Sensor Manufacturers and Water Utilities", U.S Environmental Protection Agency, United States of America, pp 1-1 - 3-8

[26] Japan International Cooperation Agency, 2013, “Nghiên cứu cải thiện cấp nước Thành phố Hồ Chí Minh - Báo cáo sau cùng”, Japan International Cooperation Agency, pp 0-1 - 1-4, pp 2-6 - 2-26

[27] Bùi Xuân Khoa, Lý Thành Tài, 2016, “Nghiên cứu các giải pháp phân phối nước đều nhằm cải thiện dịch vụ cấp nước tại thành phố Hồ Chí Minh”, Tạp chí Khoa học Kỹ thuật Thủy lợi và Môi trường, Việt Nam, pp 29 – 35

[28] HDFS Architecture Guide, https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html, 8-2018

[29] Hadoop Ecosystem, https://www.quora.com/What-is-a-Hadoop-ecosystem, 8- 2018

[30] Apache Spark Ecosystem – Complete Spark Components Guide, https://data- flair.training/blogs/apache-spark-ecosystem-components, 8-2018

PH Ụ L Ụ C: B Ả NG ĐỐ I CHI Ế U THU Ậ T NG Ữ

Thuật ngữ tiếng Anh Thuật ngữ tiếng Việt Viết tắt

Batch data Dữ iệu theo lô Batch processing Xử lý dữ iệu theo lô Big data Dữ liệu lớn

Data block Khối dữ liệu

Framework Bộ công cụ phát triển phần mềm

Path Đường dẫn thư mục

Streaming data Dữ liệu theo luồng Streaming processing Xử lý dữ liệu theo luồng

Ngày đăng: 08/09/2024, 23:20

HÌNH ẢNH LIÊN QUAN

Hình 1: Các thành ph ầ n c ủ a Hadoop. - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 1 Các thành ph ầ n c ủ a Hadoop (Trang 18)
Hình 2: Ki ế n trúc Master-Slave c ủ a Hadoop. - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 2 Ki ế n trúc Master-Slave c ủ a Hadoop (Trang 18)
Hình 3: Ki ế n trúc c ủ a HDFS. - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 3 Ki ế n trúc c ủ a HDFS (Trang 19)
Hình 4: S ơ đồ  x ử  lý c ủ a Map-Reduce. - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 4 S ơ đồ x ử lý c ủ a Map-Reduce (Trang 21)
Hình 5: Ví d ụ  “Word Count”. - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 5 Ví d ụ “Word Count” (Trang 22)
Hình 6: Spark trong h ệ  sinh thái Hadoop. - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 6 Spark trong h ệ sinh thái Hadoop (Trang 23)
Hình 7: Ba cách tri ể n khai Spark vào h ệ  th ố ng Hadoop. - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 7 Ba cách tri ể n khai Spark vào h ệ th ố ng Hadoop (Trang 24)
Hình 8: Các thành ph ầ n c ủ a Spark. - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 8 Các thành ph ầ n c ủ a Spark (Trang 25)
Hình 9: Quá trình ti ế p nh ậ n d ữ  li ệ u và  đư a ra k ế t qu ả  c ủ a Spark Streaming - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 9 Quá trình ti ế p nh ậ n d ữ li ệ u và đư a ra k ế t qu ả c ủ a Spark Streaming (Trang 26)
Hình 10: S ự  th ự c thi bên trong c ủ a Spark Streaming. - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 10 S ự th ự c thi bên trong c ủ a Spark Streaming (Trang 27)
Hình 10 [7] d ướ i  đ ây minh h ọ a s ự  th ự c thi bên trong c ủ a Spark Streaming. - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 10 [7] d ướ i đ ây minh h ọ a s ự th ự c thi bên trong c ủ a Spark Streaming (Trang 27)
Hình  12  d ướ i  đ ây  là  đồ   hình  c ấ p  n ướ c  c ủ a  công  ty  Sawaco  đ ang  đ óng  trên  đị a  bàn  thành  ph ố   H ồ   Chí  Minh - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
nh 12 d ướ i đ ây là đồ hình c ấ p n ướ c c ủ a công ty Sawaco đ ang đ óng trên đị a bàn thành ph ố H ồ Chí Minh (Trang 34)
Hình 13 d ướ i  đ ây là s ơ  kh ố i c ủ a  ứ ng d ụ ng: - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 13 d ướ i đ ây là s ơ kh ố i c ủ a ứ ng d ụ ng: (Trang 39)
Hình 14: L ượ c  đồ  tu ầ n t ự  c ủ a  ứ ng d ụ ng. - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 14 L ượ c đồ tu ầ n t ự c ủ a ứ ng d ụ ng (Trang 40)
Hình 15: L ư u  đồ  thu ậ t toán c ủ a  ứ ng d ụ ng. - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 15 L ư u đồ thu ậ t toán c ủ a ứ ng d ụ ng (Trang 42)
Hình 16: L ư u  đồ  thu ậ t toán c ủ a hàm ki ể m tra RDD. - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 16 L ư u đồ thu ậ t toán c ủ a hàm ki ể m tra RDD (Trang 43)
Hình 18: Trang web hi - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 18 Trang web hi (Trang 52)
Hình 17: B ả ng th ố ng kê t - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 17 B ả ng th ố ng kê t (Trang 52)
Hình 19:  Ứ ng d ụ ng thông báo b - Luận văn thạc sĩ Khoa học máy tính: Phát triển hệ thống giám sát và phân tích chất lượng nước ăn uống
Hình 19 Ứ ng d ụ ng thông báo b (Trang 52)