Tải bản đầy đủ (.pdf) (48 trang)

Báo cáo tiểu luận big data covid

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (991.96 KB, 48 trang )

lOMoARcPSD|12114775

BỘ GIÁO DỤC VÀ ĐÀO TẠO

BỘ GIAO THÔNG VẬN TẢI

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP.HCM
--------- oOo --------

BÁO CÁO
DỮ LIỆU LỚN
CHUYÊN NGÀNH: KHOA HỌC MÁY TÍNH
MÃ SỐ: 60840101

GVBM: TS. Hàn Trung Định
Học viên:
1. Nguyễn Văn Chiến – KM1901
2. Võ Tấn Sang – KM1901
3. Nguyễn Hoàng Phương – KM1902
4. Nguyễn Đức Quỳnh – KM1902

TP. HCM, 04 - 2022


lOMoARcPSD|12114775

MỤC LỤC
CHƯƠNG 1: MÔ TẢ DỮ LIỆU VÀ HƯỚNG TIẾP CẬN.......................................... 5
1.1

Mô tả dữ liệu ........................................................................................................ 5



1.2

Hướng tiếp cận ..................................................................................................... 6

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT ............................................................................... 7
2.1

Docker ................................................................................................................... 7

2.1.1

Cấu trúc của docker ...................................................................................... 7

2.1.2

Nguyên tắc hoạt động .................................................................................... 8

2.1.3

Quy trình hoạt động ...................................................................................... 9

2.1.4

Sự khác nhau giữa Hypervisors và Docker .............................................. 10

2.1.5

Ưu điểm của Docker .................................................................................... 11


2.1.6

Một số công cụ và thuật ngữ trong Docker ............................................... 12

2.2

Hadoop ................................................................................................................ 14

2.2.1

Kiến trúc Hadoop ........................................................................................ 15

2.2.2

Cách thức hoạt động ................................................................................... 15

2.2.3

Ưu điểm của Hadoop ................................................................................... 16

2.2.4

Cài đặt cụm Hadoop với Docker ................................................................ 16

2.3

Sqoop ................................................................................................................... 18

2.3.1


Cấu trúc Sqoop ............................................................................................ 19

2.3.2

Ưu điểm của Sqoop...................................................................................... 20

2.3.3

Sqoop và các công cụ ................................................................................... 21

2.3.4

Các tập lệnh của Sqoop ............................................................................... 22

CHƯƠNG 3: MƠ HÌNH TỐN ................................................................................... 26
3.1

Giới thiệu Linear Regression ............................................................................ 26

3.2

Phân tích tốn học.............................................................................................. 27

3.2.1

Dạng của Linear Regression ....................................................................... 27

3.2.2

Sai số dự đoán .............................................................................................. 27


3.2.3

Hàm mất mát ............................................................................................... 27

3.2.4

Nghiệm cho bài toán Liner Regression ..................................................... 28
1


lOMoARcPSD|12114775

CHƯƠNG 4: MƠ HÌNH THỰC NGHIỆM ................................................................. 30
4.1

Giới thiệu hồi quy đa thức ................................................................................ 30

4.1.1

Nguyên nhân dùng hồi quy đa thức ........................................................... 30

4.1.2

Công dụng của hồi quy đa thức ................................................................. 30

4.2

Kết quả thực nghiệm ......................................................................................... 31


CHƯƠNG 5: TRỰC QUAN HÓA DỮ LIỆU .............................................................. 35
5.1

Dữ liệu không gian địa lý .................................................................................. 35

5.2

Biểu đồ Treemaps .............................................................................................. 36

5.3

Biểu đồ bong bóng ............................................................................................. 36

CHƯƠNG 6: HƯỚNG PHÁT TRIỂN ĐỀ TÀI .......................................................... 38
6.1

Công cụ xử lí dữ liệu .......................................................................................... 38

6.1.1

Hive ............................................................................................................... 38

6.1.2

Spark ............................................................................................................. 40

6.2

ETL trong Data Warehoue ............................................................................... 44


2


lOMoARcPSD|12114775

DANH MỤC HÌNH ẢNH
CHƯƠNG 1
Hình 1.1: Tập dữ liệu các ca mắc bệnh COVID-19 ghi nhận hàng ngày .......................... 5
Hình 1.2: Dữ liệu đã được tổng hợp theo các mức tỉ lệ ..................................................... 5
Hình 1.3: Kỹ thuật Unpivot để lưu trữ vào hệ thống big data ........................................... 6
CHƯƠNG 2
Hình 2.1: Kiến trúc Docker ................................................................................................ 8
Hình 2.2: Cơ chế hoạt động của Docker ............................................................................ 9
Hình 2.3: Thứ tự các bước hoạt động Docker .................................................................. 10
Hình 2.4: Sự khác nhau trong kiến trúc Hypervisor và Docker ....................................... 11
Hình 2.5: Docker Image ................................................................................................... 12
Hình 2.6: Mơ hình Hadoop............................................................................................... 17
Hình 2.7: Kiểm tra sau khi cài đặt thành cơng ................................................................. 18
Hình 2.8: Kiểm tra trạng thái hiện tại của hệ thống ......................................................... 18
Hình 2.9: Cấu trúc và cách thức hoạt động của Sqoop .................................................... 20
Hình 2.10: Sqoop ánh xạ ra đoạn mã java........................................................................ 24
CHƯƠNG 4
Hình 4.1: Mơ hình dự đốn xu hướng dịch bệnh Covid hàng ngày ................................. 32
Hình 4.2: Dự đốn số ca mắc bệnh được xác định hàng ngày ......................................... 33
Hình 4.3: Dự đốn tình trạng hồi phục của bệnh nhân sau khi nhiễm ............................. 33
Hình 4.4: Mơ tả tình hình tử vong khi bệnh nhân nhiễm Covid ...................................... 34
CHƯƠNG 5
Hình 5.1: Biểu đồ mô tả các ca nhiễm ở các khu vực trên tồn cầu ................................ 36
Hình 5.2: Biểu đồ tỉ lệ theo số lượng ca nhiễm ở các quốc gia trên thế giới ................... 36
Hình 5.3: Biểu đồ bong bóng thể hiện tình trạng dịch bệnh lây lan theo thời gian ......... 37



lOMoARcPSD|12114775

CHƯƠNG 6
Hình 6.1: Kiến trúc của Hive............................................................................................ 38
Hình 6.2: Sơ đồ mơ tả quy trình làm việc giữa Hive và Hadoop ..................................... 39
Hình 6.3: Cách thức hoạt động của ETL .......................................................................... 45

4


lOMoARcPSD|12114775

CHƯƠNG 1: MÔ TẢ DỮ LIỆU VÀ HƯỚNG TIẾP CẬN
1.1 Mô tả dữ liệu
- Bộ dữ liệu được cung cấp bởi kho dữ liệu COVID-19 của trung Khoa học và Kỹ
thuật Hệ thống (CSSE) tại trường đại học Jhon Hopking và được cập nhật hàng ngày. Bộ
dữ liệu gồm có 3 phần chính:
- Bộ dữ liệu ghi nhận các trường hợp nhiễm bệnh trên thế giới.
- Bộ dữ liệu ghi nhận các trường hợp tử vong trên thế giới.
- Bộ dữ liệu ghi nhận các trường hợp đã phục hồi sau khi nhiễm bệnh.
- Thơng tin dữ liệu gồm có các thơng tin sau được mơ tả trong hình:

Hình 1.1: Tập dữ liệu các ca mắc bệnh COVID-19 ghi nhận hàng ngày

Hình 1.2: Dữ liệu đã được tổng hợp theo các mức tỉ lệ


lOMoARcPSD|12114775


Hình 1.3: Kỹ thuật Unpivot để lưu trữ vào hệ thống big data
1.2 Hướng tiếp cận
Đối với tập dữ liệu trên đề xuất dùng phương pháp hồi quy tuyến tính để đưa ra mơ
hình dự đốn cho xu hướng tình hình dịch COVID-19 trong thời gian tới. Đối với tập dữ
liệu lớn và được cập nhật hàng ngày dữ liệu sẽ được cập nhật vào hệ thống bigdata và
được phân tán trên nhiều ‘node’ khác nhau để hỗ trợ cho việc xử lý dữ liệu lớn sau này.

6


lOMoARcPSD|12114775

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 Docker
Docker là một nền tảng mã nguồn mở để xây dựng, triển khai và quản lý các ứng
dụng được container (trên nền tảng ảo hóa). Docker cung cấp cách để building, deloying
và running ứng dụng dễ dàng bằng cách sử dụng containers.
Docker cho phép các nhà phát triển đóng gói ứng dụng vào container. Các thành
phần thực thi được chuẩn hóa kết hợp mã nguồn ứng dụng với tất cả các thư viện. Và nó
phụ thuộc của hệ điều hành (OS) cần thiết để chạy mã trong bất kỳ môi trường nào.
Trong khi các nhà phát triển có thể tạo container mà khơng cần đến Docker. Docker
giúp việc xây dựng, triển khai, quản lý container trở nên dễ dàng, đơn giản, an toàn hơn.
Về cơ bản, đây là một bộ công cụ cho phép các nhà phát triển xây dựng, triển khai, chạy,
cập nhật và dừng các container bằng cách sử dụng các lệnh đơn giản và tự động hóa tiết
kiệm cơng việc.
2.1.1 Cấu trúc của docker
Docker được thiết kế dưới mơ hình kiến trúc client-server. Docker server (Docker
daemon) có vai trị triển khai, chạy và phân bổ các Docker container. Docker client và
Docker server có thể được phân bổ cùng server hoặc khác server. Chúng kết nối thông

qua nền tảng REST API dựa trên UNIX sockets hoặc network interface.


lOMoARcPSD|12114775

Hình 2.1: Kiến trúc Docker
 Docker daemon đóng vai trị là thành phần core, theo dõi và nghe API request và
quản lý các Docker object. Docker daemon ở các host khác nhau vẫn có khả năng giao
tiếp và kết nối với nhau.
 Docker client là cơng cụ chính để người dùng thực hiện các thao tác trên nền tảng
Docker. Khi người dùng thông qua CLI gõ câu lệnh “Docker run imageABC” để gửi yêu
cầu đến dockerd nhờ API, Docker daemon sẽ tiếp nhận và xử lí yêu cầu. Docker client có
khả năng kết nối, giao tiếp và truyền tải yêu cầu đến nhiều Docker daemon.
 Docker registry hiểu theo nghĩa đơn giản là kho lưu trữ các Image. Điển hình
là Docker Hub, mặt khác người dùng có thể tự thiết lập một Docker registry của riêng
mình.
2.1.2 Nguyên tắc hoạt động

8


lOMoARcPSD|12114775

Hình 2.2: Cơ chế hoạt động của Docker
Cơ chế hoạt động của Docker không đơn giản như cách sử dụng mà có phức tạp hơn.
Docker hoạt động trên sự kết hợp giữa 1 Docker engine với 2 yếu tố:
+ 1 server và 1 client.
+ Giao tiếp giữa server và client nhờ REST API.
Docker hoạt động thông qua việc cung cấp những phương thức tiêu chuẩn để chạy
mã của người dùng. Theo đó, các container thực hiện thao tác ảo hóa hệ điều hành phía

máy chủ. Docker được thiết lập trên từng máy chủ và được hỗ trợ các câu lệnh đơn giản
có nhiệm vụ triển khai, khởi động hoặc tạm dừng Container. Một số dịch vụ AWS như
AWS Fargate, Amazon ECS, Amazon EKS và AWS Batch hỗ trợ người dùng chạy các
container Docker ở quy mô lớn một cách thuận tiện và nhanh chóng hơn.
2.1.3 Quy trình hoạt động
Docker hoạt động dựa trên thứ tự 3 bước: Build - Push – Pull, Run


lOMoARcPSD|12114775

Hình 2.3: Thứ tự các bước hoạt động Docker
 Build: đầu tiên truy cập Docker và tạo lập một dockerfile, trong đó chứa code của
người dùng. Dockerfile này sẽ được thiết lập trên thiết bị đã được cài đặt Docker Engine.
Sau khi tạo Dockerfile, người dùng sẽ có 1 Container lưu trữ bộ thư viện và ứng dụng của
mình.
 Push: có được container sẽ được người dùng push lên đám mây và lưu trữ tại đó.
Thao tác này được thực hiện qua mạng Internet.
 Pull, Run: thao tác này áp dụng khi người dùng muốn truy cập container này bằng
1 thiết bị khác (đã được cài đặt Docker Engine) thì yêu cầu phải Pull container này về máy
và cho phép quá trình Run Container diễn ra.
2.1.4 Sự khác nhau giữa Hypervisors và Docker

10


lOMoARcPSD|12114775

Hình 2.4: Sự khác nhau trong kiến trúc Hypervisor và Docker
Hypervisor là ảo hỏa nằm ở tầng Hardware (phần cứng), tức là mô phỏng phần
cứng và chạy những OS con trên phần cứng đó (Các cơng cụ Hypervisor như Virtual

Box, VMware..)
Sự khác nhau giữa Hypervisors và Docker
Docker: Dùng chung kernel, chạy độc lập trên Host Operating System và có thể chạy
trên bất kì hệ điều hành nào cũng như cloud. Khởi động và làm cho ứng dụng sẵn sàng
chạy trong 500ms, mang lại tính khả thi cao cho những dự án cần sự mở rộng nhanh.
Virtual Machine(Hypervisors): Cần thêm một Guest OS cho nên sẽ tốn tài nguyên
hơn và làm chậm máy thật khi sử dụng. Thời gian khởi động trung bình là 20s có thể lên
đến hàng phút, thay đổi phụ thuộc vào tốc độ của ổ đĩa
2.1.5 Ưu điểm của Docker
 Dễ sử dụng: cách sử dụng Docker khá đơn giản, phù hợp với nhiều đối tượng như
lập trình viên, sys admin… Docker khai thác lợi thế của container để triển khai và kiểm
tra nhanh chóng. Docker hỗ trợ đóng gói ứng dụng trên laptop và chạy chương trình trên
public cloud, private cloud… Câu lệnh là “Build once, run anywhere”.
11


lOMoARcPSD|12114775

 Tốc độ: Docker container có ưu điểm là nhẹ và nhanh, cho phép người dùng thiết
lập và chạy docker container với tốc độ tính bằng giây.
 Mơi trường chạy và khả năng mở rộng: người dùng có thể phân nhỏ các chức năng
trên ứng dụng thành các container riêng lẻ. Với Docker đem đến khả năng liên kết các
container với nhau tạo lập thành 1 ứng dụng, thuận tiện hơn khi thực hiện thao tác scale,
cập nhật các thành phần riêng biệt.
2.1.6 Một số công cụ và thuật ngữ trong Docker
 DockerFile
Mọi container Docker bắt đầu bằng một file văn bản đơn giản chứa hướng dẫn về
cách tạo image container Docker. DockerFile tự động hóa tiến trình tạo image Docker. Về
cơ bản, đây là danh sách các lệnh mà Docker Engine sẽ chạy để tập hợp image.
 Docker images

Docker image chứa mã nguồn ứng dụng thực thi cũng như tất cả các công cụ, thư
viện. Kèm theo dependencies mà ứng dụng cần để chạy dưới dạng container. Khi ta chạy
Docker image, nó sẽ trở thành một phiên bản (hoặc nhiều phiên bản) của container.

Hình 2.5: Docker Image
Có thể xây dựng Docker image từ đầu, nhưng hầu hết các nhà phát triển kéo chúng
xuống từ các kho lưu trữ chung. Nhiều Docker image có thể được tạo từ một base image
12


lOMoARcPSD|12114775

duy nhất. Docker image được tạo thành từ các lớp và mỗi lớp tương ứng với một phiên
bản của image.
Bất cứ khi nào nhà phát triển thay đổi image, một lớp trên cùng mới sẽ được tạo.
Lúc này, lớp trên cùng này thay thế lớp trên cùng trước làm phiên bản hiện tại của image.
Các lớp trước đó được lưu để khôi phục hoặc được sử dụng lại trong các dự án khác.
Mỗi khi một container được tạo từ Docker image, một lớp mới khác được gọi là lớp
container được tạo. Các thay đổi được thực hiện đối với container. Chẳng hạn như nó có
thể thêm hoặc xóa file chỉ được lưu vào lớp container và chỉ tồn tại khi container đang
chạy.
Quá trình tạo image lặp đi lặp lại này giúp tăng hiệu quả tổng thể. Bởi nhiều phiên
bản container có thể chạy chỉ từ một base image duy nhất. Do đó, khi chúng làm như vậy,
chúng sẽ tận dụng một ngăn xếp chung.
 Docker containers
Docker container là các phiên bản live, running instance của Docker image. Ta thấy
Docker image là file chỉ đọc còn container là phiên bản live, executable và người dùng có
thể tương tác với chúng. Cùng với đó, quản trị viên có thể điều chỉnh cài đặt và các quy
định của họ.
 Docker Hub

Docker Hub là kho lưu trữ cơng khai Docker image. Nó tự gọi mình là “thư viện và
cộng đồng lớn nhất thế giới về image container”. Nó chứa hơn 100.000 image container
và chúng được lấy từ các nhà cung cấp phần mềm thương mại, các dự án mã nguồn mở,
các nhà phát triển cá nhân. Nó bao gồm các image được sản xuất bởi Docker, Inc. Cùng
với đó là các image được chứng nhận thuộc Cơ quan đăng ký tin cậy Docker và hàng
nghìn image khác.
Tất cả người dùng Docker Hub có thể chia sẻ image của họ theo ý muốn. Họ cũng
có thể tải xuống các image cơ sở được xác định trước để sử dụng làm điểm bắt đầu cho
bất kỳ dự án container nào.


lOMoARcPSD|12114775

 Docker Client
Đây là thành phần mà bạn có thể tương tác với Docker thông qua command line.
Docker client sẽ gửi lệnh tới Docker Deamon thông qua REST API như đã đề cập ở trên.
 Một số Docker khác
Docker Engine: Đây là thành phần chính của Docker như một cơng cụ để đóng gói
ứng dụng.
Docker Deamon: Dùng để lắng nghe các request từ Docker Client để quản lý các
đối tượng như container, image, network và volume thông qua REST API.
Docker Volumes: Là phần dữ liệu được tạo ra khi container được khởi tạo.
Docker Machine: Tạo ra các docker engine trên máy chủ.
Docker Compose: Chạy ứng dụng bằng cách định nghĩa cấu hình các Docker
Container thơng qua file cấu hình.
2.2 Hadoop
Hadoop là một framwork giúp lưu trữ và xử lý Big Data áp dụng MapReduce. Nói
đơn giản cách khác nó sẽ giúp sắp xếp dữ liệu sao cho user có thể dễ dàng sử dụng nhất.
MapReduce được Google tạo ra ban đầu để xử lý đống dữ liệu lớn của công ty họ.
Ta cịn có thể gọi phương pháp này là Phân tán dữ liệu vì nó tách hết tập hợp các dữ liệu

ban đầu thành các dữ liệu nhỏ và sắp xếp lại chúng để dễ dàng tìm kiếm và truy xuất hơn,
đặc biệt là việc truy xuất các dữ liệu tương đồng. Ví dụ thường thấy nhất là các đề xuất
mà ta hay thấy ở Google tìm kiếm
Như vậy mơ hình lập trình Map Reduce là nền tảng ý tưởng của Hadoop. Bản thân
Hadoop là một framework cho phép phát triển các ứng dụng phân tán phần cứng thông
thường . Các phần cứng này thường có khả năng hỏng hóc cao. Khác với loại phần cứng
chuyên dụng đắt tiền, khả năng xảy ra lỗi thấp như các supermicrocomputer chẳng hạn.
Hadoop viết bằng Java. Tuy nhiên, nhờ cơ chế streaming, Hadoop cho phép phát
triển các ứng dụng phân tán bằng cả java lẫn một số ngơn ngữ lập trình khác như C++,
Python, Pearl.
14


lOMoARcPSD|12114775

2.2.1 Kiến trúc Hadoop
Hadoop gồm 4 module:
 Hadoop Common: Đây là các thư viện và tiện ích cần thiết của Java để các module
khác sử dụng. Những thư viện này cung cấp hệ thống file và lớp OS trừu tượng, đồng thời
chứa các mã lệnh Java để khởi động Hadoop.
 Hadoop YARN: Đây là framework để quản lý tiến trình và tài nguyên của các
cluster.
 Hadoop Distributed File System (HDFS): Đây là hệ thống file phân tán cung cấp
truy cập thông lượng cao cho ứng dụng khai thác dữ liệu.
 Hadoop MapReduce: Đây là hệ thống dựa trên YARN dùng để xử lý song song các
tập dữ liệu lớn.
Hiện nay Hadoop đang ngày càng được mở rộng cũng như được nhiều framwork
khác hỗ trợ như Hive, Hbase, Pig. Tùy vào mục đích sử dụng mà ta sẽ áp dụng framework
phù hợp để nâng cao hiệu quả xử lý dữ liệu của Hadoop.
2.2.2 Cách thức hoạt động

 Giai đoạn 1:
Một user hay một ứng dụng có thể submit một job lên Hadoop (hadoop job client)
với yêu cầu xử lý cùng các thông tin cơ bản:
 Truyền dữ liệu lên server(input) để bắt đầu phân tán dữ liệu và đưa ra kết quả
(output).
 Các dữ liệu được chạy thông qua 2 hàm chính là map và reduce.
o Map: sẽ qt qua tồn bộ dữ liệu và phân tán chúng ra thành các dữ liệu con.
o Reduce: sẽ thu thập các dữ liệu con lại và sắp xếp lại chúng.
 Các thiết lập cụ thể liên quan đến job thông qua các thông số truyền vào.
 Giai đoạn 2:
Hadoop job client submit job (file jar, file thực thi) và bắt đầu lập lịch làm
việc(JobTracker) đưa job vào hàng đợi .


lOMoARcPSD|12114775

Sau khi tiếp nhận yêu cầu từ JobTracker, server cha(master) sẽ phân chia công việc
cho các server con(slave). Các server con sẽ thực hiện các job được giao và trả kết quả
cho server cha.
 Giai đoạn 3
TaskTrackers dùng để kiểm tra đảm bảo các MapReduce hoạt động bình thường và
kiểm tra kết quả nhận được (quá trình output).
Khi “chạy Hadoop” có nghĩa là chạy một tập các trình nền - daemon, hoặc các
chương trình thường trú, trên các máy chủ khác nhau trên mạng của bạn. Những trình nền
có vai trò cụ thể, một số chỉ tồn tại trên một máy chủ, một số có thể tồn tại trên nhiều máy
chủ.
2.2.3 Ưu điểm của Hadoop
o Hadoop framework cho phép người dùng nhanh chóng viết và kiểm tra các hệ thống
phân tán. Đây là cách hiệu quả cho phép phân phối dữ liệu và công việc xuyên suốt các
máy trạm nhờ vào cơ chế xử lý song song của các lõi CPU.

o Hadoop không dựa vào cơ chế chịu lỗi của phần cứng fault-tolerance and high
availability (FTHA), thay vì vậy bản thân Hadoop có các thư viện được thiết kế để phát
hiện và xử lý các lỗi ở lớp ứng dụng.
o Hadoop có thể phát triển lên nhiều server với cấu trúc master-slave để đảm bảo thực
hiện các công việc linh hoạt và không bị ngắt quãng do chia nhỏ công việc cho các server
slave được điều khiển bởi server master.
o Hadoop có thể tương thích trên mọi nền tảng như Window, Linux, MacOs do được
tạo ra từ Java.
2.2.4 Cài đặt cụm Hadoop với Docker
Để cài đặt Hadoop trong Docker container, chúng ta cần Hadoop docker images.
Chúng tôi sử dụng nguồn dữ liệu dưới đây cho việc tạo image
/>
16


lOMoARcPSD|12114775

Sau khi git được cài đặt trong hệ thống, chúng ta sẽ có thư mục docker-hadoop.
Tiếp theo, chúng tơi hiệu chỉnh port và node trong file docker-compose.yml cho phù hợp
bài thực hành.
Triển khai cụm Hadoop bằng command: $ docker-compose up –d
Như đã trình bày ở phần giới thiệu, mơ hình hadoop của chúng tôi gồm 3 node,
được thể hiện như sơ đồ dưới đây

Hình 2.6: Mơ hình Hadoop
Sau khi cài đặt thành công, ta dùng command $ docker ps để kiểm tra các container
đang chạy, dưới đây là hình ảnh kết quả sau khi thực hiện thành công


lOMoARcPSD|12114775


Hình 2.7: Kiểm tra sau khi cài đặt thành cơng
Tiếp theo, ta truy cập http://localhost: 9870 để xem trạng thái hiện tại của hệ thống
từ namenode:

Hình 2.8: Kiểm tra trạng thái hiện tại của hệ thống
2.3 Sqoop
18


lOMoARcPSD|12114775

Hầu hết các công ty lưu dữ liệu trong RDBMS và các giải pháp kho dữ liệu khác. Họ
cần 1 cách để di chuyển dữ liệu vào Hadoop để làm các xử lý khác nhau và trả kết quả trở
về RDBMS từ Hadoop. Sự di chuyển dữ liệu có thể xảy ra trong thời gian thực (real time)
hoặc tại nhiều thời điểm (interval) khác nhau. Chúng ta cần 1 công cụ giúp di chuyển dữ
liệu từ SQL sang Hadoop và từ Hadoop sang SQL. Sqoop (SQL to Hadoop) là 1 cơng cụ
như vậy, dùng trích xuất (extract) dữ liệu từ non-Hadoop và chuyển đổi (transform) chúng
vào định dạng mà Hadoop có thể dùng và sau đó nạp (load) chúng vào HDFS. Cơ bản nó
là cơng cụ ETL (Extracts, Transform và Load) từ SQL vào Hadoop. Điểm hay là nó trích
xuất (extract) dữ liệu từ Hadoop và nạp (load) chúng vào Non-SQL (hoặc RDBMS). Cơ
bản, Sqoop là 1 cơng cụ dịng lệnh làm SQL thành Hadoop và Hadoop thành SQL. Nó là
1 trình thơng dịch dịng lệnh. Nó tạo MapReduce job đằng sau để import dữ liệu từ CSDL
bên ngoài vào HDFS.
2.3.1 Cấu trúc Sqoop
Tất cả các Hệ thống quản lý cơ sở dữ liệu hiện có đều được thiết kế với tiêu chuẩn
SQL. Tuy nhiên, mỗi DBMS khác nhau về phương ngữ ở một mức độ nào đó. Vì vậy, sự
khác biệt này đặt ra những thách thức khi chuyển dữ liệu qua các hệ thống. Kết nối Sqoop
là thành phần giúp vượt qua những thách thức này.
Việc truyền tài liệu giữa Sqoop Hadoop và mạng lưới hệ thống tàng trữ bên ngoài

được triển khai với sự trợ giúp của những đầu nối của Sqoop. Sqoop có những trình liên
kết để thao tác với một loạt cơ sở tài liệu quan hệ phổ cập, gồm có MySQL, PostgreSQL,
Oracle, SQL Server và DB2. Mỗi trình liên kết này biết cách tương tác với DBMS tương
quan của nó. Ngồi ra cịn có một trình liên kết JDBC chung để liên kết với bất kể cơ sở
tài liệu nào tương hỗ giao thức JDBC của Java. Ngoài ra, Sqoop Big data cung ứng những
trình liên kết MySQL và PostgreSQL được tối ưu hóa sử dụng những API dành riêng cho
cơ sở tài liệu để triển khai chuyển hàng loạt một cách hiệu suất cao.


lOMoARcPSD|12114775

Hình 2.9: Cấu trúc và cách thức hoạt động của Sqoop
Ngồi ra, Sqoop trong dữ liệu lớn có nhiều trình kết nối bên thứ ba khác nhau cho
các kho dữ liệu, từ kho dữ liệu doanh nghiệp (bao gồm Netezza, Teradata và Oracle) đến
các cửa hàng NoSQL (chẳng hạn như Couchbase). Tuy nhiên, các đầu nối này không đi
kèm với gói Sqoop; chúng cần được tải xuống riêng và có thể được thêm dễ dàng vào cài
đặt Sqoop hiện có.
2.3.2 Ưu điểm của Sqoop
Xử lý phân tích sử dụng Hadoop yêu cầu tải một lượng lớn dữ liệu từ các nguồn khác
nhau vào các cụm Hadoop. Quá trình tải dữ liệu hàng loạt này vào Hadoop, từ các nguồn
không đồng nhất và sau đó xử lý nó, đi kèm với một số thách thức nhất định. Duy trì và
đảm bảo tính nhất quán của dữ liệu và đảm bảo sử dụng hiệu quả tài nguyên, là một số
yếu tố cần xem xét trước khi lựa chọn cách tiếp cận phù hợp để tải dữ liệu.
20


lOMoARcPSD|12114775

Ta sử dụng Sqoop vì:
 Tải dữ liệu bằng Scripts

Cách tiếp cận truyền thống của việc sử dụng tập lệnh để tải dữ liệu không phù hợp
với việc tải dữ liệu hàng loạt vào Hadoop; cách tiếp cận này không hiệu quả và rất tốn
thời gian.
 Truy cập trực tiếp vào dữ liệu bên ngồi thơng qua ứng dụng Map-Reduce
Cung cấp quyền truy cập trực tiếp vào dữ liệu ở các hệ thống bên ngồi (mà khơng
cần tải vào Hadoop) cho các ứng dụng thu nhỏ bản đồ sẽ làm phức tạp các ứng dụng này.
Vì vậy, cách làm này khơng khả thi.
Ngồi khả năng làm việc với dữ liệu khổng lồ, Hadoop có thể làm việc với dữ liệu ở
nhiều dạng khác nhau. Vì vậy, để tải dữ liệu không đồng nhất như vậy vào Hadoop, các
công cụ khác nhau đã được phát triển. Sqoop và Flume là hai công cụ tải dữ liệu như vậy.
2.3.3 Sqoop và các công cụ
Sqoop

Flume

HDFS

Sqoop được sử dụng để Flume được sử dụng để
nhập dữ liệu từ các nguồn chuyển dữ liệu phát trực
dữ liệu có cấu trúc như tuyến
RDBMS.

hàng

loạt

sang

HDFS.


Sqoop có kiến trúc dựa trên Flume có kiến trúc dựa trên
trình kết nối. Trình kết nối tác nhân. Ở đây, một đoạn
biết cách kết nối với nguồn mã được viết (được gọi là
dữ liệu tương ứng và tìm ‘tác nhân’) đảm nhiệm việc
nạp dữ liệu.

tìm nạp dữ liệu.

HDFS là một hệ thống
tệp phân tán được sử
dụng bởi hệ sinh thái
Hadoop để lưu trữ dữ
liệu.
HDFS có kiến trúc phân
tán nơi dữ liệu được
phân phối trên nhiều nút
dữ liệu.


lOMoARcPSD|12114775

HDFS là điểm đến để nhập
dữ liệu bằng Sqoop.

Tải dữ liệu Sqoop không
theo hướng sự kiện.

Dữ liệu chuyển đến HDFS
thông qua khơng hoặc
nhiều kênh.

Tải dữ liệu Flume có thể
được thúc đẩy bởi một sự
kiện.

HDFS là điểm đến cuối
cùng để lưu trữ dữ liệu.
HDFS chỉ lưu trữ dữ liệu
được cung cấp cho nó
bằng bất kỳ phương tiện
nào.

Để nhập dữ liệu từ các Để tải dữ liệu phát trực HDFS có các lệnh shell
nguồn dữ liệu có cấu trúc, tuyến như tweet được tạo tích hợp riêng để lưu trữ
người ta chỉ phải sử dụng trên Twitter hoặc tệp nhật dữ liệu vào đó. HDFS
các lệnh Sqoop, vì các trình ký của máy chủ web, nên không thể nhập dữ liệu
kết nối của nó biết cách sử dụng Flume. Tác nhân phát trực tuyến
tương tác với các nguồn dữ Flume được xây dựng để
liệu có cấu trúc và tìm nạp tìm nạp dữ liệu phát trực
dữ liệu từ chúng.

tuyến.

2.3.4 Các tập lệnh của Sqoop
Argument

–connect <jdbc-uri>
–connection-manager <class-name>
–driver <class-name>
–hadoop-mapped-home <dir>
–help

–password-file
-P Read
–password
–username <username>
–verbose
–connection-param-file <filename>

Description
Specify JDBC connect string
Specify connection manager class to use
Manually specify JDBC driver class to use
Override $HADOOP_MAPRED_HOME
Print usage instructions
Set path for a file containing the
authentication password
password from console
Set authentication password
Set authentication username
Print more information while working
Optional properties file that provides
connection parameters

22


lOMoARcPSD|12114775

–relaxed-isolation

Set connection transaction isolation to

read uncommitted for the mappers.

Tạo một tập lệnh import dữ liệu RDMS (MySql) và hệ thống Hadoop
MYSQL_HOST=192.168.88.200:3306
MYSQL_USER=root
MYSQL_PASS=123456789
MYSQL_DB=HadoopDb
MYSQL_TABLE=covid_daily
sqoop import --connect jdbc:mysql://$MYSQL_HOST/$MYSQL_DB --table $MYSQL_TABLE
--username $MYSQL_USER --password $MYSQL_PASS -m 1

Với tập dữ liệu covid đã xử lý và lưu trữ trong hệ thống cơ sở dữ liệu MySQL, hệ
quản trị cơ sở dữ liệu được cài đặt server có địa chị Ip: 192.168.88.200 và hoạt động với
port mặc định 3306. Để tạo một kết nối đến hệ thống MySql cần cung cấp cho Sqoop
command các thông tin về MYSQL_USER và MSQL_PASS tên database cần trỏ tới cuối
cùng data Table cần để import vơ hệ thống Hadoop nhiệm vụ cịn lại Sqoop sẽ có các trình
xử lý để nạp dữ liệu vô hệ thống Hadoop.


lOMoARcPSD|12114775

Hình 2.10: Sqoop ánh xạ ra đoạn mã java
Sqoop cũng cung cấp một tập lệnh để làm nhiệm vụ export dữ liệu vào RDMS như sau:
MYSQL_HOST=192.168.88.200:3306
MYSQL_USER=root
MYSQL_PASS=123456789
MYSQL_DB=HadoopDb
MYSQL_TABLE=covid_daily
sqoop export --connect jdbc:mysql://$MYSQL_HOST/$MYSQL_DB --table $MYSQL_TABLE --username
$MYSQL_USER --password $MYSQL_PASS

--export-dir /emp/emp_data

Cú pháp Export Sqoop được liệt kê lại như sau:
Argument
–connect <jdbc-uri>
–connection-manager <class-name>
–driver <class-name>
–hadoop-mapred-home <dir>
–help
–password-file

Description
Specify JDBC connect string
Specify connection manager class to use
Manually specify JDBC driver class to use
Override $HADOOP_MAPRED_HOME
Print usage instructions
Set path for a file containing the
authentication password

24


×