Quá trình thu thập dữ liệu được thực hiện trên nền tảng MapReduce của Hadoop, tất cả các bước trong quá trình thu thập dữ liệu đều được thực hiện song song trên tất cả các máy của cụm máy Hadoop. Từng máy sẽ làm các nhiệm vụ thu thập dữ liệu với các URL được phân công sau đó kết quả của quá trình thu thập dữ liệu được trộn lại với nhau bằng hàm rút gọn kết quả (reducer). Các thư mục cuối cùng của quá trình thu thập được lưu lại trên hệ thống lưu trữ phân tán HDFS.
Trước hết, việc thu thập dữ liệu trên Facebook được thực hiện qua Facebook Graph API. Ta có thể truy cập vào Facebook Graph API qua đường link sau:
https://developers.facebook.com/tools/explorer Giao diện hiện lên như hình dưới:
Hình 0.9: Giao diện làm việc của Facebook Graph API
Đăng ký một App trên bộ công cụ phát triển Facebook, ta được cấp 1 Access Token (Là mã cho phép gửi đòi hỏi tới Server. Nếu bạn đang login vào một tài khoản facebook nào đó, giá trị này sẽ được mặc định hiển thị cho tài khoản đó.), sử dụng nó để có thể truy cập vào các trang Fanpage hoặc các trang cá nhân.
Hình 0.10: Access Token của một trình Facebook Graph API
Sau đó ta thực hiện việc lấy thông tin từ các trang Facebook cần dò tìm khảo sát. Với công cụ Facebook Graph API, các lựa chọn tìm kiếm được thể hiện rõ ràng trong hình dưới:
Hình 0.11: Thu thập dữ liệu từ trang mạng của trường THPT Hoàng Văn Thụ
Tất cả các dữ liệu sau khi được Crawler lấy từ Fabook Graph API sẽ được đưa về Hadoop dưới định dạng JSON.
Khởi động Hadoop và Solr:
$ cd $HADOOP_HOME $ bin/start-all.sh $ cd $SOLR_HOME/example
$ java –jar start.jar
bắt đầu thực hiện công việc thu thập dữ liệu bằng các câu lệnh sau:
$ cd /usr/local/nutch/runtime/deploy
$ hadoop –jar apache-nutch-1.6.job
org.apache.nutch.crawl.Crawl thuthap1 –dir data –solr
http://localhost:8983/solr -depth 1
Câu lệnh này sẽ thực hiện thu thập dữ liệu từ trang web và đưa kết quả đên Solr để tạo chỉ mục ngược cho dữ liệu. Sau câu lệnh này cụm máy hadoop bắt đầu thu thập dữ liệu từ địa chỉ có trong nội dung tệp tin seed.txt. Ta có thể theo dõi quá trình thu thập dữ liệu các, công việc đang được tiến hành bằng mapReduce bằng cách truy cập địa chỉ http://localhost:50030/jobtracker.jsp:
Hình 0.12:Giao diên theo dõi quá trình làm việc của MapReduce
Để đọc thông tin trong Crawldb của Nutch ta thực hiện câu lệnh sau:
$ cd $NUTCH_HOME
$ bin/nutch readdb data/crawldb –stats
Quá trình thu thập dữ liệu của trang nhóm học sinh THPT 19-5 Hòa Bình ta có kết quả như sau:
Bảng 0.1: Kết quả thu thập dữ liệu ở 2 chế độ Chiều sâu Chế độ một máy đơn (Standalone) Chế độ phân tán ảo (pseudo distributed)