Apache Solr

Apache Solr là gì?

Apache Solr là một platform mã nguồn mở cung cấp chức năng tìm kiếm (http://lucene.apache.org/Apache Solr/), là một trong mười ứng dụng nguồn mở tốt nhất năm 2010 do infoWolrd trao (BOSSIE awardfor the Best of Open Source Software).

Khi bạn muốn xây dựng một trang tìm kiếm cho trang web của bạn hay đặc biệt là khi bạn muốn làm một trang tìm kiếm chuyên biệt (như tìm nhạc, tìm phim, tìm việc, …) thì Apache Solr chính là cái mà bạn cần.

Tại sao lại dùng Apache Solr?

Khi các bạn làm một trang search thường các bạn sẽ dùng tính năng Fulltext search của CSDL, hay cũng có bạn dùng Google Custom Search cho trang web của mình. Cả hai cách đều có thể thực hiện được khá nhanh. Tuy nhiên nó đều có những nhược điểm không thể bảo qua:

Với SQL search:

Chất lượng kết quả tìm kiếm rất tệ, nó thường trả về những kết quả đầu tiên mà nó thấy chứ không phải những kết quả tốt nhất, những thứ mà người dùng muốn tìm.
Tốc độ tìm kiếm rất chậm đặc biệt với CSDL lớn hay là có nhiều người dùng. CSDL không phải được thiết kế để tìm kiếm nên nó chậm là điều hiển nhiên.
Nó còn thiếu rất nhiều tính năng khác mà sẽ được đề cập đến trong phần sau, hầu hết các tính năng cần phải có của một trang tìm kiếm.

Google Custom Search:

Dùng GCS, chỉ phát huy khi Google index tất cả các thông tin của bạn một cách kịp thời, điều mà chỉ có bởi một số ít trang web có Rank cao
Google không biết các thông tin dữ liệu khác của bạn, ngoài các ký tự được đưa lên web ví dụ như public date, category, … Vì vậy người dùng không thể lọc kết quả tìm kiếm theo các trường đó, sắp xếp, thống kê. Các tính năng này đặc biệt hữu ích cho người dùng để tìm đúng kết quả họ cần vì không phải lúc nào bộ máy tìm kiếm có thể trả về kết quả chính xác ngay lập tức dựa vào một câu truy vấn.

Các tính năng và ứng dụng của Apache Solr

Cho phép highlighting kết quả tìm kiếm, như cách mà google hiện thị thông tin tóm tắt về kết quả mà ở đó câu truy vấn được in đậm

Hỗ trợ rất nhiều cú pháp tìm kiếm, hỗ trợ nhiều kiểu đầu ra Json, XML, PHP, … cho phép Apache Solr có thể tích hợp với một ứng dụng web một cách đơn giản

Cho phép scale hệ thống một cách dễ dàng khi bạn có một lượng lớn dữ liệu mà không đủ chứa trên một máy chủ hay phải phục vụ rất nhiều người dùng đồng thời.

Có thể xây dựng rất nhiều ứng dụng khác mà một trang tìm kiếm cần như: autosuggestion, spellchecking, xây dựng tagcloud, phân loại kết quả clustering (như Bing làm), trending keywords, category navigation, các kết quả liên quan, nhóm kết quả (field collapsed) …

Faceting: dùng cho mục đích navigation, lọc kết quả tìm kiếm dễ dàng

Apache Solr cũng có thể dùng như CSDL NoSQL hay như cache layer, dùng cho các listing cần performance tốt.

Apache Solr cũng sắp hỗ trợ realtime cho phép tìm kiếm ngay kết quả sau khi index. Điều nàyđặc biệt khó khi index rất lớn. Hiện tại Apache Solr cho phép kết quả rât nhanh, nhưng phải hy sinh thời gian index. Với dữ liệu lớn có khi bạn phải mất 30 phút chỉ để cập nhật được một tài liệu.

Apache Solr hỗ trợ rất nhiều công cụ để tinh chỉnh kết quả tìm kiếm, bằng tất cả các thông tin mà bạn cung cấp làm sao để kết quả trả về là tốt nhất. Ví dự như đánh trọng số các trường, click log, số lượt view, …

Tìm hiểu hệ thống file HDFS và các thao tác đọc ghi dữ liệu

I. Hệ thống file HDFS

Cũng giống như hệ thống file của Linux. Mỗi user Linux sẽ được cấp cho một thư mục dữ liệu riêng nằm trong /user/

Để quản lý HDFS thông qua user hdfs (tương tự root trên Linux) với lệnh sau:

1
sudo -u hdfs hadoop <command>

II. Code read/write dữ liệu hỗ trợ HDFS và local files

Cách đọc dữ liệu trên local hoặc hệ thống HDFS (chạy song song).


Xem chi tiết Hadoop Command

Hadoop Command System

Danh sách các command trên Hadoop System:

Apache Nutch

Nutch là 1 chương trình mã nguồn mở,cho phép người dùng tự xây dựng 1 Search Engine như Google của riêng mình. Nó cho ta thấy quá trình crawling, fetchingindexing trang web thế nào.

Hadoop ban đầu được xây dựng cơ sở hạ tầng cho dự án Apache Nutch, thu thập dữ liệu web và xây dựng một chỉ số công cụ tìm kiếm cho các trang thu thập thông tin. Cả hai HadoopNutch là một phần của dự án Apache Lucene.

MÔ HÌNH HOẠT ĐỘNG CỦA APACHE NUTCH

Apache Nutch

Mô hình hoạt động của Apache Nutch

Phiên bản hiện tại của Apache Nutch gồm 1.5.12.0

- Apache Nutch 1.5.1: Có thể chạy StandAlone hoặc trên hệ thống Hadoop Cluster. Khi chạy StandAlone thì tốc độ tổng hợp dữ liệu sẽ chậm dần khi dữ liệu tăng lên. Trên hệ thống Hadoop Cluster sẽ tận dụng đuợc khả năng Map/Reduce tốc độ thực thi sẽ nhanh hơn.

- Apache Nutch 2.0: Đuợc thiết kế triển khai thu thập dữ liệu lớn sử dụng Storage Abstraction (thông qua Apache Gora™) với các hệ thống lưu trữ Apache Accumulo™, Apache Avro™, Apache Cassandra™, Apache HBase™, HDFS™.

PS: Storage Abstraction là lớp dữ liệu được định nghĩa chung dùng để giao tiếp với các hệ thống lưu trữ dữ liệu.

HƯỚNG DẪN SỬ DỤNG APACHE NUTCH

Ở đây ta sẽ sử dụng Apache Nutch phiên bản Apache Nutch 1.5.1. Phiên bản này dễ dàng chạy thử nghiệm được ngay để ta có thể dễ dàng thấy đuợc cách hoạt động của Apache Nutch 1.5.1.

1. Lần đầu sử dụng Apache Nutch

Download Apache Nutch 1.5.1 về

1
2
3
wget -c http://mirrors.digipower.vn/apache/nutch/1.5.1/apache-nutch-1.5.1-bin.tar.gz
tar xvzf apache-nutch-1.5.1-bin.tar.gz
cd apache-nutch-1.5.1

Tạo folder chứa danh sách các site cần crawl về. Ở đây ta sẽ crawl dữ liệu trên trang HadoopVietnam.

1
2
mkdir urls
echo "http://hadoopvietnam.com" > urls/seed.txt

Bắt đầu chạy crawl dữ liệu.

1
bin/nutch crawl urls -dir nutchdb -depth 2 -topN 10

Giải thích các tham số:

urls: Thư mục chứa link các site cần crawl.
-dir nutchdb: Thư mục nutchdb chứa dữ liệu crawl về.
-depth 2: Mức độ crawl sâu bao nhiêu level.
-topN 10: Số link crawl trong một level.

Như trên ta sẽ crawl 20 link trên site HadoopVietnam.

2. Viết plugins cho Apache Nutch

3….

n….. Giải pháp sử dụng Apache Nutch trong dự án timraovat.com

 

Xây dựng môi trường chạy thử nghiệm Hadoop

Hướng dẫn cách cài đặt và chạy thử nghiệm môi trường Hadoop trên local (Single Node) Ubuntu Linux

Hadoop một framework viết trên nền Java chạy trên các ứng dụng trên hệ thống cụm máy chủ lớn với các tính năng của Google File System  và  MapReduce.

Hệ thống thử nghiệm được xây dựng trên:

Khi dùng CDH bạn chỉ cần cài đặt một cách đơn giản là có thể được một hệ thống thử nghiệm.

I. Download file sau về cài đặt trên hệ thống

1
2
3
4
5
wget -c http://archive.cloudera.com/cdh4/one-click-install/lucid/amd64/cdh4-repository_1.0_all.deb

sudo dpkg -i Downloads/cdh4-repository_1.0_all.deb

curl -s http://archive.cloudera.com/cdh4/ubuntu/lucid/amd64/cdh/archive.key | sudo apt-key add -

Việc trên là để bạn có thể dùng repository của Cloudera và dùng lện apt-get để cài đặt Hadoop.

II. Cài đặt Hadoop Pseudo-distributed mode (Chạy trên một máy)

1
2
3
sudo apt-get update

sudo apt-get install hadoop-0.20-conf-pseudo

Sau khi cài lệnh trên có tất cả 5 Hadoop daemons: namenode, jobtracker, secondarynamenode, datanode và tasktracker được chạy cho hệ thống Hadoop.

Để kiểm tra xem các gói Hadoop được cài đặt ở đâu bạn dùng câu lệnh:

1
dpkg -L hadoop-0.20-conf-pseudo

PS: Tất cả cấu hình hiện tại được lưu tại /etc/hadoop/conf.pseudo.mr1 và HADOOP_HOME sẽ là /usr/lib/hadoop-0.20-mapreduce

Để chạy được hệ thống Hadoop cần làm các bước sau:

1: Format the NameNode.

Khi mới chạy hệ thống Hadoop lần đầu tiên, chúng ta cần phải format HDFS (như format ổ cứng để cài đặt Windows)

1
sudo -u hdfs hdfs namenode -format

2: Start HDFS

Để chạy Hadoop ta cần phải chạy namenode, secondarynamenode, datanode

1
2
3
4
5
/etc/init.d/hadoop-hdfs-namenode start

/etc/init.d/hadoop-hdfs-datanode start

/etc/init.d/hadoop-hdfs-secondarynamenode start

Sau khi start các service thành công. Vào website theo địa chỉ http://localhost:50070/ để xem Hadoop chạy okie không. Nếu không vào được http://localhost:50070/ thì các bước cài đặt trên đã gặp vấn đề.

3: Create the /tmp Directory

Tạo /tmp folder và set permissions. Dùng để cho các dịch vụ chạy Hadoop chạy dịch vụ (VD: JobTracker …)

1
2
3
sudo -u hdfs hadoop fs -mkdir /tmp

sudo -u hdfs hadoop fs -chmod -R 1777 /tmp

4: Create the MapReduce system directories

Tạo thư mục hệ thống dùng để chạy Hadoop. Nếu không làm bước này thì hệ thống MapReduce sẽ không hoạt động

1
2
3
4
5
6
7
8
9
sudo -u hdfs hadoop fs -mkdir /var
sudo -u hdfs hadoop fs -mkdir /var/lib
sudo -u hdfs hadoop fs -mkdir /var/lib/hadoop-hdfs
sudo -u hdfs hadoop fs -mkdir /var/lib/hadoop-hdfs/cache
sudo -u hdfs hadoop fs -mkdir /var/lib/hadoop-hdfs/cache/mapred
sudo -u hdfs hadoop fs -mkdir /var/lib/hadoop-hdfs/cache/mapred/mapred
sudo -u hdfs hadoop fs -mkdir /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
sudo -u hdfs hadoop fs -chmod 1777 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
sudo -u hdfs hadoop fs -chown -R mapred /var/lib/hadoop-hdfs/cache/mapred

5: Start MapReduce

1
2
/etc/init.d/hadoop-0.20-mapreduce-jobtracker start
/etc/init.d/hadoop-0.20-mapreduce-táktracker start

Sau khi chạy các service trên. Chúng ta có thể theo dõi các job hoạt động thông qua địa chỉ http://localhost:50030/

6: Create User Directories

Tương ứng với mỗi user trên hệ thống Linux bạn nên tạo tương ứng thư mục trên HDFS. Ở đây là khi bạn login vào Linux bằng user root. Thư mục trên HDFS cũng được phần quyền y như trên hệ thống Linux.

1
2
sudo -u hdfs hadoop fs -mkdir /user/root
sudo -u hdfs hadoop fs -chown root /user/root

Sau này để sử dụng HDFS dưới một user Linux là root.

Tạo thư mục mới urls thì chỉ cần dùng đơn giản

1
hadoop fs -mkdir urls

Kiểm tra danh sách file và folder trên HDFS trong /user/root

1
hadoop fs -ls

Với các bước trên là bạn đã có một hệ thống HDFS sẵn sàng cho công việc tìm hiểu và nghiên cứu.

III. Chạy thử hệ thống MapReduce

Các bước sau đây là chạy trên user root của hệ thống Linux

Tạo thư mục inputtrên HDFS và copy các file XML cấu hình của Hadoop và đó để làm dữ liệu tiến hành Map và Reduce

1
2
3
hadoop fs -mkdir input
hadoop fs -put /etc/hadoop/conf/*.xml input
hadoop fs -ls input

Chạy thử Mapreduce với input là đầu vào dữ liệu và output là dữ liệu sau khi đã Map và Reduce

1
hadoop jar /usr/lib/hadoop-0.20-mapreduce/hadoop-examples.jar grep input output 'dfs[a-z.]+'

Kiểm tra đầu ra dữ liệu

1
hadoop fs -ls output

 

Vậy là bạn đã hoàn thành xây dựng môi trường chạy thử nghiệm Hadoop.

 

Xem bài viết trên Cloudera

P/S: Bạn cũng có thể cài đặt sử dụng gói được cung cấp bởi Apache Hadoop và làm theo hướng dẫn tại đây. Khá rắc rối cho những người chưa quen hệ thống Linux.

Cloudera Enterprise Free Edittion CDH 4.0 và Cloudera

Giới thiệu về CDH và Cloudera

CDH là hệ thống xây dựng trên mã nguồn mở Hadoop do Cloudera phân phối, xây dựng đặc biệt để đáp ứng nhu cầu doanh nghiệp.

Đặc biệt Cloudeara cung cấp công cụ Cloudera Manager Free Edition dùng để xây dựng và cấu hình một hay nhiều node CDH của bạn và giúp bạn quản lý các thay đổi các tính năng của hệ thống một cách trực quan thống qua giao diện website. Phần mềm này là miễn phí để sử dụng đến 50 node và không có giới hạn tính năng.

Demo Cloudera Enterprise Free Edittion

Sử dụng Cloudera Manager Free Edition khi thiết lập xong các cấu hình bạn có thể hiểu thêm về cách thức cấu hình và cài đặt hệ thống Hadoop nhanh hơn là tự mình mày mò cấu hình, rất hữu ích.

Cloudera Company là một trong những công ty hàng đầu cung cấp giải pháp xây dựng hệ thống trên Hadoop

Startup: Dự án timraovat.com

Triển khai phiên bản Alpha dự án timraovat.com – Search Engine tìm kiếm tin rao vặt

Công nghệ sử dụng:

+ Apache Nutch: Dùng để crawl dữ liệu của các trang web

+ Apache Solr: Search Engine dùng để tìm kiếm sản phẩm

 

Hadoop Vietnam issues and solutions

Nghiên cứu và xây dựng hệ thống sử dụng Hadoop Map/Reduce, Apache Nutch, Apache Solr

1
2
3
4
5
public class HadoopVietnam {
    public static void main(){
        System.out.println('Chào mừng các bạn đến với Hadoop Việt Nam');
    }
}

Meta