TRỊNH QUANG ĐĂNG
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC MỞ HÀ NỘI
LUẬN VĂN THẠC SỸ
CÔNG NGHỆ THÔNG TIN
CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN
NGHIÊN CỨU GIẢI PHÁP XỬ LÝ BIGDATA SỬ DỤNG
APACHE SPARK VÀ ỨNG DỤNG HỖ TRỢ XÂY DỰNG DỮ
LIỆU BẢN ĐỒ GIAO THÔNG THÔNG MINH
TRỊNH QUANG ĐĂNG
2016-2018
HÀ NỘI - 2018
1
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC MỞ HÀ NỘI
LUẬN VĂN THẠC SỸ
NGHIÊN CỨU GIẢI PHÁP XỬ LÝ BIGDATA SỬ DỤNG
APACHE SPARK VÀ ỨNG DỤNG HỖ TRỢ XÂY DỰNG DỮ
LIỆU BẢN ĐỒ GIAO THÔNG THÔNG MINH
TRỊNH QUANG ĐĂNG
CHUYÊN NGÀNH : CÔNG NGHỆ THÔNG TIN
MÃ SỐ: 8480201
NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. TRƢƠNG TIẾN TÙNG
HÀ NỘI - 2018
2
LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi.
Các số liệu, kết quả nêu trong luận văn là trung thực và chƣa từng đƣợc ai
công bố trong bất cứ công trình nào
TÁC GIẢ LUẬN VĂN
Trịnh Quang Đăng
3
LỜI CẢM ƠN
Đầu tiên tôi xin chân thành cảm ơn ngƣời thầy đã hƣớng dẫn trực tiếp tôi
TS.Trƣơng Tiến Tùng – Trƣờng Đại học Mở Hà Nội đã tận tình giúp đỡ, động viên,
định hƣớng, hƣớng dẫn tôi nghiên cứu và hoàn thành luận văn này. Tôi xin cảm ơn
các giảng viên trong Trƣờng Đại học Mở Hà Nội đã giảng dạy và giúp đỡ tôi trong
thời gian qua, cảm ơn sự giúp đỡ nhiệt tình của các bạn đồng nghiệp.
Trong quá trình nghiên cứu của mình, mặc dự đƣợc sự hƣớng dẫn rất nhiệt
tình, đầy trách nhiệm của TS. Trƣơng Tiến Tùng và các thầy cô giáo trong Trƣờng
Đại học Mở Hà Nội cùng với sự nỗ lực của cá nhân nhƣng cũng không thể tránh
đƣợc những thiếu sót. Tác giả chân thành mong nhận đƣợc những ý kiến đóng góp
từ quý Thầy, Cô và các bạn bè đồng nghiệp.
Trân trọng cám ơn.
Trịnh Quang Đăng
4
MỤC LỤC
LỜI MỞ ĐẦU .............................................................................................................1
CHƢƠNG 1: TỔNG QUAN CÔNG NGHỆ BIGDATA CHO BÀI TOÁN GIAO
THÔNG .......................................................................................................................4
1.1. Đặt vấn đề ..........................................................................................................4
1.2. Một số nghiên cứu liên quan .............................................................................4
1.3. Giới thiệu các lý thuyết liên quan .....................................................................5
1.3.1. Khái niệm về Bigdata .................................................................................5
1.3.2. Giới thiệu về Ngôn ngữ lập trình R, Công cụ lập trình RStudio và
framework Shiny............ ......................................................................................6
1.3.3. Công nghệ dùng trong Bigdata ................................................................12
1.3.4. Sự khác biệt giữa Bigdata và dữ liệu truyền thống ..................................14
1.4. Các đặc trƣng cơ bản của Bigdata ...................................................................15
1.4.1. Khối lƣợng dữ liệu ...................................................................................15
1.4.2. Tốc độ .......................................................................................................15
1.4.3. Đa dạng ....................................................................................................15
1.4.4. Độ tin cậy/chính xác.................................................................................15
1.4.5. Giá trị.......................................................................................................16
1.5. Kiến trúc của Bigdata ......................................................................................16
1.5.1. Kiểu có cấu trúc: ......................................................................................16
1.5.2. Kiểu nửa cấu trúc .....................................................................................17
1.5.3. Kiểu không cấu trúc .................................................................................17
1.6. Ứng dụng Bigdata trong cuộc sống .................................................................18
1.6.1. Các lĩnh vực đang ứng dụng Bigdata .......................................................18
1.6.2. Thực tế sử dụng Bigdata tại Việt Nam .....................................................20
1.7. Giới thiệu bản đồ giao thông thông minh........................................................21
1.8. Ứng dụng cho bản đồ thông minh ...................................................................29
1.9. Kết luận chƣơng 1 ...........................................................................................30
CHƢƠNG 2: GIẢI PHÁP APACHE SPARK VÀ ỨNG DỤNG BẢN ĐỒ THÔNG
MINH ........................................................................................................................31
5
2.1. Giới thiệu về Apache Spark ............................................................................31
2.2. Các tính năng của Apache Spark .....................................................................31
2.3. Các thành phần lõi của Apache Spark .............................................................32
2.4. Cơ chế phân cụm của Apache Spark ...............................................................33
2.5. Cơ chế xử lý dữ liệu của Apache spark ...........................................................33
2.6. Xử lý dữ liệu thời gian thực trên Apache spark ..............................................35
2.7. Phân tích dữ liệu trên Apache spark ................................................................35
2.8. Hiệu năng và ứng dụng Apache Spark ............................................................35
2.9. Xử lý dữ liệu đầu vào dữ liệu giao thông ........................................................36
2.10. Phân vùng bản đồ ..........................................................................................37
2.11. Phân vùng thời gian .......................................................................................38
2.12. Kết luận chƣơng 2 .........................................................................................65
CHƢƠNG 3: ỨNG DỤNG HỖ TRỢ XÂY DỰNG DỮ LIỆU BẢN ĐỒ GIAO
THÔNG THÔNG MINH ..........................................................................................66
3.1. Mô tả quá trình lấy dữ liệu và xử lý dữ liệu ....................................................66
3.1.1. Mô tả quá trình lấy dữ liệu .......................................................................66
3.1.2. Xử lý dữ liệu ............................................................................................67
3.2. Phân vùng chi tiết bản đồ ................................................................................71
3.3. Cài đặt chi tiết các bài toán .............................................................................72
3.3.1. Bài toán Phân tích thời gian di chuyển dựa trên vùng địa lý ...................79
3.3.2. Bài toán mô hình hóa các đặc trƣng giao thông giữa những vùng địa lý để
phát hiện các vấn đề ...........................................................................................83
3.4. Biểu diễn kết quả của các bài toán ..................................................................96
3.4.1. Chi tiết về framework Shiny và cách sử dụng .........................................96
3.4.2. Ứng dụng phân vùng giao thông ..............................................................97
3.4.3. Chức năng dự đoán tình trạng giao thông ................................................98
3.5. Kết luận chƣơng 3 ...........................................................................................90
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ..............................................................100
TÀI LIỆU THAM KHẢO .......................................................................................102
6
DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT
STT
1
2
3
4
5
Tên viết tắt
ACC
ANN
CSS
GPS
HTML
6
7
JS
JSON
Tên đầy đủ
Accuracy
Artifical neural network
Cascading Style Sheets
Global Positioning System
HyperText Markup
Language
JavaScript
JavaScript Object Notation
8
9
10
KNN
NB
PR
K –nearest neighbors
Naùve Bayes
PageRank
11
RD
Random forest
7
Tiếng Việt
Độ chính xác
Mạng noron nhân tạo
Tập tin định kiểu theo tầng
Hệ thống định vị toàn cầu
Ngôn ngữ đánh dấu siêu văn
bản
Ngôn ngữ javascrip
kiểu định dạng dữ liệu trong sử
dụng văn bản thuần tuý
(cặp key - value để dữ liệu )
K láng giềng gần nhất
Mạng bayes
thuật toán xếp hạng các trang
web trong bảng kết quả
xếp hạng tìm kiếm (SERP) của
Google
Rừng ngẫu nhiên
DANH MỤC CÁC BẢNG BIỂU
Bảng 1.1: Cách khai báo các kiểu dữ liệu trong R ............................................................. 10
Bảng 2.1: Phân vùng thời gian cho ngày làm việc và ngày nghỉ ....................................... 39
Bảng 2.2: Giá trị PageRank qua từng lần lặp ..................................................................... 44
Bảng 2.3: Giá trị E(V) và θ của một số vùng .................................................................... 50
Bảng 2.4: Xử lý mẫu qua từng khoảng thời gian trong từng ngày ................................... 53
Bảng 2.5: Xử lý mẫu qua từng khoảng thời gian và liên kết các cặp vùng ...................... 54
Bảng 2.6: Lƣu lƣợng taxi và vận tốc trung bình trên một vùng địa lý............................... 58
Bảng 2.7: Phân loại mƣa theo cấp độ ................................................................................ 59
Bảng 2.8: Phân loại chỉ số nhiệt ........................................................................................ 60
Bảng 2.9: Phân loại điểm sƣơng ....................................................................................... 61
Bảng 2.10: Phân loại nhiệt độ theo mức ............................................................................ 61
Bảng 2.11: Thời tiết trong một khoảng thời gian qua từng ngày ....................................... 62
Bảng 2.12: Bộ các đặc trƣng và Hình thỏi thời tiết của một vùng ..................................... 63
Bảng 2.13: Bộ dữ liệu các đặc trƣng và thời tiết sau khi biến đổi ..................................... 64
Bảng 3.1: Giải thích các thông tin trong bản ghi ............................................................... 67
Bảng 3.2: Xếp hạng vùng theo lƣợt n, trả khách trung bình trong 1 tuần ......................... 76
Bảng 3.3: Xếp hạng theo thuật toán PageRank trên toàn bộ dữ liệu ................................. 77
Bảng 3.4: Thời gian di chuyển giữa một số vùng .............................................................. 82
Bảng 3.5: Các cặp vùng liền kề thƣờng xuyển xảy ra vấn đề ............................................ 86
Bảng 3.6: Một số luật liên kết giữa những cặp vùng ......................................................... 87
Bảng 3.7: Độ chính xác của mô hình dự đoán lƣu lƣợng sử dụng KNN ........................... 93
Bảng 3.8: Độ chính xác của mô hình dự đoán lƣu lƣợng sử dụng RD, NB, ANN ............ 93
Bảng 3.9: Độ chính xác của mô hình dự đoán vận tốc sử dụng KNN ............................... 94
Bảng 3.10: Độ chính xác của mô hình dự đoán vận tốc sử dụng RD, NB, ANN .............. 94
Biểu đồ 2.1: Số lƣợng chuyến taxi của một hãng theo ngày và thời gian ......................... 56
Biểu đồ 2.2: Vận tốc di chuyển của taxi của một hãng theo ngày và thời gian ................. 57
8
DANH MỤC CÁC HÌNH VẼ
Hình 1.1: Thống kê các nguồn dữ liệu hiện nay ................................................................. 6
Hình 1.2: Giao diện Công cụ lập trình RStudio ................................................................... 8
Hình 1.3: Các công ty tham gia vào Bigdata ..................................................................... 13
Hình 1.4: Mô hình SV5 .................................................................................................... 15
Hình 1.5: Xếp hạng các trang theo thuật toán PageRank .................................................. 26
Hình 1.6: Mô tả thuật toán K láng giếng gần nhất ............................................................ 23
Hình 1.7: Cây quyết định cho bài toán chơi thể thao ........................................................ 26
Hình 1.8: Mạng noron nhân tạo ........................................................................................ 27
Hình 2.1: Các thành phần lõi apache spark ........................................................................ 38
Hình 2.2: Phân cụm trong apache spark ............................................................................ 33
Hình 2.3: Sơ đồ xử lý dữ liệu ............................................................................................. 36
Hình 2.4: Sơ đồ nhập dữ liệu ............................................ Error! Bookmark not defined.
Hình 2.5: Phân vùng bản đồ theo kích thƣớc 10x10 và bán kính 1 km ............................. 37
Hình 2.6: Kiến trúc của bài toán xếp hạng vùng ................................................................ 49
Hình 2.7: Biểu diễn một số quỹ đạo trên bản đồ................................................................ 41
Hình 2.8: Đồ thị có hƣớng G và ma trận liền kề biểu diễn ................................................ 43
Hình 2.9: Kiến trúc của bài toán phân tích thời gian di chuyển ........................................ 45
Hình 2.10: Kiến trúc của bài toán mô hình hóa các đặc trƣng giao thông để phát
hiện các vấn đề ................................................................................................................... 47
Hình 2.11: Ví dụ về skyline ............................................................................................... 49
Hình 2.12: Kiến trúc của bài toán dự đoán lƣu lƣợng và vận tốc trung bình .................... 50
Hình 2.13: Đồ thị có hƣớng G và ma trận liền kề biểu diễn .............................................. 51
Hình 3.1: Phân vùng bản đồ và đánh số thứ tự .................................................................. 71
Hình 3.2: Biểu diễn các vùng nhiều lƣợt trả khách............................................................ 78
Hình 3.3: Một số vùng sử dụng trong bài toán Phân tích thời gian di chuyển .................. 81
Hình 3.4: Biểu diễn một số vùng thƣờng xuyên xảy ra vấn đề .......................................... 87
Hình 3.5: Một số vùng sử dụng trong đánh giá bài toán .................................................... 92
9
LỜI MỞ ĐẦU
Trên thế giới giao thông luôn là vấn đề cấp thiết với bất cứ quốc gia nào.
Hiện tại giao thông Việt Nam đang phát triển nhanh và dẫn đầu trong khu vực, tốc
độ phát triển trong năm 2018 là rất nhanh chóng, đứng thứ nhất trong khu vực và
thứ 2 thế giới chỉ sau Ấn Độ [14]. Tuy nhiên sự phát triển nhanh luôn đi kèm với
thách thức lớn đặc biệt là vấn đề cơ sở hạ tầng ở những đô thị lớn. Quá trình đô thị
hóa đã thu hút ngƣời dân về các đô thị để có cơ hội việc làm, học tập và sinh hoạt.
Nhiều khu kinh tế, khu chức năng, khu đô thị đƣợc hình thành kéo theo nhu cầu đi
lại của ngƣời dân. Phát triển đô thị luôn luôn phải tiến hành song song với phát triển
cơ sở hạ tầng tuy nhiên tốc độ phát triển nhanh dẫn tới cơ sở hạ tầng không thể đáp
ứng đƣợc nhu cầu đi lại của ngƣời dân.
Phát triển kinh tế mang lại cho ngƣời dân điều kiện sống ngày càng nâng
cao, chất lƣợng cuộc sống ngày càng cải thiện dẫn đến nhu cầu sử dụng phƣơng tiện
cá nhân tăng cao. Cụ thể, tốc độ phát triển của phƣơng tiện cá nhân tại Việt Nam
đang diễn ra rất nhanh. Riêng đối với thủ đô Hà Nội, sở giao thông vận tải Hà Nội
cho biết trong năm 2018 đã có hơn 5 triệu xe máy, gần 500 nghìn ô tô và khoảng
1,2 triệu phƣơng tiện từ các tỉnh ngoại thành tham gia giao thông Hà Nội và dự kiến
đến năm 2020 sẽ có hơn 800 nghìn ô tô, hơn 6 triệu xe máy, con số này là gần 2
triệu ô tô và 7,5 triệu xe máy vào năm 2030 .
Sự phát triển phƣơng tiện cá nhân đang ở mức báo động, Ủy ban nhân dân
thành phố Hà Nội đã đề xuất và thực hiện nhiều giải pháp tuy nhiên chƣa có giải
pháp nào thực sự đem tới làn gió mới cho giao thông tại Hà Nội. Nhìn qua một số
giải pháp gần đây nhƣ: đổi giờ học, giờ làm việc, dự án xe bus nhanh BRT. Dự án
đổi giờ học, giờ làm chƣa mang lại hiệu quả giảm ùn tắc rõ dệt. Dự án xe bus nhanh
BRT không mang lại hiệu quả cao nếu không muốn nói là thất bại. Trƣớc tình hình ,
chính quyền thành phố Hà Nội đã quyết định thực hiện đề án cấm xe máy. Nhìn về
quá khứ, các thành phố lớn của Trung Quốc cũng đã gặp tình trạng tƣơng tự nhƣ Hà
Nội hiện nay và lựa chọn giải pháp cấm phƣơng tiện cá nhân và phát triển vận tải
công cộng, điển hình nhƣ Bắc Kinh cấm xe máy từ năm 1985, Quảng Châu là 2007
và Thƣợng Hải là 2002 .
1
Trƣớc giai đoạn thực hiện đề án cấm xe máy tác giả mong muốn có giải pháp
giải quyết vấn đề trƣớc mắt cũng nhƣ lâu dài góp phần giải quyết vấn đề giao thông
tác giả mong muốn xây dựng bản đồ thông minh nhằm giúp ngƣời dùng có đƣợc
những chỉ dẫn khi tham gia giao thông. Bản đồ thông minh là hệ thống bản đồ có
thể đƣa ra những tuyến đƣờng hợp lý nhất mà ngƣời dùng đặt trƣớc điểm xuất phát
và đích đến, bản đồ sẽ cũng cấp tình trạng giao thông theo thời gian thực ở khu vực
đã nhƣ lƣu lƣợng giao thông, có ách tắc do tai nạn hoặc vấn đề khác không , ngoài
ra các thông số cơ bản về tuyến đƣờng nhƣ: biển báo, đƣờng một hoặc hai chiều, tốc
độ cho phép…Tác giả thông qua xử lý Bigdata hệ thống sẽ thu thập và đƣa cho
ngƣời dùng những chỉ dẫn hợp lý. Hiện nay ở trên thế giới Bigdata đƣợc xem nhƣ
sự ra đời tất yếu của quá trình bùng nổ thông tin. Bigdata đƣợc đặc trƣng bởi hai
tính chất là: độ lớn lƣu trữ và độ phức tạp, hai tính chất này luôn đi kèm với nhau,
trong tính chất phức tạp cũng đặc trƣng và thách thức hơn vấn đề về độ lớn của dữ
liệu. Nhờ vậy việc phân tích xử lý Bigdata, sẽ khiến tiết kiệm đƣợc chi phí, tăng lợi
nhuận cũng nhƣ hiệu quả hoạt động. Bigdata và các công nghệ phân tích có khả
năng làm thay đổi hoàn toàn bộ mặt của giao thông hiện nay. Tuy nhiên, tình hình
khai thác Bigdata tại Việt Nam vẫn chƣa thu hút đƣợc nhiều sự quan tâm, nghiên
cứu. Chính vì vậy việc thu thập, phân tích, xử lý Bigdata nhằm phát huy giá trị to
lớn của nó là điều vô cùng quan trọng.
Ứng dụng xử lý Bigdata là Apache Spark. Do Apache Spark không chỉ hữu
ích cho học máy mà cũng cho cả việc xử lý luồng dữ liệu hoàn chỉnh. Từ cho phép
thu thập dữ liệu, phân tích, xử lý Bigdata và truy xuất đƣợc các thông tin về tình
trạng giao thông. Tất cả cơ sở dữ liệu này sẽ đƣợc sử dụng để xây dựng ― bản đồ
thông minh‖ về giao thông nhằm hỗ trợ tƣ vấn giúp ngƣời tham gia giao thông lựa
chọn đƣợc phƣơng án di chuyển tối ƣu nhằm giảm thiểu tắc nghẽn giao thông, tiết
kiệm nhiên liệu.
Từ nhu cầu thực tế , học viên với sự giúp đỡ của TS. Trƣơng Tiến Tùng đã
lựa chọn đề tài ―Nghiên cứu giải pháp xử lý Bigdata sử dụng Apache Spark và ứng
dụng hỗ trợ xây dựng dữ liệu bản đồ giao thông thông minh‖ cho luận văn tốt
nghiệp thạc sĩ của mình.
2
Luận văn của Tác giả gồm có 3 chƣơng với nội dung cơ bản sau:
Chƣơng 1: Tổng quan công nghệ bigdata ứng dụng cho bài toán giao thông
Chƣơng 2: Giải pháp APACHE SPARK và ứng dụng bản đồ giao thông
Chƣơng 3: Ứng dụng hỗ trợ xây dựng dữ liêu bản đồ giao thông thông minh
3
CHƢƠNG 1: TỔNG QUAN CÔNG NGHỆ BIGDATA CHO BÀI TOÁN
GIAO THÔNG
Trong chƣơng này tác giả giới thiệu tổng quan về Bigdata: Khái niệm, đặc
trƣng cùng với một số ứng dụng Bigdata tại Việt Nam, trên thế giới và bản đồ giao
thông thông minh .
1.1. Đặt vấn đề
Hiện nay, vấn đề giao thông luôn là mối quan tâm hàng đầu của các đô thị.
Trong những năm gần đây, các đô thị thƣờng xuyên xảy ra tắc đƣờng vào giờ cao
điểm và nguồn gốc của vấn đề đƣợc nhận định là do cơ sở hạ tầng không đủ đáp
ứng và quy hoạch thiếu hợp lý. Với một quy hoạch tốt, các vấn đề về giao thông có
thể đƣợc giảm thiểu giúp cải thiện tình hình giao thông trong tƣơng lai.
Đặc trƣng của giao thông bao gồm những thông tin: Lƣu lƣợng, tốc độ, thời
gian và khoảng cách di chuyển và một số thông tin liên quan. Những thông tin này
bị ảnh hƣởng bởi những yếu tố bên ngoài nhƣ các sự kiện đặc biệt hay do thời tiết.
Mỗi thay đổi đều có thể dẫn đến các vấn đề trong giao thông nhƣ trời năng nóng
hay trời mƣa. Để thực hiện, yêu cầu tiên quyết là phải thu thập dữ liệu. Dữ liệu có
thể thu thập thông qua hai hƣớng chính là dữ liệu từ thiết bị giám sát hành trình
hoặc thông qua camera giám sát giao thông. Tuy nhiên đối với camera giám sát giao
thông, việc trích xuất đƣợc các thông tin nhƣ tốc độ và khoảng cách di chuyển là
không thể thu thập thông qua thiết bị giám sát hành trình. Ngoài ra sau khi đã thu
thập đƣợc dữ liệu, cần phải xử lý dữ liệu để xác định tốc độ, lƣu lƣợng, thời gian,
khoảng cách di chuyển để phát hiện những điểm nóng, dự đoán tình trạng giao
thông dựa trên những thông tin thu thập đƣợc, xác định những thay đổi do các yếu
tố bên ngoài, phục vụ cho việc phát hiện vấn đề và đƣa ra hƣớng phải quyết phù
hợp.
1.2. Một số nghiên cứu liên quan
Tài liệu trình bày một trong những nghiên cứu trong lĩnh vƣc giao thông
[15] , nghiên cứu bao gồm nhiều bài toán giải quyết các vấn đề nhƣ: Giao thông
thông minh. Nghiên cứu tiến hành chia bản đồ thành nhiều vùng dựa trên các trục
đƣờng lớn và nhỏ phân chia các tuyến phố, từ dữ liệu taxi để tính toàn mật độ xe,
4
tốc độ và khoảng cách di chuyển giữa những cặp vùng nhằm đánh giá giao thông
giữa cặp vùng và tìm ra những khu vực quy hoạch không hợp lý.
Dựa trên dữ liệu taxi thu thập đƣợc ở Hà Nội một nhóm tác giả đã thực hiện
nghiên cứu để thực hiện một số bài toán nhƣ: Phân tích, dự báo các chuyến taxi sử
dụng dữ liệu bổ sung (bao gồm các điểm đến ƣa thích, điều kiện thời tiết) từ đã ƣớc
tính nhu cầu taxi; khám phá mối quan hệ giữa lƣu lƣợng taxi và hoạt động của điện
thoại di động, xác định khoảng thời gian và không gian tối ƣu; nghiên cứu về mối
quan hệ giữa dữ liệu đô thị bằng cách kiểm tra sự tƣơng tác giữa tính di động của
taxi, điều kiện khí hậu và mức độ tập trung của khí thải để ƣớc tính nồng độ các
chất gây ô nhiễm trong không khí.
1.3.
Giới thiệu các lý thuyết liên quan:
1.3.1. Khái niệm về Bigdata
Bigdata là một thuật ngữ dùng để mô tả các bộ dữ liệu có kích thƣớc rất lớn,
khả năng phát triển nhanh, rất khó thu thập, lƣu trữ, quản lý và phân tích với các
Công cụ thống kê hay ứng dụng cơ sở dữ liệu truyền thống. Bigdata rất quan trọng
với các tổ chức, doanh nghiệp. Dữ liệu ngày một lớn và nhiều sẽ giúp các phân tích
càng chính xác hơn. Việc phân tích chính xác này sẽ giúp doanh nghiệp đƣa ra các
quyết định giúp tăng hiệu quả sản xuất, giảm rủi ro và chi phí [1].
Một số nhóm kiểu Bigdata:
Hình 1.1. Thống kê các nguồn dữ liệu hiện nay
5
Thứ nhất là dữ liệu của các hệ thống doanh nghiệp truyền thống bao gồm các
dữ liệu từ hệ thống CRM, các giao dịch của hệ thống ERP, các dữ liệu kế toán….
Thứ hai là dữ liệu máy tạo ra/ Dữ liệu từ các thiết bị cảm biến: Bao gồm
CDR, các dữ liệu ghi log thiết bị, …
Thứ ba là dữ liệu mạng xã hội (Social data): bao gồm các dữ liệu đƣợc sinh
ra từ quá trình sử dụng mạng xã hội của ngƣời dùng nhƣ: Hình ảnh, video, thông tin
trên Facebook, Twitter, …
1.3.2. Giới thiệu về Ngôn ngữ lập trình R, Công cụ lập trình RStudio và
framework Shiny
1.3.2.1 Giới thiệu về Ngôn ngữ lập trình R
R là một hệ thống cho tính toán thống kê và đồ họa. R bao gồm một ngôn
ngữ và một Runtime environment với đồ họa, trình sửa lỗi, truy nhập vào một số
chức năng hệ thống và chạy các chƣơng trình đã đƣợc lƣu trữ.
R đƣợc viết bởi Ross Ihaka và Robert Gentleman tại Phòng Thống kê của
Đại học Auckland ở New Zealand, thiết kế của R bị ảnh hƣởng lớn từ S và Scheme.
Ngoài ra vì là Ngôn ngữ lập trình Mã nguồn mở nên R cũng có sự ng góp lớn tới từ
các cá nhân.R hỗ trợ nhiều hệ điều hành khác nhau nhƣ: Unix, Windows, Mac. R
thân thiện hơn đối với một số ngôn ngữ khác và nên sử dụng kết hợp với công cụ
lập trình RStudio.
6
1.3.2.2 Cài đặt R và Rstudio
Để cài đặt R, truy nhập vào trang chủ của R [28], chọn hệ điều hành, tiếp
theo lựa chọn base cho lần cài đặt đầu tiên sau chọn download, sau khi download,
chạy bộ cài để hoàn tất cài đặt ban đầu. Sau khi cài đặt, nếu thành công sẽ xuất hiện
icon mang chữ ―R‖ trong danh sách chƣơng trình.
Cài môi trƣờng: Sau khi cài đặt xong R, cần phải cài đặt môi trƣờng bằng
cách
Chuột phải vào My Computer chọn Properties.
Chọn Advanced system settings.
Chọn Environment variables.
Trong phần User variables, tìm biến Path, chọn Edit hoặc nếu chƣa có chọn
New và đặt tên biên là Path.
Thêm đƣờng dẫn của file R.exe từ folder R đã cài đặt lúc trƣớc (có phân biệt
x86 và x64) vào Variable value.
Chọn Ok và hoàn tất cài đặt biến môi trƣờng.
RStudio là một bộ các công cụ tích hợp đƣợc thiết kế để làm việc với R hiệu
quả hơn. Nó bao gồm một trình soạn thảo, trình kiểm tra cú pháp, hỗ trợ chạy Mã
trực tiếp và một loạt các Công cụ để vẽ, lƣu vết lịch sử, gỡ lỗi và quản lý không
gian nhớ. RStudio là phần mềm miễn phí cho cá nhân sử dụng. Để cài đặt, truy nhập
trang web của phần mềm [29], lựa chọn phiên bản Desktop Non-commerical. Sau
khi hoàn tất cài đặt, giao diện ngƣời dùng của RStudio nhƣ hình 1.2
7
Hình 1.2 : Giao diện Công cụ lập trình RStudio
Phía trên cùng là phần thƣ mục hiện tại, ngƣời dùng có thể xem bằng câu
lệnh getwd() hoặc thay đổi bằng câu lệnh setwd(―địa chỉ‖).
Phía dƣới là thanh công cụ, ngƣời dùng có thể lựa chọn các hành động nhƣ
tạo dự án mới, tạo mới tập tin, chỉnh sửa và làm một số hành động khác.
Phía dƣới bên trái là cửa số Console, ngƣời dùng có thể gõ câu lệnh đơn giản
sau dấu nhắc ―>‖ và R sẽ thực hiện lệnh và trả về kết quả.
Phía trên bên trái là cửa sổ Script, ngƣời dùng có thể viết câu lệnh vào đây và
lƣu lại, ngoài ra để chạy trực tiếp câu lệnh từ cửa sổ này, ngƣời dùng chọn vào một
dũng và chọn Run hoặc bụi đen và chọn Run nếu muốn chạy một phần nào .
Phía trên bên phải là phần Environment hiện danh sách những biến đã khởi
tạo hoặc đƣợc lƣu (R có hỗ trợ lƣu giá trị các biến đã khởi tạo trƣớc trong 1 file gọi
là .Rdata trong cùng 1 thƣ mục và có thể tiếp tục sử dụng cho những lần sau) và
History là lịch sử những câu lệnh mà ngƣời dùng đã chạy.
Phía dƣới bên phải Files là phần hỗ trợ hiển thị bao gồm: Danh sách file
trong thƣ mục đƣợc trỏ đến, biểu đồ, các gói đã cài đặt, hỗ trợ, xem giá trị các biến
lớn.
8
1.3.2.3. Các kiểu dữ liệu, cách khai báo trong R
Các kiểu dữ liệu:
Khác với một số ngôn ngữ lập trình thông dụng nhƣ C, C++ hay Java, các
biến trong R không cần khai báo kiểu dữ liệu, các biến đƣợc gán nhƣ một Object và
tùy vào giá trị của biến mà biến đƣợc xác định kiểu dữ liệu khác nhau. Trong R có 6
kiểu dữ liệu cơ bản.
Logical: Dữ liệu kiểu Logic (TRUE/FALSE).
Numberic: Dữ liệu kiểu số (1.2, 0.5, …).
Integer: Dữ liệu kiểu số nguyên (1,2, …).
Complex: Dữ liệu kiểu số thực (1+2i, 3+2i, …).
Character: Dữ liệu kiểu chuỗi (―Hello‖, ―World‖, …).
Raw: Dữ liệu kiểu byte (00 00, 48 65 6c 6c 6f, … ), mặc định là hệ 16.
Dựa trên 6 loại dữ liệu nguyên thủy, R có một số cấu trúc dữ liệu
Vectors: Vector lƣu trữ danh sách các dữ liệu cùng kiểu.
Lists: Tƣơng tự vector nhƣng có thể lƣu trữ các kiểu dữ liệu khác nhau.
Matrices: Ma trận, là một mảng 2 chiều, các dữ liệu phải cùng kiểu.
Arrays: Mảng lƣu trữ các dữ liệu cùng kiểu, tuy nhiên có thể có nhiều chiều
mà không giới hạn ở 2 nhƣ ma trận.
Factors: Đƣợc tạo ra từ vector, lƣu trữ vector cùng với giá trị riêng biệt.
Data Frames: Lƣu trữ dữ liệu dƣới dạng bảng. Mỗi cột là một kiểu dữ liệu
khác nhau, data frame đƣợc tạo từ một danh sách các vector có độ dài bằng nhau.
Bảng 1.1 biểu diễn cách khai báo các kiểu dữ liệu trong R
9
Bảng 1.1: Cách khai báo các kiểu dữ liệu trong R
Kiểu dữ liệu
Khai báo
Vectors
vector <- c('green', 'red', 'purple')
Lists
list <- list (TRUE, 1.2, 5, 'Hello')
Matrices
matrix <- matrix(c(1:9), nrow=3, ncol=3)
Arrays
array <- array(c('green','red'),dim = c(2,2,2))
Factors
vector <- c('green', 'red', 'yellow', 'orange', 'red', 'yellow',
'orange')
factor <- factor(vector)
DataFrames
studentList <- data.frame(
name = c("Nguyen Van A", "Tran Van B"),
gender = c("Male", "Male‖),
age = c(22, 24)
)
Một số phép toán và hàm trong R
Để gán giá trị cho một biến trong R, có thể sử dụng ký tự = hoặc <-. Khi phát
triển R, ký tự <- dùng để gán giá trị cho biến trong R, sau này ký tự = đƣợc chấp
nhận để gán giá trị cho biến.. Tuy nhiên, ký tự = không đƣợc chấp nhận rộng rãi bởi
ký tự = thƣờng đƣợc sử dụng trong việc truyền tham số của các hàm.
Các phép cộng, trừ, nhân, chia trong R sử dụng toán tử ―+‖, ―-―, ―*‖, ―/‖.
Phép lũy thừa sử dụng toán tử ―^‖ và chia lấy phần dƣ sử dụng ―%%‖.
Để ép kiểu dữ liệu trong R, sử dụng cú pháp as, ví dụ muốn ộp kiểu biến x
sang integer sử dụng as.integer(x).
Ngoài ra R có phân biệt biến global và biến local, nếu một biến đã đƣợc khai
báo là global, sử dụng <- để thay đổi giá trị của biến global trong phạm vi thực hiện
10
(nhƣ trong một function), để thay đổi giá trị của biến trong toàn bộ phiên sử dụng
<<-.
R cung cấp một số hàm đọc dữ liệu từ file nhƣ đọc vào 1 data frame
(read.csv), đọc vào 1 bảng(read.table), đọc vào 1 bảng và chuyển sang data frame
(read.delim), read.socket(), read.Line() …. Để ghi dữ liệu, sử dụng một số hàm
nhƣ: write(), write.csv(), write.table() ….
R có thể làm nhiều thống kê và phân tích dữ liệu, và có hỗ trợ cài đặt các gói
đƣợc cung cấp. Để cài đặt một gói sử dụng có pháp install.packages(―package
name‖).
Hàm trong R đƣợc định nghĩa bằng có pháp: functionName <- function
(arg1, arg2, …).
Ngoài ra, RStudio cũng hỗ trợ làm việc trên nhiều phần khác nhau, mỗi
phần sẽ hoạt động riêng biệt và không ảnh hƣởng tới nhau, để làm việc trên một
phiên khác, lựa chọn Session, New Session, để lấy thông tin của phiên hiện tại sử
dụng câu lệnh SessionInfo().
Giới thiệu về framework Shiny:
Shiny là một framework đƣợc phát triển và tích hợp sẵn trong RStudio thông
qua package Shiny. Shiny giúp dễ dàng xây dựng các ứng dụng web tự động tƣơng
tác với R thông qua XmlHttpRequest, các ứng dụng có thể hoạt động độc lập hoặc
nhúng vào các ứng dụng khác, mở rộng với CSS, htmlwidgets và JavaScript.
Để sử dụng framework Shiny, trƣớc tiên phải cài đặt gói bằng câu lệnh:
install.packages(―shiny‖). Đối với RStudio, sử dụng bằng cách chọn File, New
Project, New Directory, Shiny Web Application, đặt tên cho web app và chọn
Create Project. Sau khi hoàn tất sẽ xuất hiện 2 file server.R và ui.R tƣơng ứng với
server xử lý và giao diện UI.
Đánh giá ƣu, nhƣợc điểm của R
Ưu điểm
R là phần mềm Mã nguồn mở, cho phép sử dụng và sửa đổi, R không hạn
chế về giấy phép và quyền tác giả.
11
R kết hợp tất cả các thống kê, mô hình và Phân tích, cung cấp một Ngôn ngữ
toàn diện để quản lý và thao tác dữ liệu. Công nghệ và ý tƣởng mới thƣờng đƣợc
xuất hiện lần đầu tiên trong R.
Khả năng đồ họa của R cũng vƣợt trội so, đã đƣợc đánh giá bởi US Food and
Drug Administration [2].
R cung cấp hơn 4800 gói từ nhiều chủ đề nhƣ kinh tế lƣợng, Xử lý dữ liệu,
phân tích không gian, khoa học Công nghệ.
R có một cộng đồng lớn với hơn 2 triệu thành viên, nhiều công ty đã chấp
nhận R nhƣ một ngôn ngữ thống kê góp phần phát triển nhanh chóng cho ngôn ngữ
này.
Nhược điểm
R đƣợc phát triển bởi các nhà thống kê nên không có có pháp nhất quán.
R không chú ý tới việc quản lý bộ nhớ vì vậy tiêu tốn tƣơng đối nhiều tài
nguyên trong quá trình làm việc.
1.3.3. Công nghệ dùng trong Bigdata
Bigdata là nhu cầu đang tăng trƣởng lớn đến nỗi Software AG, Oracle, IBM,
Microsoft, SAP, EMC, HP và Dell đã chi hơn 15 tỉ USD cho các công ty chuyên về
quản LÝ và phân tích dữ liệu. Năm 2010, ngành công nghiệp Bigdata có giá trị hơn
100 tỉ USD và đang tăng nhanh với tốc độ 10% mỗi năm, nhanh gấp đôi so với tổng
ngành phần mềm nói chung [5].
12
Hình 1.3. Một số Công ty có tham gia vào Bigdata
Bigdata 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 đoàn phân tích McKinsey đề xuất
những công nghệ có thể dùng với Bigdata bao gồm crowsourcing (tận dụng nguồn
lực từ nhiều thiết bị điện toán trên toà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 (các hệ thống có khả
năng học hỏi từ dữ liệu cũng đƣợc gọi là máy học, 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 hành động tìm kiếm, file hệ thống dạng rời rạc, các hệ thống điện
toán đám mây (bao gồm ứng dụng, nguồn lực tính toá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ừ ―Bigdata‖. 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 Bigdata nữa.
Những ngƣời làm việc với Bigdata thƣờng khó khăn với các hệ thống lƣu trữ
dữ liệu tốc độ chậm, do vậy họ cần những loại ổ lƣu trữ nào có thể gắn trực tiếp vào
máy tính (cũng nhƣ ổ cứng gắn trong máy tính vậy). Ổ đã có thể là SSD cho đến
13
các đĩa SATA nằm trong một lƣới lƣu trữ cỡ lớn. Những ngƣời này nhìn vào ổ NAS
hay hệ thống lƣu trữ mạng SAN với góc nhìn rằng những thứ này quá phức tạp, đắt
và chậm. Những tính chất nói trên không phù hợp cho hệ thống dùng để phân tích
Bigdata vốn nhắm đến hiệu năng cao, tận dụng hạ tầng thông dụng và chi phí thấp.
Ngoài ra, việc phân tích Bigdata cũng cần phải đƣợc áp dụng theo thời gian thực
hoặc cận thời gian thực, thế nên độ trễ cần phải đƣợc loại bỏ bất kỳ khi nào và bất
kỳ nơi nào có thể [4].
1.3.4. Sự khác biệt giữa Bigdata và dữ liệu truyền thống
Bigdata khác với dữ liệu truyền thống ở 4 điểm cơ bản: Dữ liệu đa dạng hơn;
lƣu trữ lớn hơn; truy vấn nhanh hơn; độ chính xác cao hơn [1].
- Dữ liệu đa dạng hơn: Khi khai thác dữ liệu truyền thống, ta thƣờng phải trả
lời các câu hỏi: Dữ liệu lấy ra kiểu gỡ, định dạng dữ liệu nhƣ thế nào nhƣng đối với
Bigdata ta không phải trả lời các câu hỏi trên. Hay nói cách khác khi khai thác, phân
tích Bigdata ta không cần quan tâm đến kiểu dữ liệu và định dạng của chúng, điều
quan tâm là giá trị mà dữ liệu mang lại có đáp ứng đƣợc cho công việc hiện tại và
tƣơng lai hay không .
- Lƣu trữ Bigdata hơn: Lƣu trữ dữ liệu truyền thống vô cùng phức tạp và
luôn đặt ra câu hỏi lƣu nhƣ thế nào, dung lƣợng kho lƣu trữ bao nhiêu là đủ, gắn
kèm với câu hỏi đã là chi phí đầu tƣ tƣơng ứng. Công nghệ lƣu trữ Bigdata hiện nay
đã phần nào có thể giải quyết đƣợc vấn đề trên nhờ những công nghệ lƣu trữ đám
mây, phân phối lƣu trữ dữ liệu phân tán và có thể kết hợp các dữ liệu phân tán lại
với nhau một cách chính xác và xử lý nhanh trong thời gian thực.
- Truy vấn dữ liệu nhanh hơn: Bigdata đƣợc cập nhật liên tục, trong khi kho
dữ liệu truyền thống không đƣợc cập nhật liên tục và trong tình trạng không theo
dõi thƣờng xuyên gây ra tình trạng lỗi cấu trúc truy vấn dẫn đến không tìm kiếm
đƣợc thông tin đáp ứng theo yêu cầu.
- Độ chính xác cao hơn: Bigdata khi đƣa vào sử dụng thƣờng đƣợc kiểm định
lại dữ liệu với những điều kiện chặt chẽ, số lƣợng thông tin đƣợc kiểm tra thông
thƣờng rất lớn, và đảm bảo về nguồn lấy dữ liệu không có sự tác động của con
ngƣời vào thay đổi số liệu thu thập.
14
1.4. Các đặc trƣng cơ bản của Bigdata
Theo Khái niệm của Gartner (công ty nghiên cứu Công nghệ Thông tin hàng
đầu thế giới) về mô hình ―5Vs‖ - năm tính chất quan trọng nói lên Bigdata [3], [5]:
Hình 1.4. Mô hình 5Vs của Bigdata
1.4.1. Khối lượng dữ liệu
Bigdata là tập hợp dữ liệu có dung lƣợng lƣu trữ vƣợt mức đảm đƣơng của
những ứng dụng và công cụ truyền thống. Kích cỡ của Bigdata đang từng ngày tăng
lên, và tính đến năm 2012 thì nó có thể nằm trong khoảng vài chục terabyte cho đến
nhiều petabyte (1 petabyte = 1024 terabyte) chỉ cho một tập hợp dữ liệu mà thôi.
1.4.2. Tốc độ
Dung lƣợng gia tăng của dữ liệu rất nhanh và tốc độ xử lý đang tiến tới thời
gian thực. Các ứng dụng phổ biến trên lĩnh vực Internet, Tài chính, Ngân hàng,
Hàng không, Quân sự, Y tế – Sức khỏe ngày hôm nay phần lớn Bigdata đƣợc xử lý
thời gian thực. Công nghệ xử lý Bigdata ngày một tiên tiến cho phép xử lý tức thì
trƣớc khi chúng đƣợc lƣu trữ vào cơ sở dữ liệu.
1.4.3. Đa dạng
Hình thức lƣu trữ và chủng loại dữ liệu ngày một đa dạng hơn. Trƣớc đây ta
hay nói đến dữ liệu có cấu trúc thì ngày nay hơn 80% dữ liệu trên thế giới đƣợc sinh
ra là phi cấu trúc (tài liệu, blog, Hình ảnh, video, voice v.v.). Công nghệ Bigdata
cho phép ta ngày nay liên kết và phân tích đa dạng chủng loại dữ liệu với nhau nhƣ
comments/post của một nhóm ngƣời dùng nào trên Facebook với thông tin video
đƣợc chia sẻ từ Youtube và Twitter.
1.4.4. Độ tin cậy/chính xác
Một trong những Tính chất phức tạp nhất của Bigdata là độ chính xác của dữ
liệu. Với xu hƣớng công cụ dùng cho việc giao tiếp, chia sẻ thông tin trên nền
15
tảng internet. và truyền thông mạng xã hội ngày nay và sự gia tăng mạnh mẽ tính
tƣơng tác và chia sẻ của ngƣời dùng thiết bị di động làm cho bức tranh xác định về
độ tin cậy và chính xác của dữ liệu ngày một khó khăn hơn. Bài toán phân tích và
loại bỏ dữ liệu thiếu chính xác và nhiễu đang là tính chất quan trọng của Bigdata.
1.4.5. Giá trị
Giá trị thông tin là tính chất quan trọng nhất của xu hƣớng công nghệ
Bigdata. Ở đây doanh nghiệp phải hoạch định đƣợc những giá trị thông tin hữu ích
của Bigdata cho vấn đề, bài toán hoặc mô hình hoạt động kinh doanh của mình. Có
thể nói việc đầu tiên là phải xác định đƣợc tính chất ―Value‖ thì mới nên bắt tay vào
Bigdata.
Những năm gần đây, Việt Nam đang ngày càng gia tăng tốc độ phát triển và
hội nhập với các xu hƣớng công nghệ thế giới. Với hơn 30 triệu ngƣời dùng Internet
và hơn 15 triệu ngƣơi dùng Mobile Internet làm cho Việt Nam đang đứng trƣớc một
cơ hội vô cùng lớn về khai thác Bigdata. Sẽ có những doanh nghiệp Việt Nam khai
thác thành công Bigdata với doanh số hàng trăm triệu USD trong vòng 5 năm tới.
Đặc biệt, giai đoạn 2014-2016, xu hƣớng Mobile và lƣợng ngƣời dùng Internet 3G
sẽ tiếp tục tăng mạnh. Các dịch vụ kết nối OTT (Over-the-top) và truyền thông xã
hội ng góp hơn 80% phƣơng thức giao tiếp online, video online và nội dung số
mobile. Điều này góp phần đẩy mạnh xu hƣớng truyền thông số đa phƣơng tiện, đa
màn Hình (PC, smartphone , tablet, smart TV) sẽ bùng nổ với độ phủ hơn 50% dân
số Việt Nam. Việt Nam là một kho ―vàng‖ dữ liệu vô cùng lớn cho việc ứng dụng
Bigdata.
1.5. Kiến trúc của Bigdata
Bigdata có thể tìm thấy theo 3 kiểu cấu trúc sau:
- Kiểu có cấu trúc
- Kiểu không có cấu trúc
- Kiểu nửa cấu trúc
1.5.1. Kiểu có cấu trúc
Nhiều dữ liệu có thể đƣợc lƣu trữ đƣợc truy cập và xử lý trong dạng khuôn
mẫu của định dạng nào đã đều đƣợc gọi là dữ liệu đƣợc cấu trúc. Thời gian trƣớc
16