III NỘI DUNG NGHIÊN CỨU VÀ KẾT QUẢ ĐẠT ĐƯỢC
4. Cơ sở khoa học công nghệ về thu thập, quản lý, chia sẻ và khai thác thông tin dữ liệu
4.2 Khả năng ứng dụng của công nghệ BigData
4.2.1 Tổng quan về công nghệ BigData
Big Data là thuật ngữ dùng để chỉ một tập hợp dữ liệu rất lớn và rất phức tạp, tần suất cập nhật lớn đến nỗi những cơng cụ, ứng dụng xử lí dữ liệu truyền thống khơng thể đảm đương được. Tuy nhiên, khối dữ liệu này lại chứa trong mình rất nhiều thơng tin q giá mà nếu trích xuất thành cơng, nó sẽ giúp rất nhiều cho cơng tác quản lý nhà nước, kinh doanh, nghiên cứu khoa học, dự đốn thậm chí theo thời gian thực. Công nghệ BigData ra đời nhằm thu thập, tổ chức, lưu trữ, tìm kiếm, chia sẻ loại dữ liệu trên.
Vào năm 2001, nhà phân tích Doug Laney của hãng META Group đã nói rằng những thách thức và cơ hội nằm trong việc tăng trưởng dữ liệu có thể được mơ tả bằng ba chiều: tăng về lượng (volume), tăng về vận tốc (velocity) và tăng về chủng loại (variety). Giờ đây, Gartner cùng với nhiều công ty và tổ chức khác trong lĩnh vực công nghệ thông tin tiếp tục sử dụng mơ hình “3V” này để định nghĩa nên Big Data. Đến năm 2012, Gartner bổ sung thêm rằng Big Data ngồi ba tính chất trên thì cịn phải “cần đến các
dạng xử lí mới để giúp đỡ việc đưa ra quyết định, khám phá sâu vào sự vật/sự việc và tối ưu hóa các quy trình làm việc”.
Tại Việt nam, số liệu quan trắc mơi trường có thể coi là BigData. Theo báo cáo của Trung tâm quan trắc môi trường (Tổng cục Môi trường), Hệ thống cơ sở dữ liệu quan trắc cũng được trung tâm cập nhật thường xuyên. Tới năm 2015, Trung tâm đã thu được 116.837 mẫu và 982.693 bản ghi. Trung tâm cũng đang lưu giữ số liệu của 12 chương trình quan trắc của Tổng cục Mơi trường; số liệu của 21 trạm quan trắc của Mạng lưới quan trắc môi trường quốc gia (6 thành phần mơi trường: Khơng khí, nước, lao động, chất thải rắn, phóng xạ, đất) và số liệu quan trắc định kỳ của các tỉnh các năm 2012 và 2013,… Khối dữ liệu quan trắc này có cấu trúc rất phức tạp và tăng trưởng theo từng ngày. Việc quản lý và khai thác một cách có hiệu quả là nhu cầu cấp bách.
Công nghệ dùng trong BigData:
Big Data cần đến các kĩ thuật khai thác thơng tin rất đặc biệt do tính chất khổng lồ và phức tạp của nó. Năm 2011, tập đồn phân tích McKinsey đề xuất những cơng nghệ có thể dùng với Big Data bao gồm crowsourcing (tận dụng nguồn lực từ nhiều thiết bị điện toán trên tồn cầu để cùng nhau xử lí dữ liệu), các thuật toán về gen và di truyền, những biện pháp machine learning (ý chỉ các hệ thống có khả năng học hỏi từ dữ liệu, một nhánh của trí tuệ nhân tạo), xử lí ngơn ngữ tự nhiên (giống như Siri hay Google Voice Search, nhưng cao cấp hơn), xử lí tín hiệu, mơ phỏng, phân tích chuỗi thời gian, mơ hình hóa, kết hợp các server mạnh lại với nhau....
Ngoài ra, các cơ sở dữ liệu hỗ trợ xử lí dữ liệu song song, ứng dụng hoạt động dựa trên hoạt động tìm kiếm, file system dạng rời rạc, các hệ thống điện tốn đám mây (bao gồm ứng dụng, nguồn lực tính tốn cũng như khơng gian lưu trữ) và bản thân Internet cũng là những công cụ đắc lực phục vụ cho công tác nghiên cứu và trích xuất thơng tin từ “dữ liệu lớn”. Hiện nay cũng có vài cơ sở dữ liệu theo dạng quan hệ (bảng) có khả năng chứa hàng petabyte dữ liệu, chúng cũng có thể tải, quản lí, sao lưu và tối ưu hóa cách sử dụng Big Data nữa.
Hình ảnh trên cho chúng ta cái nhìn tổng quan tốt về cách các thành phần khác nhau trong kiến trúc big data tương tác lẫn nhau. Trong big data, các nguồn dữ liệu khác nhau là 1 phần của kiến trúc do đó các lớp phân tích dữ liệu (extract), chuyển đổi dữ liệu (transform) và tích hợp dữ liệu (integration) là những lớp quan trọng nhất của kiến trúc. Hầu hết các dữ liệu bao gồm cả dữ liệu có quan hệ và phi quan hệ được lưu trữ theo giải pháp kho dữ liệu (data warehouse). Theo nhu cầu quản lý và sử dụng, các dữ liệu khác nhau được xử lý và chuyển thành báo cáo trực quan với người dùng. Cũng giống như phần mềm, phần cứng cũng là phần quan trọng nhất của kiến trúc big data. Trong kiến trúc big data, hạ tầng phần cứng vô cùng quan trọng và cần phải cài đặt ngăn chặn lỗi xảy ra, đảm bảo các u cầu về an tồn, bảo mật, có tính sẵn sàng cao và đảm bảo toàn vẹn dữ liệu.
4.2.2 Kiến trúc hệ thống BigData
Hầu hết các kiến trúc BigData đã và đang được sử dụng trên thế giới đều tuân theo kiến trúc chuẩn của Hadoop. Vì vậy, trong báo cáo này, sẽ xem xét kiến trúc Hadoop làm nền tảng cơ bản và đầy đủ nhất về các kiến trúc của BigData. Kiến trúc Big Data được xây dựng dựa trên một tập hợp các kỹ năng có thể giúp phát triển một luồng xử lý dữ liệu đáng tin cậy, có khả năng mở rộng và tự động hóa. Để có tập hợp các kỹ năng đó địi hỏi
phải có kiến thức nhất định về từng thành phần của hệ thống, từ việc thiết kế các cụm phần cứng cho đến việc thiết lập cài đặt cho tồn bộ q trình xử lý của Hadoop. Sơ đồ dưới đây mô tả một cách khái quát về một hệ thống như vậy:
Từ sơ đồ trên có thể thấy luồng xử lý chính của hệ thống sẽ tiếp nhận đầu vào là dữ liệu thô và trả về những dữ liệu có giá trị. Xun suốt q trình đó, những kỹ sư Big Data sẽ là người lựa chọn những công nghệ sử dụng bên trong; lựa chọn cách dữ liệu được lưu trữ, được truy xuất từ bên trong, bên ngồi; cũng như lựa chọn cơng cụ để xử lý dữ liệu đó… Như vậy có thể hiểu rằng những kỹ sư Big Data chính là những người thiết kế và triển khai kiến trúc Big Data.
Tiếp theo, chúng ta sẽ đi vào từng phần chính trong hệ thống bên trên để xem vai trò của chúng trong việc xây dựng luồng xử lý dữ liệu là gì.
Xây dựng cụm phần cứng
Xây dựng cụm phần cứng là một vấn đề phức tạp, khi mà việc thiết kế thường được thực hiện sau khi đã xác định được yêu cầu bài toán, mà ban đầu yêu cầu thường chưa rõ ràng. Hầu hết các nhà cung cấp dịch vụ đều có hướng dẫn cụ thể về việc lựa chọn phần cứng sao cho hợp lý nhất. Thông thường, một cụm phần cứng được khuyến nghị sẽ có 2 CPU với 4 đến 8 lõi cho mỗi CPU, ít nhất 48GB cho đến 512GB RAM cho việc lưu trữ dữ liệu tạm thời, ít nhất 6 cho đến 12 ổ cứng để lưu trữ những dữ liệu về thiết lập… Nếu vẫn cịn gặp khó khăn khi xây dựng cụm phần cứng, ta ln có thể thử xây dựng trước hệ thống bằng những dịch vụ trên cloud cho đến khi xác định rõ được u cầu bài tốn.
Sau khi có được cụm phần cứng thỏa mãn yêu cầu, điều tiếp theo cần quyết định là dữ liệu sẽ được truyền tải bằng cách nào. Trên thực tế có hai phương pháp chủ yếu để giải quyết bài toán này là truyền tải hàng loạt (batch ingest) và truyền tải theo event (event ingest). Phương pháp đầu tiên thích hợp cho dữ liệu dạng file và dữ liệu có cấu trúc, cịn phương pháp sau thì thích hợp với các dữ liệu địi hỏi xử lý thời gian thực như các dữ liệu về giao dịch hay logging.
Truyền tải hàng loạt
Khi truyền dữ liệu từ một nguồn dữ liệu có cấu trúc như RDBMS người ta thường lựa chọn Apache Sqoop. Sqoop hỗ trợ người dùng rất tốt trong việc chuyển dữ liệu từ RDBMS sang Hadoop, từ chuyển một phần cho đến chuyển toàn bộ. Sqoop sử dụng framework MapReduce và tích hợp các thành phần của JDBC trong nhiều hệ cơ sở dữ liệu phổ biến.
Có một phương pháp truyền tải hàng loạt khác phức tạp hơn đó là sử dụng file. Có khá nhiều cách để thực hiện được phương pháp đó nhưng hầu như khơng được ai áp dụng. Vấn đề phức tạp nằm ở nơi lưu trữ file cũng như API cần sử dụng để tải file. Trên thực tế người ta thường sử dụng phương pháp truyền tải theo event để tránh được việc phải tải một lượng lớn file như vậy.
Truyền tải theo event
Đối với truyền tải dữ liệu theo event thì Apache Flume là một cơng cụ tốt, nó có các agent hỗ trợ việc truyền dữ liệu dạng event từ một hệ thống sang một hệ thống khác, có thể là HDFS, Spark hay HBase. Flume đã được thử nghiệm kỹ lưỡng trên các cụm phần cứng lớn và tỏ ra rất đáng tin cậy. Phần phức tạp của Flume là việc cấu hình các agent và cấu trúc của Flume một cách đúng đắn.
Lưu trữ
Khi dữ liệu đã được truyền tải tới nơi, vẫn còn một vấn đề cần phải quan tâm trước khi tính tới việc xử lý, đó là lưu trữ dữ liệu. Đây không chỉ là vấn đề lưu trữ dữ liệu ở đâu mà dữ liệu đó cịn phải có định dạng thích hợp, có kích thước thích hợp và cần có quyền truy nhập thích hợp đối với dữ liệu đó.
Định dạng lưu trữ
Định dạng như thế nào là thích hợp phụ thuộc vào việc ứng dụng xử lý hàng loạt hay xử lý thời gian thực. Đối với xử lý hàng loạt, những định dạng file như SequenceFile hay Avro đều phổ biến và thích hợp. Đối với những ứng dụng thời gian thực, có một cái tên mới nổi gần đây là Apache Parquet, nó có cấu trúc tương tự như những cơ sở dữ liệu
dạng bảng nhưng cho phép truy xuất và xử lý những tập dữ liệu kích thước lớn một cách rất hiệu quả.
Ngồi ra cũng cần quan tâm đến việc dữ liệu sẽ được xử lý như thế nào sau một khoảng thời gian nào đó. Nên có một cơ chế để có thể lưu trữ những dữ liệu cũ vào một khu vực khác hoặc với một định dạng khác ít tốn bộ nhớ hơn, nhằm tránh việc lãng phí tài nguyên hệ thống.
Phân vùng dữ liệu
Câu hỏi tiếp theo là những dữ liệu đó sẽ được phân vùng như thế nào và với kích thước ra sao? Hadoop hỗ trợ rất tốt việc quản lý một số lượng nhỏ các file có dung lượng lớn. Chính vì vậy, việc thiết kế ra một hệ thống mà tạo ra nhiều dữ liệu bé trong HDFS sẽ chỉ làm cho tốc độ hoạt động của NameNode trở nên chậm chạp. Tất nhiên, đây vẫn là một hướng đi có thể sử dụng được nhưng sẽ địi hỏi phải thêm một bước trung gian có nhiệm vụ ghép các dữ liệu có kích thước nhỏ lại với nhau.
Trong HBase, quá trình phân vùng dữ liệu được thực hiện một cách ngầm định bằng việc chia dữ liệu vào những hàng liền kề nhau trong bảng và sắp xếp chúng theo khóa đã định trước. Cịn đối với HDFS thì việc phân vùng phải được tính tốn trước, bởi vậy bạn sẽ cần phân tích cấu trúc của một mẫu dữ liệu để quyết định xem phân vùng thế nào là hợp lý nhất. Kinh nghiệm chỉ ra rằng tốt nhất nên tránh việc tạo ra các file có kích thước nhỏ (lý do đã được nhắc đến ở trên). Cụ thể mỗi file nên có kích thước tối thiểu là 1GB hoặc thậm chí lớn hơn tùy thuộc vào bộ dữ liệu cần được phân vùng.
Điều khiển việc truy nhập
Việc cuối cùng cần quan tâm trong quá trình lưu trữ dữ liệu là thiết lập dữ liệu theo một cơ chế nào đó để nhiều tiến trình khác nhau có thể truy nhập được mà không làm ảnh hưởng đến các tiến trình cịn lại cũng như tính an tồn của dữ liệu.
Việc này khơng chỉ đơn giản là mỗi tiến trình đọc từ thư mục này và ghi ra một thư mục khác. Nếu dữ liệu được chia sẻ truy cập cho nhiều bên liên quan thì bạn cần định nghĩa ra một sơ đồ điều khiển truy nhập một cách chặt chẽ để kiểm soát xem ai sẽ được truy cập vào dữ liệu nào. Có một cách để giải quyết vấn đề đó là tạo ra những thư mục có gắn nhãn thời gian đối với mỗi tiến trình riêng biệt, điều này sẽ đảm bảo mỗi tiến trình kể cả được thực hiện song song cũng không làm ảnh hưởng đến dữ liệu của tiến trình cịn lại.
Xử lý dữ liệu
Sau khi dữ liệu đã được lưu trữ, bước tiếp theo của toàn bộ quá trình sẽ là tự động xử lý những dữ liệu đó.
Biến đổi dữ liệu
Việc biến đổi dữ liệu ở đây khơng có nghĩa là sẽ làm mất mát một phần nào của dữ liệu đó mà là tiến trình giúp cho hệ thống xử lý dữ liệu một cách có hiệu quả hơn. Ví dụ việc kiểm tra dữ liệu được xử lý theo cách nào và với tần suất như thế nào nhằm giảm bớt việc phải ghi lại dữ liệu nhiều lần.
Phân tích dữ liệu
Chủ đề được nhắc tới nhiều nhất trong việc phân tích dữ liệu Big Data đó là học máy, đó là q trình xây dựng nên những mơ hình tốn học để từ đó có thể giải quyết các bài toán khuyến nghị, phân cụm hay phân loại đối với những dữ liệu mới. Ví dụ như những bài tốn đánh giá rủi ro, phát hiện lỗi, hay đơn giản như lọc thư rác. Tuy nhiên những tiến trình phân tích khác ngồi học máy như: xây dựng mối tương quan hay báo cáo dữ liệu vẫn còn rất phổ biến.
Tuy nhiên dù bằng phương pháp này hay phương pháp khác, cuối cùng những tiến trình biến đổi cũng như phân tích đó đều cần được thực hiện một cách tự động.
Luồng dữ liệu
Trước khi dữ liệu được xử lý một cách tự động ta cần kết hợp những công cụ và những tiến trình trong mỗi thành phần của hệ thống thành một luồng dữ liệu thống nhất. Có hai kiểu luồng dữ liệu như vậy là micro và macro.
Luồng dữ liệu kiểu micro cho phép thực hiện từng phần nhỏ trong tồn bộ q trình xử lý lớn. Những cơng cụ phục vụ cho mục đích này có thể kể đến Morphlines, Crunch, hay Cascading. Morphlines thực hiện từng cụm tiến trình nhỏ lên mỗi bản ghi trong q trình xử lý; trong khi đó Crunch với Cascading định nghĩa ra một lớp trừu tượng cho mỗi một vùng dữ liệu nhỏ. Tuy nhiên những tiến trình trong Crunch hay Cascading chưa thể kết hợp được với nhau để tạo ra một luồng tiến trình phức tạp hơn, điều mà có thể thực hiện dễ dàng đối với luồng dữ liệu kiểu macro.
4.2.3 Khả năng ứng dụng BigData vào lĩnh vực Môi trường
a) Ứng dụng BigData vào việc thu thập dữ liệu
* Thu thập dữ liệu thông qua hành động của người dùng:
Internet ngày nay ngày càng phát triển, mỗi ngày có hàng nghìn trang web được sinh ra. Các trang web này phục vụ mọi mặt của đời sống con người từ tìm hiểu thơng tin tới giải trí, kinh doanh, mua sắm… Con người ngày càng sử dụng các trang web nhiều hơn trong hoạt động sống của mình. Giờ đây, khi con người muốn tìm hiểu một thơng tin gì, trước tiên họ vào google.com để tìm hiểu thơng tin, muốn mua một sản phẩm gì, đầu tiên họ vào amazon.com hay lazada.com hoặc các trang web bán hàng trực tuyến khác,
muốn giải trí họ có thể sử dụng các mạng xã hội. Mọi thơng tin con người cần thì đều có thể tìm kiếm thơng qua internet. Với sự phát triển của nhu cầu sử dụng internet, đặc biệt là các trang web, các trang web hiện nay có thể thu thập các thơng tin người dùng thơng qua các hành động của họ tương tác với trang web. Ví dụ google có thể thu thập các từ khóa tìm kiếm của một người dùng ở một địa chỉ IP cụ thể. Khi người dùng đó truy cập các trang web khác, nếu trang web này sử dụng dịch vụ tìm kiếm của google, google sẽ tự động hiển thị quảng cáo có nội dung gần với nội dung thơng tin mà người dùng đang tìm kiếm. Ví dụ nếu bạn đang quan tâm tới sản phẩm ti vi Samsung, bạn vào google tìm kiếm từ khóa liên quan tới ti vi Samsung. Tới khi bạn vào một trang web tin tức chỉ đơn thuần để đọc báo, website tin tức đó tự động hiển thị các quảng cáo bán ti vi samsung.