You are on page 1of 21

Họ tên: Nguyễn Huỳnh Minh Trung

MSSV: 19133061
jps

hdfs dfsadmin -report | less

Tải dữ liệu từ trang github:

wget https://raw.githubusercontent.com/drolando/CloudsLabs/master/pig/sample-
input/NETWORK_TRAFFIC/tstat-sample.txt
Exercise 1:
Kết quả được lưu trong part-r-00000
Ngoài cách lưu kết quả thực thi ra file output/ex1 thì chúng ta có dùng các hàm Describe, illustrate để
mô tả biến kết quả B hoặc Dump C để xem trực tiếp kết quả thực thi của C.

Để tiện cho việc thực thi chúng ta ta tạo file script_ex1.pig với nội dung như sau


Chuẩn bị dữ liệu trên hdfs
Kiểm tra dữ liệu bằng hdfs dfs -cat ‘đường dẫn’

Chạy file script vừa chuẩn bị:


Kết quả thực thi

Trả lời câu hỏi phần 1:

1. Lệnh GROUP BY có nhiệm vụ gom nhóm các phần tử, cấu trúc 1 nhóm là:

(giá trị dùng để nhóm, phần tử 1, phần tử 2, ….)

Map phase chỉ định khóa để nhóm, reduce phace tiếng hành quá trình grouping
2. Foreach dùng để duyệt tuần tự từng dòng dữ liệu để thực hiện các operations.
Có thể trong cả hai phase Foreach được áp dụng trong exercise này.
3. Mô tả ngắn gọn cách hoạt động của Pig:

+ Pig Latin script được biên dịch thành các MapReduce jobs và được thực thi bằng Hadoop

+ Mô hình Lazy execution được áp dụng: không có process nào được thực hiện khi xây dựng các
kế hoạch logic.

+ Tiến trịnh được được mô tả cụ thể qua các bước:

 Bước 1: Xây dựng các kế hoạch logic (biểu đồ DAG):


Trình thông dịch Pig phân tích cú pháp các lệnh (Parser)
Sau đó, nó xác minh tính hợp lệ của các files và bags (variables) đầu vào
Pig xây dựng kế hoạch logic cho từng bag (biến)
 Bước 2: Xây dựng kế hoạch thực thi cụ thể (Physical plan):

Trình biên dịch chuyển đổi các lệnh logic thành các MapReduce jobs

Tối ưu hóa

 Bước 3: Chạy jobs trên các cụm hadoop.


4. Ta có thể xác định kết quả đúng hay không bằng cách so sánh kết quả trả về khi chạy ở local
mode và khi chạy ở Mapreduce mode.
5. Mặc định có 1 reducers được sử dụng. Chúng ta có thể thay đổi số reducers mặc định bằng
lệnh sau

Hoặc chúng ta cũng có thể xác định số reducers cụ thể để chạy một tiến trình

6. Có một nguyên tắc đơn giản về số lượng mappers. Càng có nhiều file sau quá trình spit càng
có nhiều mappers  Số mapper không cố định. Chúng ta có thể giảm số lượng mappers
bằng cách cấu hình pig.maxCombinedSplitSize.

Exercise 2.
#Exercise được chạy bằng mapreduce mode
Copy file script_ex1.pig để sử dụng với tên gọi mới script_ex2.pig

Chỉ giữ lại phần load data (biến A), phần còn lại chỉnh sửa như sau
Kết quả sau khi khởi chạy

#Không có kết quả trả về về vì không có TCP nào có fqdn chứa ‘google.it’
Thử thay đổi nội dung chuỗi dùng để match

Kết quả trả về 4 đối tượng thỏa

Trả lời câu hỏi (Đã trả lời trong Exercise 1):
Mặc định có 1 reducers được sử dụng. Chúng ta có thể thay đổi số reducers mặc định bằng lệnh sau

Hoặc chúng ta cũng có thể xác định số reducers cụ thể để chạy một tiến trình

Exercise 3:
Tương tự như Exercise 2, tạo bản sao từ file script_ex2.pig với tên gọi mới script_ex3.pig và nội
dung thay đổi như hình dưới
Kết quả chạy file với mode mapreduce

Exercise 6:
Tương tự các bài trước cũng copy 1 file với tên file là script_ex6.pig và chỉnh sửa với nội dung

Kết quả sau khi thực thi với mode mapreduce


Trả lời câu hỏi:
Cách tìm được kết quả: Chạy hàm MIN
Bài học rút ra: Trường hợp tập dữ liệu có các giá trị là outliers thì chúng ta phải tách chúng ra
thành good records và bad records trước khi xử lý.
Exercise 7:
Tương tự các bài trước cũng copy 1 file với tên file là script_ex7.pig và chỉnh sửa với nội dung

 Không có sample nào mà win_min_c == 1460  Không thể tính phần trăm
Thử đổi đề thành win_min_c == 5840
 Có thể dùng số liệu này để tính  Cấu hình script_ex7.pig như hình dưới
Kết quả thực thi (25%)

Trả lời câu hỏi:


Bao nhiêu MR jobs được khởi tạo bới PIG: 2 jobs
Mặc định là 1 reducers mỗi job
Tôi không dùng từ khóa PARALLEL vì tôi giữ lại chỉ số mặc định
Exercise 8:
Tương tự các bài trước cũng copy 1 file với tên file là script_ex8.pig và chỉnh sửa với nội dung

Kết quả thực thi (Chỉ số cuối là phần trăm)

Trả lời câu hỏi


Mặc định là 1 reducers và tôi không set giá trị PARALLEL. Nếu tập dữ liệu lớn hơn thì tôi sẽ set
DEFAULT_PARALLEL giá trị lớn hơn
Exercise 9:
Tạo file script_ex9.pig với nội dung


Kết quả thực thi:

Trả lời câu hỏi:


Từ đầu ra của bài tập 9, 72,3% luồng kết nối với máy chủ tại cổng 80

You might also like