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

Tiểu luận môn Điện toán lưới và đám mây SONG SONG HÓA PHÂN ĐOẠN THU THẬP TRI THỨC TỪ DỮ LIỆU

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 (343.81 KB, 13 trang )

SONG SONG HÓA PHÂN ĐOẠN
THU THẬP TRI THỨC TỪ DỮ LIỆU
VỚI HADOOP MAPREDUCE
Học viên: Ngô Huỳnh Ngọc Phú
Giảng viên hướng dẫn: PGS. TS. Nguyễn Phi Khứ
Abstract
Ở thời đại bùng nổ thông tin hiện nay, dữ liệu thu thập hằng ngày là rất lớn. Việc xử lý lượng dữ
liệu khổng lồ này bằng các phương pháp truyền thống gặp nhiều khó khăn do giới hạn về khả năng
xử lý của các máy tính. Việc xử lý dữ liệu bằng lý thuyết tập thô đã được ứng dụng thành công vào
khai phá dữ liệu. Nền tảng MapReduce được sử dụng để phân tích dữ liệu hiệu quả. Bài này tập
trung vào việc vận dụng MapReduce để khai phá tri thức từ bảng dữ liệu với hệ thống nhiều máy
tính xử lý song song.
1. Giới thiệu
Dữ liệu thu thập thông qua các công cụ thu thập dữ liệu như cảm biến, log với nhiều kiểu
định dạng khác nhau đang tích lũy từng ngày qua năm tháng. Yêu cầu thực tế là phải xử lý lượng dữ
liệu này để khai thác được thông tin phục vụ cho việc quản lý và định hướng sản xuất kinh doanh.
Để khai thác dữ liệu hiệu quả, cần tiến hành tinh lọc, rút gọn và tập hợp được các thông tin cần thiết
cho mục đích sử dụng cụ thể.
Với lượng dữ liệu lớn, việc tổng hợp và xử lý trên một máy đơn dẫn đến các vấn đề về
không gian lưu trữ bị giới hạn, sức mạnh xử lý không đủ đáp ứng. Nền tảng MapReduce với khả
năng xử lý song song trên một nhóm các máy tính được các kĩ sư Google phát triển để có thể xử lý
những dữ liệu rất lớn.
Lý thuyết tập thô ra đời năm 1982 đã trở thành một công cụ mạnh mẽ để xử lý dữ liệu
không đồng bộ. Đặc biệt là các dữ liệu chứa các thành phần mâu thuẫn lẫn nhau.
2. Các công trình liên quan
Vào tháng 1 năm 2012 Junbo Zhang và các cộng sự đã đưa ra công trình tính toán các xấp xỉ
của tập thô trên nền tảng song song hóa [6]. Công trình đã đưa ra các thuật giải tính toán lớp tương
đương và xấp xỉ của tập thô trên các bảng quyết định. Các thuật giải này sử dụng cơ sở lý thuyết tập
thô để phân nhỏ tập dữ liệu, tiến hành xử lý trên các tập dữ liệu phân nhỏ trên từng máy tính riêng
biệt. Sau đó tổng hợp các kết quả để thu được kết quả cuối cùng. Junbo Zhang và các cộng sự cũng
đã đưa ra công trình [5] thu gọn các thuộc tính của bộ dữ liệu trước khi xử lý trên nền tảng


MapReduce.
3. Khái niệm tập thô và lớp tương đương
Hệ thống thông tin được định nghĩa bởi S = (U,A,V,f). Trong đó:
U là tập hợp xác định khác rỗng, gọi là tập vũ trụ.
A là tập hợp xác định khác rỗng các thuộc tính
V =
U
a∈ A
V
a
với V
a
là miền xác địnhcủa thuộctính a
f là hàm thông tin f: U x A → V
Trường hợp đặc biệt, S = (U, A, V, f) được gọi là bảng quyết định nếu
A=C∪ D
với C là tập
hợp các thuộc tính điều kiện và D là thuộc tính quyết định
C∩D=∅
Định nghĩa 1. Gọi
B={b
1,
b
2,
,b
n
}
là một tập con của tập thuộc tính điều kiện C. Tập hợp
thông tin xác định theo tập thuộc tính B của các phần tử
x∈U

được định nghĩa bởi:
x

B
={ f (x ,b
1
), f (x ,b
2
), , f (x , b
n
)}
Quan hệ tương đương xác định trên tập B được định nghĩa:
IND(B)={(x , y)∣(x , y)∈U x U , x

B
= y

B
}
Theo đó, hai phần tử
x , y∈U
thỏa mãn quan hệ
IND(B)
là không thể phân biệt được trên tập
thuộc tính B.
Phân hoạch các phần tử
x∈U
vào quan hệ tương đương
IND(B)
thành các lớp tương đương

được định nghĩa:
U / IND(B)=U / B={[ x]
B
∣ x∈U }
Trong đó,
[ x]
B
kí hiệu tập hợp các phần tử x với các thuộc tính trên B phân vào các lớp tương
đương.
Ví dụ 1. Bảng quyết định được thể hiện trong bảng 1. Các thuộc tính Headache, Muscle,
Temperature là thuộc tính điều kiện, Flu là thuộc tính quyết định.
Bảng 1. Bảng quyết định S
U Headache Muscle Temperature Flu
x
1
no yes high yes
x
2
yes no high yes
x
3
yes yes very high yes
x
4
no yes normal no
x
5
yes no high no
x
6

no yes very high yes
Đối tượng
x
1
được xác định bởi:
x
1
={( Headache ,no) ,( Muscle , yes) ,(Temperature , high),( flu , yes)}
Giả sử
B={Headache , Muscle }
phân hoạch của U theo tập thuộc tính B là:
U / B={{ x
1,
x
4,
x
6
},{x
2,
x
5
}, {x
3
}}
Định nghĩa 2. Cho hai tập thuộc tính
B
1
={b
11,
b12 , ,b

1m1
}
v à
B
2
={b
21,
b22 , , b
2m2
}
với
B
1,
B
2
⊆C và B
1
∩B
2
=∅
Tập thông tin của U theo
B=B
1
∪B
2
,∀ x∈U
được biểu diễn:
x

B

=
x

B
1
∪B
2
=
x

B
1
∧ x

B
2
=
〈 f (x ,b
11
), , f (x , b
1m
1
)〉∧〈 f (x , b
21
), , f (x ,b
2m
2
)〉
=
〈 f (x ,b

11
), , f (x , b
1m
1
), f (x ,b
21
), , f ( x ,b
2m
2
)〉
Ví dụ 2. (Tiếp theo ví dụ 1) Tập thông tin với
x
1
theo
B , D và B∪D
x
1 B

=〈no , yes〉
x
1D

=〈 yes〉
x
1 B∪D

=〈no , yes , yes〉
Định nghĩa 3. Giả sử
B⊆A
tập thông tin theo B với các phần tử

E∈U / B
được biểu diễn:
E
B

=x
B

, x∈E
Ví dụ 3. (Tiếp theo ví dụ 1)
E
1B

={x
1,
x
4,
x
6
}=〈no , yes〉
E
2B

={x
2,
x
5
}=〈 yes ,no〉
E
1B


={x
3
}=〈 yes , yes〉
Định nghĩa 3. Gọi phân hoạch của U theo tập thuộc tính B :
U / B={E
1,
E
2,
, E
m
}
phân hoạch
của U theo tập quyết định D:
U / D={D
1,
D
2,
, D
n
}
∀ E
i
∈U / B ,∀ D
j
∈U / D
độ chính xác, độ bao phủ của luật
E
i
→ D

j
được xác định bởi
Độ chính xác:
Acc(D
j
∣E
i
)=
∣E
i
∩D
j

∣E
i

Độ bao phủ:
Cov( D
j
∣E
i
)=
∣E
i
∩D
j

∣D
j


Ví dụ 4. (tiếp theo ví dụ 3)
D
1
=〈no 〉
D
2
=〈 yes〉
Độ chính xác và độ bao phủ của :
E
1
→ D
1
Acc( D
1
∣E
1
)=
∣E
1
∩D
1

∣E
1

=
∣x
1

∣x

1,
x
4,
x
6

=
1
3
Cov(D
1
∣E
1
)=
∣E
1
∩D
1

∣D
j

=
∣x
1

∣x
4,
x
5


=
1
2
Định nghĩa 4.
∀ E
i
∈U / B ,∀ D
j
∈U / D với i∈[1,m] , j ∈[1,n]
Thu thập luật từ bảng quyết định
được thực hiện thông qua các phương án sau:
Phương án 1.[5] Nếu
Acc(D
j
∣E
i
)=1
thì luật
E
i
→ D
j
là chắc chắn với độ bao phủ
Cov(D
j
∣E
i
)=1
Phương án 2.[5] Nếu

Acc( D
j
∣E
i
)>α và Cov( D
j
∣E
i
)>β
thì luật
E
i
→ D
j
là luật xác suất với
α∈(0.5,1)và β∈(0,1)
4. Hadoop và nền tảng MapReduce
Hadoop, một dự án phần mềm quản lý dữ liệu Apache với phần lõi là nền tảng MapReduce
của Google, được thiết kế để hỗ trợ các ứng dụng sử dụng đươc số lượng lớn dữ liệu cấu trúc và phi
cấu trúc. Hadoop được thiết kế để làm việc với nhiều loại dữ liệu nguồn. Hadoop gồm 2 phần cơ
bản: YARN (MapReduce framework) và HDFS (hệ thống lưu trữ phân tán). Việc xử lý thông qua
Hadoop được phân thành các công việc nhỏ hơn, dữ liệu đầu vào cũng được chia thành các gói nhỏ
hơn được lưu trữ phân tán.
4.1 Cài đặt Hadoop
Hadoop chạy trên nền máy áo JAVA® do vậy Hadoop hỗ trợ nhiều hệ điều hành khác nhau.
Kể từ phiên bản Hadoop 2.x, Hadoop đã hỗ trợ hệ điều hành Windows từ lõi. Hadoop được thiết kế
để kết hợp hệ thống rất nhiều máy chủ thông qua hạ tầng mạng với lưu ý tối đa hóa khả năng xử lý
CPU và tối thiểu hóa lưu lượng network phát sinh khi xử lý và luân chuyển dữ liệu.
Về hạ tầng, cần chuẩn bị các máy chủ (vật lý hoặc ảo hóa) gọi là node và hệ thống network
liên kết các node cũng như danh sách IP cấp cho các node. Hadoop điều khiển các node thông qua

tên node (giống với tên miền) nên cần chuẩn bị:
+ Hệ thống phân giải tên miền tập trung (DNS Server) cho hệ thống
+ Danh sách <IP> <tên node> để cập nhật tập tin phân giải:
+ Linux: /etc/hosts
+ Windows: %SystemRoot%\System32\drivers\etc\hosts
Hadoop có thể cấu hình toàn bộ trên 1 node duy nhất để thử nghiệm. Trong thực tế, các node được
cài đặt trên các server khác nhau. Phần tiếp theo trình bày việc cài đặt theo hướng thứ 2: Cluster
Setup. Phiên bản Hadoop cài đặt: 2.6.0. Hệ điều hành Linux, môi trường JAVA OpenJDK version
1.7.x. Trên các hệ điều hành Linux khác, các bước cài đặt tiến hành tương tự, chỉ khác về vị trí file
cấu hình hệ thống.
Bảng 2. Cấu hình 1 máy ảo
Hệ điều hành Debian Whezzy 7.8 32-bit PAE
CPU 1 vCPU
RAM 1 GB
HDD SSD 10GB (thin)
Tổng quan, việc cấu hình được phân thành các bước với trình tự như sau:
+ Cấu hình hệ thống:
+ IP, phân giải tên node
+ JAVA, môi trường và thông số chạy JAVA
+ SSH đăng nhập không dùng mật khẩu giữa node master và slave
+ Cấu hình Hadoop: toàn bộ trong thư mục etc/hadoop/. Phần này thực hiện 2 nhóm công việc
+ Cấu hình nền tảng lưu trữ HDFS: Name Node, Secondary NameNode, Data Node
+ Cấu hình nền tảng tính toán YARN: Resource Manager, Node Manager, Job History
Với HDFS, hệ thống server gồm 1 node master: Name Node, 1 node hoặc nhiều node slave:
DataNode (node lưu trữ)
Name Node: Quản lý các tác vụ với file như mở, đóng, thay đổi tên file hoặc thư mục. Name Node
không trực tiếp lưu trữ file. Name Node chỉ lưu trữ các thuộc tính và block của file và node nào
đang lưu trữ. Name Node cũng quản lý việc lưu trữ dự phòng (replication) các file trên các Data
Node.
Secondary Name Node: tự động đồng bộ hóa với Name Node và thay thế Name Node trong trường

hợp Name Node gặp sự cố. Secondary Name Node thường xuyên lưu trữ các bản snapshot của
Name Node. Cài đặt thử nghiệm có thể khởi động Secondary Name Node trên cùng 1 node với
Name Node.
Data Node: đây là node lưu trữ trực tiếp dữ liệu. Data Node kết nối với Name Node để thông báo
các block file đang lưu trữ và khởi động dịch vụ cho phép thay đổi nội dung. Chương trình thực thi
sẽ trao đổi dữ liệu trực tiếp với các Data Node. Data Node sẽ thường xuyên cập nhật trạng thái của
mình cho Name Node.
Với YARN: hệ thống server gồm 1 node master: Resource Manager, 1 hoặc nhiều node
slave: Node Manager (node tính toán) và 1 node Job History
Resource Manager: quản lý trạng thái các MapReduce job đang thực thi hoặc được lên lịch trình.
Resource Manager theo dõi các trạng thái các job này, thay thế job trên các node bị lỗi.
Node Manager: là node trực tiếp thực hiện việc tính toán và chạy đoạn chương trình MapReduce,
sắp xếp kết quả. Node Manager liên tục cập nhật thông tin về trạng thái job thực thi với Resource
Manager. Trong trường hợp Node Manager bị lỗi, không gửi thông tin trạng thái đúng hạn, node
này sẽ được Resource Manager thay thế bởi node khác để thực hiện lại việc tính toán.
Cấu trúc thư mục của Hadoop cho phép các node khác nhau đọc các file cấu hình khác nhau
trong cùng một thư mục. Do đó, thư mục này hầu hết giống nhau trên tất cả các node (khác file cấu
hình master/slave). Việc một node khởi động với vai trò gì tùy thuộc vào câu lệnh của quản trị viên.
Cấu hình hệ thống
Danh sách IP sử dụng:
IP Tên node Vai trò
192.168.56.21 mood1name Name Node
192.168.56.22 mood2data Data Node
192.168.56.23 mood3resourceM Resource Manager
192.168.56.24 mood4nodeM Node Manager
192.168.56.25 mood5History Job History
Cấu hình file /etc/hosts trên các server:
192.168.56.21 mood1name
192.168.56.22 mood2data
192.168.56.23 mood3resourceM

192.168.56.24 mood4NodeM
192.168.56.25 mood5History
Cài đặt JAVA:
apt-get install ssh rsync openjdk-7-jre-headless openssh-server openssh-
client
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386" >> ~/.bashrc
logout
SSH đăng nhập không sử dụng mật khẩu:
SSH được sử dụng để các node master (Name Node và Resource Manager) có thể khởi động
dịch vụ trên các máy khác. Quản trị viên chỉ cần khởi động dịch vụ trên các node này. Việc sinh key
RSA đăng nhập không dùng mật khẩu được thực hiện trên node master và copy các public key lên
các máy slave: Data Node và Node Manager
Trên tất cả các máy:
ssh-keygen -t rsa
Trên Name Node:
cat ~/.ssh/id_rsa.pub root@mood2data 'cat >> ~/.ssh/authorized_keys2'
# Thay mood2data bằng tên các slave node còn lại của HDFS
Trên Resource Manager:
cat ~/.ssh/id_rsa.pub root@mood4nodeM ' cat >> ~/.ssh/authorized_keys2'
# Thay mood4nodeM bằng tên các slave node còn lại của YARN
Cấu hình Hadoop
Bộ thực thi Hadoop được tải về và cài đặt vào thư mục: /home/hadoop
VER=2.6.0
mkdir /home/hadoop
cd /home/hadoop
wget />$VER.tar.gz
tar xvf hadoop-$VER
Các file cấu hình Hadoop được lưu trong thư mục etc/hadoop là thư mục con của thư mục giải nén
hadoop. Trong trường hợp này, đường dẫn tuyệt đối là : /home/hadoop/hadoop-2.6.0/etc/hadoop/
Cấu trúc file 1 file cấu hình:

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data</value>
</property>
<property>

</property>

</configuration>
Mỗi file cấu hình có 1 cặp thẻ <configuration> duy nhất, bên trong có thể có 1 hoặc nhiều thẻ
<property>. Trong mỗi thẻ <property> gồm 1 cặp <name> và <value> thể hiện tên thuộc tính và
giá trị thuộc tính cấu hình.
Mỗi dịch vụ của Hadoop sử dụng 1 file cấu hình khác nhau:
Cấu hình tổng quát
etc/hadoop/core-site.xml
fs.default.name hdfs://192.168.56.21:
8020
host:port Địa chỉ Name Node HDFS
Cấu hình nền tảng lưu trữ HDFS
etc/hadoop/hdfs-site.xml
dfs.namenode.name.dir /home/hadoop/data
Thư mục lưu trữ meta-data file của
Name Node
dfs.datanode.data.dir /home/hadoop/data
Thư mục lưu trữ các file thực của
Hadoop trên các Data Node
fs.defaultFS hdfs://mood1name/
Thay mood1name bằng tên node master
(Name Node)

dfs.blocksize 67108864
64MB block
dfs.replication 1
Số lượng copy của các file dữ liệu
Để Hadoop tự động khởi động dịch vụ trên các Data Node, cần cài đặt tên các DataNode vào file
etc/hadoop/slaves
mood2data
Chuyển vào thư mục cài đặt Hadoop và khởi động HDFS:
cd /home/hadoop/hadoop-2.6.0
./sbin/start-dfs.sh
Kiểm tra các dịch vụ đã khởi động hay chưa bằng câu lệnh:
jps
Trên Name Node, sau khi chạy jps:
Jps
SecondaryNameNode
NameNode
Trên Data Node, sau khi chạy jps:
Jps
DataNode
Sau khi chạy, HDFS có thể truy cập quản lý thông qua địa chỉ: http://mood1name: 50070/
Trong lần chạy đầu tiên, cần tiến hành format HDFS, trên Name Node :
./bin/hdfs namenode -format
Cấu hình nền tảng tính toán
etc/hadoop/yarn-site.xml
yarn.nodemanager.local-
dirs
/home/hadoop/data
Thư mục lưu trữ tạm dữ liệu trên
các Node Manager trước khi gửi
xuống HDFS

yarn.resourcemanager.hostn
ame
mood3ResourceM
Tên node của Resource Manager
yarn.resourcemanager.resou
rce-tracker.address
mood3ResourceM:8025
host:port của Resource Manager
các Node Manager sẽ connect đến
yarn.resourcemanager.sched
uler.address
mood3ResourceM:8030
yarn.nodemanager.aux-
services
mapreduce_shuffle
Shuffle Service cần thiết để chạy
MapReduce
etc/hadoop/mapred-site.xml
mapreduce.framework.name yarn
mapreduce.jobhistory.inter
mediate-done-dir
/home/hadoop/data/tmp
mapreduce.jobhistory.done-
dir
/home/hadoop/data/done
mapreduce.cluster.temp.dir /home/hadoop/data/tmp-
cluster
mapreduce.cluster.local.di
r
/

home/hadoop/data/local
-cluster
Tương tự như phần cấu hình HDFS, để Hadoop tự động khởi động dịch vụ trên các Node Manager,
cần cài đặt tên các Node Manager vào file etc/hadoop/slaves
mood4nodeM
Chuyển vào thư mục cài đặt Hadoop và khởi động YARN:
cd /home/hadoop/hadoop-2.6.0
./sbin/start-yarn.sh
Kiểm tra trên Resource Manager:
ResourceManager
Jps
Kiểm tra trên Node Manager:
NodeManager
Jps
Sau khi chạy, HDFS có thể truy cập quản lý thông qua địa chỉ: http://mood3ResourceM: 8088/
4.2 Cấu trúc chương trình Hadoop
Map: Nhận vào cặp dữ liệu gồm khóa và dữ liệu được phân nhỏ từ tập dữ liệu ban đầu. Đầu ra là
các bộ key-value(s) trung gian đã được sắp xếp theo cùng key. Kết xuất đầu ra của Map là các key
khác nhau, kèm với đó là tập các value của key tương ứng.
Combine (tùy chọn): thực hiện Reduce cục bộ trước khi được gom nhóm tổng hợp các kết quả. Đầu
vào là các key và tập các value. Combine sẽ rút gọn các value giống nhau để tạo ra bộ value có thể
nhỏ hơn.
Reduce: Nhận vào các key và bộ value trung gian từ Map. Reduce sẽ rút gọn các value và trả về
(thường là 1 hoặc 0) value đầu ra.
Map: (k1, v1)

list(k2, v2)
Group: MapReduce nhóm các key trung gian trước khi truyền cho Reduce
Reduce: (k2, list(v2))


(k3, v3)
Cấu trúc chương trình Hadoop [2]
Cài đặt thuật giải lên Hadoop
Lấy ví dụ minh họa bằng chương trình mẫu WordCount có trong Hadoop:
Yêu cầu bài toán:
+ Input: File văn bản.
+ Output: Danh sách các từ kèm số lần xuất hiện các từ này
Thuật giải:
Bước 1 - Split: Chia nhỏ dữ liệu đầu vào thành các document nhỏ
Bước 2 - Map: Với mỗi document đầu vào, xuất ra các cặp key-value. Trong đó, key là từng
từ xuất hiện trong document, value=1.
Bước 3 – Group: Nhóm các key từ Bước 2 lại, value là danh sách các value=1
Bước 4 – Reduce: Tính tổng các value đầu vào và xuất ra cặp key-value là từ và số lần xuất
hiện của từ này trong toàn bộ file văn bản.
Một chương trình chạy trên Hadoop cần chuẩn bị qua 3 bước như sau:
+ Viết thuật giải bằng ngôn ngữ Java, sau đó biên dịch và đóng gói thành file jar.
+ Copy dữ liệu Input vào HDFS
+ Chạy chương trình và lấy dữ liệu từ HDFS ra.
Giả sử chương trình đã được chuẩn bị xong, tiến hành các bước sau để biên dịch:
Tạo thư mục program trong thư mục cài đặt Hadoop:
cd /home/hadoop/hadoop-2.6.0
mkdir program
Tạo file chương trình và biên dịch, đóng gói:
cd program
vi WordCount.java
javac -classpath ` /bin/yarn classpath` -Xlint:deprecation -d .
WordCount.java
jar cf WordCount.jar WordCount*.class
Download dữ liệu văn bản vào thư mục program/wordcount. Copy dữ liệu vào Hadoop:
cd /home/hadoop/hadoop-2.6.0

./bin/hdfs dfs -mkdir /user
./bin/hdfs dfs -mkdir /user/hadoop
./bin/hdfs dfs -put ./program/wordcount /user/hadoop/wordcount/input
Chạy chương trình với Hadoop:
cd /home/hadoop/hadoop-2.6.0
./bin/hadoop jar program/WordCount.jar WordCount
/user/hadoop/wordcount/input /user/hadoop/wordcount/output
Xem kết quả trả về:
./bin/hadoop fs -cat /user/hadoop/wordcount/output/part-r-00000
Chương trình WordCount:
Chương trình viết với Hadoop sử dụng các bộ thư viện đi kèm Hadoop và các kiểu dữ liệu
chuyên biệt cho tính toán song song như: Text thay cho String, IntWritable thay cho Int v.v Mỗi
công đoạn Map/Combine/Reduce có một lớp thực thi riêng, các kiểu dữ liệu đầu vào/đầu ra tuân thủ
theo nguyên tắc phù hợp ( kiểu dữ liệu output của Map giống với input của Reduce).
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{
Theo đó: <Object,Text> là kiểu dữ liệu đầu vào của Map và <Text, IntWritable> là kiểu dữ
liệu ra sau khi thực hiện Map.
public static class IntSumReducer
extends Reducer<Text,IntWritable,Text,IntWritable> {
Theo đó: <Text, IntWritable> là kiểu dữ liệu đầu vào của Reduce và <Text, IntWritable> là
kiểu dữ liệu đầu ra (kết quả) sau khi thực hiện Reduce.
Trong mỗi lớp, cần cài đặt thủ tục phù hợp để Hadoop gọi từ bên ngoài:
+ Map:
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
+ Combine/Reduce:
public void reduce(Text key, Iterable<IntWritable> values, Context context
) throws IOException, InterruptedException {
+ Trong mỗi thủ tục, để xuất kết quả sử dụng:

context.write(<key>, <value>);
Minh họa chương trình WordCount [2]
5. Ứng dụng MapReduce thu thập tri thức từ dữ liệu
Thuật giải được thực hiện qua 2 bước:
Bước 1: Tính toán song song với MapReduce lực lượng các lớp tương đương E, lớp quyết
định D và lớp kết hợp
E∩D
theo từng cặp key-value.
1.1 Việc tính toán được thực hiện trên từng dòng dữ liệu key-value
1.2 Kết hợp key-value giống nhau bằng Combine
1.3 Rút gọn các key-values bằng Reduce để rút ra lực lượng các lớp tương đương.
Bước 2: Kết quả tính toán lực lượng lớp tương đương được sử dụng để tính toán tuần tự
2.1 Độ chính xác:
E
i
→ D
j
: Acc( D
j
∣E
i
)=
∣E
i
∩D
j

∣E
i


2.2 Độ bao phủ:
E
i
→ D
j
:Cov( D
j
∣E
i
)=
∣E
i
∩ D
j

∣D
j

2.3 Chọn/loại bỏ luật theo phương án 1 nếu không chọn được xét phương án 2 đã
trình bày ở mục 3.
Kiểm tra tính đúng đắn: Chạy thử nghiệm trên bộ dữ liệu ở Bảng 1
Với
α=0.8 vàβ=0.65, B={headache ,muscle }
kết quả thu được:
Rules Acc Cov
#1:yes,no->high 1.00 0.67
#1:yes,yes->veryhigh 1.00 0.50
Với
α=0.8 vàβ=0.65, B={headache ,temperature }
kết quả thu được:

Rules Acc Cov
#1:no,veryhigh->veryhigh 1.00 0.50
#1:no,normal->normal 1.00 1.00
#1:yes,veryhigh->veryhigh 1.00 0.50
#1:yes,high->high 1.00 0.67
#1:no,high->high 1.00 0.33
6. Tài liệu tham khảo
[1] Khu Phi Nguyen – Cloud Computing Session II.1 – May 2015
[2] G Hima Bindu , Y. Satish Kumar - Word Count Map-Reduce Job in Single Node Apache
Hadoop Cluster - International Journal of Modern Trends in Engineering and Research (IJMTER)
Volume 02, Issue 05, [May– 2015] ISSN (Online):2349–9745
[3] Mirek Riedewald - CS 6240: Parallel Data Processing in MapReduce - Lecture 1
[4] Varda C. Dhande, B.V. Pawar - A Survey on Parallel Method for Rough Set using MapReduce
Technique for Data Mining - International Journal of Science and Research (IJSR) ISSN (Online):
2319-7064 - 2013
[5] Junbo Zhang, Tianrui Li, Yi Pan - Parallel Rough Set Based Knowledge Acquisition Using
MapReduce from Big Data - BigMine ’12, August 12, 2012 Beijing, China
[6] Junbo Zhang, Tianrui Li, Da Ruan, Zizhe Gao, Chengbing Zhao - A parallel method for
computing rough set approximations - Information Sciences 194 (2012) 209–223
[7] Junbo Zhang,Tianrui Li, Yi Pan PLAR: Parallel Large-scale Attribute Reduction on Cloud
Systems
[8] Install Hadoop 2.x on Windows < >
[9] Hadoop Cluster Setup < />common/ClusterSetup.html >

×