You are on page 1of 17

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH

BÀI TẬP THỰC HÀNH


NHẬP MÔN DỮ LIỆU LỚN

Bộ môn Hệ thống thông tin


Cập nhật ngày 16/01/2024

NỘI DUNG

Lab 1: Linux shell và SSH ...................................................... 2


Lab 2: Quản trị Hadoop .......................................................... 4
Lab 3: MapReduce với Python ............................................... 7
Lab 4: MySQL ..................................................................... 10
Lab 5: Sqoop ........................................................................ 13
Lab 7: Hive ........................................................................... 14
Lab 8: Spark ......................................................................... 15
Bài 9: Mở rộng ..................................................................... 16
Lab 10: Tổng kết .................................................................. 17

TP. Hồ Chí Minh – Tháng 1 năm 2024


Lab 1: Linux shell và SSH

Mục tiêu:
 Tìm hiểu Hadoop và các thành phần của nó
 Dùng SSH để thao tác trên Linux
1. Chuẩn bị
Tự cài đặt:
- Download bản cài Linux, ví dụ Ubuntu 14.4 https://releases.ubuntu.com/14.04/ubuntu-
14.04.6-desktop-amd64.iso (1.1GB), sau đó dùng VMware Workstation hoặc
VirtualBox để cài hệ điều hành Linux.
- Tìm hiểu về Hadoop: Thiết lập một cụm nút đơn (Single Node
Cluster) https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-
common/SingleCluster.html

Bản đã cài sẵn:


Dùng VirtualBox để import file image sau với tài khoản acc: hduser /pass: hadoop
https://drive.google.com/file/d/1wiyYeavv3kqykxfkIR3ukX2OV2ZL0xAs/view?usp=shari
ng

Bạn có thể dùng cả hai bản trên trong quá trình thực hành.

2. Thực hành Linux với SSH


Login vào hệ thống máy ảo từ máy thật bằng cách sử dụng SSH với tài khoản
hduser. Thực hiện các thao tác sau đây:

1. Sử dụng lệnh để cho biết user hiện tại là gì


2. Cho biết thư mục hiện hành.
3. Liệt kê danh sách file, folder trong thư mục hiện hành
4. Tạo cấu trúc cây thư mục như sau
5. Tạo file man_ls.txt chứa nội dung “Hello IUH” trong folder tc1. Tạo 1
hard-link file tên h1_man_ls.txt cho file này trong cùng thư mục, và một
soft-link file tên s1_man_ls.txt cho file này trong cùng thư mục. Hiển thị
nội dung 2 file link này. Xóa file gốc man_ls.txt, sau đó hiển thị nội dung 2
file link này và cho biết kết quả.
6. Dùng lệnh cat để tạo file cse.txt trong thư thục tc1 với nội dung là “họ tên
sv, mã số sv, email, sdt”. Tạo 1 soft-link file tên csesoft.txt cho file này
trong thư mục home của user hiện tại.
7. Tạo lại file man_ls.txt chứa nội dung “Hello IUH again” trong folder tc1.
Hiển thị nội dung 2 file link ở câu trên và cho biết kết quả.
8. Di chuyển file man_ls.txt và cse.txt này vào folder ncd2a
9. Tạo file man_ls.txt chứa nội dung “Hello IS-FIT -IUH” trong folder tc1.
10. Copy toàn bộ folder ncd2 vào thư mục ca
11. Xóa thư mục cc
12. Xóa màn hình
13. Chuyển vị trí thư mục hiện hành về thư mục cd
14. Chuyển vị trí thư mục hiện hành về /hduser
15. Hiển thị nội dung file man_ls.txt sử dụng lệnh more, less
16. Hiển thị 15 hàng đầu tiên của file man_ls.txt
17. Hiển thị 5 hàng cuối cùng của file man_ls.txt
18. Tạo file log_time.txt rỗng trong thư mục cd
19. Hiển thị ngày giờ tạo file log_time.txt nói trên.
20. Đổi tên file log_time.txt thành log_time1.txt
21. Tạo file my_friend.txt trong thư mục tc1 chứa danh sách 10 sinh viên trong
lớp. Sử dụng lệnh cat >, bấm Ctrl+D để kết thúc.
22. Hiển thị danh sách này (file my_friend.txt) theo thứ tự tăng dần, hiển thị
theo thứ tự giảm dần theo tên sinh viên
23. Tiến hành copy tập tin new_my_friend.txt từ máy thật vào cùng thư mục
với my_friend.txt trên máy ảo.
24. Trộn dữ liệu của file new_my_friend.txt vào my_friend.txt, sau đó xóa file
new_my_friend.txt
25. Thiết lập quyền đọc, sửa cho tất cả với file my_friend.txt
26. Hiển thị danh sách sinh viên trong my_friend.txt có đánh số thứ tự từng
hàng.
27. Copy file my_friend.txt từ máy ảo về máy thật.
28. Log out. Bấm <Ctrl-D> để thoát.

-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
Lab 2: Quản trị Hadoop

Mục tiêu:

1. Chuẩn bị

2. Thực hành Hadoop

1. Khởi chạy Hadoop v2.6


2. Khởi chạy yarn để dùng map reduce
3. (HDFS) Kiểm tra tình trạng của hệ thống hadoop file system
hdfs fsck /
4. Mở firefox để xem tình trạng hadoop server chạy
http://localhost:50070
5. Xem các tập tin thư mục đang lưu trữ trên hệ thống HDFS
http://localhost:50070/explorer.html
6. Xem các nhật ký làm việc của Hadoop
http://localhost:50070/logs và chọn mở một file.
7. Xem đường dẫn thư mục cài đặt Hadoop
8. Xem file cấu hình hdfs và map-reduce
Cd $HADOOP_HOME
Cd etc/Hadoop
Sudo nano core-site.xml
Sudo nano hdfs-site.xml
Sudo yarn-site.xml
Sudo yarn mapred-site.xml
cd
9. (HDFS) Liệt kê danh sách tập tin, thư mục
hdfs dfs –ls /
10. (HDFS) Tạo thư mục mới
hdfs dfs –mkdir /mrnam
Sau khi tạo thư mục mới xong, dùng lệnh -ls hoặc dùng
http://localhost:50070/explorer.html để xem kết quả tạo thư mục mới.
11. (HDFS) Tạo mới tập tin kích thước 0 bytes trong thư mục cho trước.
hdfs dfs –touchz /mrnam/sample.txt
12. (HDFS) Kiểm tra kích thước tập tin
hdfs dfs –du –s /mrnam/sample.txt
13. (Local-Linux) Tạo mới thư mục
mkdir test
14. (Local-Linux) Liệt kê thư mục và tập tin
ls -l
15. (Local-Linux) Tạo mới tập tin
cat > test/data.txt
Hello
MR.NAM
Ctrl D
16. (Local-Linux) Xem lại nội dung tập tin
cat /test/data.txt
17. (HDFS)
Đưa dữ liệu từ Local lên HDFS. Có thể dùng lệnh put để thay thế
hdfs dfs –copyFromLocal /home/hduser/test/data.txt /mrnam
18. (HDFS) Xem kết quả copy dữ liệu lên HDFS
hdfs dfs -ls /mrnam
19. (HDFS) Đọc nội dung và in nội dung của file ra màn hình
hdfs dfs –cat /mrnam/data.txt
20. (HDFS) Lấy nội dung của tập tin và xuất ra dạng text
hdfs dfs –text /mrnam/data.txt
21. (HDFS) Đếm số lượng thư mục, tập tin và dung lượng của đường dẫn
hdfs dfs –count /mrnam
22. (HDFS) Xóa tập tin trên HDFS
hdfs dfs –rm /mrnam/sample.txt
23. (HDFS) Sao chép tập tin đến đường dẫn lưu trữ HDFS.
hdfs dfs -cp /CEnetBig /mrnam
24. (HDFS) Di chuyển tập tin đến đường dẫn lưu trữ HDFS.
Lưu ý: Tạo thư mục newmrnam trước
hdfs dfs -mv /mrnam/sample.txt /newmrnam
25. (HDFS) Xóa thư mục newmrnam
hdfs dfs -rmr -r /newmrnam
26. (HDFS) Đưa dữ liệu từ HDFS về Local. Có thể dùng lệnh get để thay thế
hdfs dfs –copyToLocal /mrnam/CEnetBig /home/hduser/test
27. (Local) Kiểm tra kết quả copy CEnetBig về Local: ls -l test
28. (HDFS) Xóa hết tập tin thư mục trong đường dẫn
hdfs dfs -rm -r /mrnam
29. (HDFS) Xóa thư mục rỗng
hdfs dfs -rmdir /mrnam hoặc hdfs dfs -rmr -r /mrnam
30. (HDFS) Làm sạch thùng rác
hdfs dfs -expunge
31. (HDFS) Xem cấu trúc câu lệnh
hdfs dfs -usage mkdir
32. (HDFS) Hiện thị chương trình trợ giúp
hdfs dfs -help
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
Lab 3: MapReduce với Python
Mục tiêu:

1. Chuẩn bị

2. Thực hành Hadoop

1. Sử dụng URL để xem HUE nhằm monitor hệ thống Hadoop


http://192.168.1.51:8088/node/allApplications.
2. Tiến hành dùng ssh để di chuyển các file mapper.py, reducer.py, 4300-0.txt,
5000-8.txt, pg20417.txt lên máy ảo tại thư mục /home/hduser

3. Tạo thư mục mycode tại /home/hduser trên máy ảo


4. Sau đó di chuyển các file mapper.py, reducer.py vào mycode
5. Tiến hành phân quyền 777 cho mapper.py, reducer.py
6. Tạo thư mục mydata trên HDFS: hdfs dfs -mkdir /mydata
7. Di chuyển các file 4300-0.txt, 5000-8.txt, pg20417.txt từ máy local của máy
ảo lên thư mục mydata của HDFS
8. Tạo thư mục myresult để lưu kết quả trên HDFS
9. Kiểm tra xem đã có python trong máy chưa: ls -l /usr/bin

10. Ta kiểm tra thử môi trường Python trên máy có chạy được mapper.py và
reducer.py hay
không.
11. Kiểm tra xem đã có Hadoop stream hay chưa
12. Sử dụng Hadoop stream để chạy map-reduce đếm số từ
hadoop jar share/hadoop/tools/lib/hadoop-streaming-2.6.5.jar -files
"/home/hduser/mycode/mapper.py,/home/hduser/mycode/reducer.py" -mapper
"python
mapper.py" -reducer "python reducer.py" -input /mydata/* -output
/myresult/out-res01
Sử dụng http://localhost:50030/ để xem thống kê và thông tin của Hadoop
cluster, có thể nằm ở
port khác, kiểm tra trên log console mapreduce
13. Xem các các file kết quả được chứa thư mục chứa output lưu trữ trên HDFS
và được
đồng bộ trên tất cả các data node
14. Hiển thị kết quả đếm số từ
15. Nâng cao: Sử dụng file mapperv2.py, reducerv2.py của Python 2x để thử
nghiệm cho bài
toán word count
16. Nâng cao: Sử dụng file mapperv3.py, reducerv3.py của Python 3x để thử
nghiệm cho bài
toán word count.
BÀI TẬP MAP-REDUCE
(*) Sinh viên có thể dùng Python2x hoặc Python3x để thực hiện viết mã map-
reduce
1. Cho tập tin emp_data.csv có lược đồ (schema) như sau: mã nhân viên, tên
nhân viên, vị trí
công việc, mã người quản lý, ngày vào làm, lương, mã phòng ban
Hãy viết chương trình map-reduce để xử lý các yêu cầu sau
1. Tìm lương nhỏ nhất
2. Tìm đồng thời lương nhỏ nhất và lớn nhất
3. Tìm lương lớn nhất trên từng phòng ban
4. Hãy cho biết lương thấp nhất trên từng vị trí công việc
5. Hãy cho biết số lượng nhân viên mà mỗi mã quản lý giám sát
2. Cho tập tin social_network.csv có lược đồ (schema) như sau: mã giao dịch,
email, tên khách
hàng, thời gian giao dịch, tên sản phẩm, số lượng, trạng thái giao hàng (0 là
chưa giao hàng, 1 là
đã giao hàng)
Hãy viết chương trình map-reduce để xử lý các yêu cầu sau
1. Có tổng cộng bao nhiêu hóa đơn
2. Tính tổng số hàng hóa được bán
3. Tính xem số lượng bán hàng trên từng loại sản phẩm
4. Tính xem số lượng đơn hàng được giao và chưa được giao
5. Tính xem số lượng hàng hóa được giao và chưa được giao
6. Tính xem mỗi khách hàng theo cặp (email và tên) mua bao nhiêu hàng
7. Tính xem trung bình số hàng hóa được mua trên mỗi sản phẩm
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
Lab 4: MySQL
Mục tiêu:
 Thực hiện khai báo nguyên mẫu hàm theo yêu cầu vào ra,
 Đánh giá và cài đặt phù hợp tham số cho hàm,
 Định nghĩa và sử dụng hàm phù hợp với yêu cầu giải thuật.

1. Kiểm tra phiên bản của OS


lsb_release -a
2. Cập nhật (dùng quyền sudo)
apt-get update
3. Cài đặt gói mysql-server (dùng quyền hduser)
apt install mysql-server mysql-client -y
4. Để cấu hình cài đặt tùy chọn
mysql_secure_installation
5. Vào mysql client
mysql -u root -p
6. Xem thông tin MySQL
status;
7. Xem port mà MySQL đang chạy
show global variables like 'port';
8. Xem danh sách CSDL
show databases;
9. Tạo CSDL mang tên dbEmp
create database dbEmp;
10. Xem lại danh sách CSDL
show databases;
11. Truy cập vào CSDL dbEmp
use dbEmp;
12. Tạo bảng tblEmp trong CSDL dbEmp, với empno là khóa chính
create table tblEmp(empno int, name varchar(20),salary float,primary
key(empno));
13. Xem danh sách bảng dữ liệu
show tables;
14. Thêm dữ liệu vào tblEmp
Insert into tblEmp values(101,”Nam”,10000);
Insert into tblEmp values(102,”Binh”,9000);
Insert into tblEmp values(103,’Cuong”,12000);
Insert into tblEmp values(104,”Duy”,9000);
Insert into tblEmp values(105,”Hiếu”,12000);
15. Truy vấn dữ liệu bảng tblEmp
Select * from tblEmp;
16. Truy vấn thông tin những nhân viên có lương lớn hơn 10000
17. Truy vấn thông tin những viên tên có chữ ‘N’
18. Xem lại CSDL
Show databases;
19. Sử dụng CSDL dbEmp
Use dbEmp;
20. Xem danh sách bảng dữ liệu trong dbEmp
Show tables;

21. Thoát khỏi kết nối với MySQL


Quit
PHẦN SAO LƯU PHỤC HỒI CSDL MYSQL
22. Sao lưu dữ liệu vào file dbkemp.sql
Mysqldump -u root -p dbEmp > dbkemp.sql
(Nhập mật khẩu truy cập root của MySQL)
23. Xem file và quyền trong ổ đĩa
ls -l
24. Truy cập vào MySQL
mysql -u root -p
25. Xóa CSDL dbEmp
Drop database dbEmp;
26. Xem lại danh sách CSDL
Show databses;
27. Tạo lại CSDL dbEmpNew
Create databse dbEmpNew;
28. Thoát ra khỏi MySQL
Quit
29. Khôi lại dữ liệu vào dbEmpNew từ tập tin dbkemp.sql
Mysql -u root -p -h localhost dbEmpNew < dbkemp.sql
(Nhập mật khẩu truy cập root của MySQL)
30. Truy cập lại vào MySQL
Mysql -u root -p
31. Xem lại danh sách CSDL
Show databases;
32. Sử dụng CSDL dbEmpNew
Use dbEmpNew;
33. Hiện thị danh sách bảng
Show tables;
34. Truy vấn dữ liệu
Select * from tblEmp;
Lab 5: Sqoop
Mục tiêu:
 Khai báo mảng và thực hiện nhập xuất cơ bản,
 Thực hiện các thao tác cơ bản trên mảng như tìm kiếm, đếm, tính toán, trích
xuất,
Lab 7: Hive
Mục tiêu:
 Phân tích bài toán quy nạp,
 Xác định được phần cơ sở và phần đệ quy,
 Thực hiện được hàm đệ quy tuyến tính, nhị phân theo yêu cầu.
Lab 8: Spark
Mục tiêu:
 Khai báo kiểu dữ liệu cấu trúc phù hợp với yêu cầu,
 Truy suất thành thạo các thành phần của cấu trúc,
 Thực hiện được các thao tác cơ bản với kiểu cấu trúc.
Bài 9: Mở rộng
Mục tiêu:
 Khai báo và tính toán cơ bản trên kiểu con trỏ,
 Thực hiện các thao tác trên mảng dùng con trỏ,
Lab 10: Tổng kết
Mục tiêu:
 Khai báo mảng và thực hiện nhập xuất cơ bản,
 Thực hiện các thao tác cơ bản trên mảng như tìm kiếm, đếm, tính toán, trích
xuất,

You might also like