Chào các bạn. Hôm nay, tôi mở thêm một chủ đề mới về Big Data. Về khái niệm Big Data, tôi cũng đã nghe nói nhiều từ hơn một vài năm trước lận nhưng gần đây mới có thời gian research. Đại khái là theo sự hiểu biết của tôi là nếu bạn có trong tay một tập dữ liệu cực kỳ lớn gần cả triệu record, mỗi record có khoản vài chục column và mỗi ngày nó lại tăng thêm. Bạn có nhu cầu là cần thao tác nhanh trên tập dữ liệu này để lấy ra một tập dữ liệu cần thiết để phân tích, đưa ra số liệu cụ thể cho một công việc nào đó thì đấy là Big Data. Vậy vấn đề được đặt ra là:

1. Làm sao để lưu trữ cái đống dữ liệu to lớn đó sao cho dễ quản lý và sử dụng, truy vấn nhanh?

 

2. Làm sao để phân tích nhanh nhất có thể đối với dữ liệu cực lớn này?

 

Với câu hỏi 1, tôi đã tìm ra câu trả lời cho bản thân tôi đó là MongoDB và Elasticsearch. Hiện tại có rất nhiều loại CSDL dùng để lưu trữ cho Big Data nhưng trong phạm vì nhu cầu sử dụng của tôi, thì tôi ưng nhất là MongoDB và Elasticsearch (nếu sau này có thêm nhu cầu mới thì research thêm)

 

Với những ứng dụng cần full text search, cần search nhanh thì dùng Elasticsearch. Đối với ứng dụng mà việc ghi dữ liệu nhiều hơn thì nên dùng MongoDB.

 

Lúc đầu research thì đề cập đến Apache Hadoop và Apache Spark và sau một thời gian đọc tài liệu, ebook…. thì tôi chọn Apache Spark tại vì cái này nó có thể chơi được với Hadoop luôn

rồi, đó là lý do tại sao có cái bài tutorial về cài đặt Apache Spark.

 

1. Apache Spark là gì?

Apache Spark là một nền tảng tính toán theo cluster mã nguồn mở, được phát triển lần đầu tiên tại AMPLab thuộc đại học California, Berkeley vào năm 2009. Sau này, vào năm 2013, Spark được trao lại cho Apache Software Foundation và phát triển đến ngày nay. Một trong những đặt tính nổi bật nhất của Spark là tốc độ xử lý, do Spark xử lý data hoàn toàn trên bộ nhớ (in – memory processing), ngoài ra có thể kể thêm một số tính năng khác như:

 

§ Spark Streaming.

 

§ Machine Learning and Graph.

 

§ Spark SQL/DataFrame API.

 

§ Spark’s integration with Hadoop.

upload_2017-8-16_16-11-51.png

 

2. Cài đặt Spark trên Windows

 

Do Spark được viết bằng ngôn ngữ Scala mà Scala thì dựa vào JVM cho nên đầu tiên các bạn phải cài JDK.

 

Cài JDK xong, các bạn nhớ tạo biến môi trường JAVA_HOME. Vào Control Panel, chọn System, bên góc trái, chọn Advanced System settings, nó sẽ mở cái của sổ System Properties


upload_2017-8-16_16-12-27.png

 

Chọn tab Advanced, click nút Environment Variables…

upload_2017-8-16_16-13-1.png

 

Ở cái khu vục phía trên là tạo biến môi trường cho user, các bạn click nút New…, sau đó nhập nội dung vào như sau:

upload_2017-8-16_16-13-17.png

Ở cái ô Variable value, ở đây do tôi cài jdk tại thư mục C:\Java\jdk, còn thư mục cụ thể JDK của các bạn là gì thì bạn ghi cho chính xác nha. Xong Click OK.

 

Hiện tại các bạn đang đứng ở cái của sổ Environment Variables. Tiếp theo, các bạn set thêm cái thư mục bin của JDK vào biến môi trường PATH. Các bạn tìm cái biến PATH như hình:

 

upload_2017-8-16_16-13-46.png

chọn nó, click nút Edit… hoặc double click vào biến PATH cũng được


upload_2017-8-16_16-14-1.png

 

Click nút New…, thêm dòng %JAVA_HOME%\bin như sau:

upload_2017-8-16_16-14-16.png

 

Sau đó, click OK, Click tiếp OK ở của sổ Environment Variables. Sau đó mở của sổ Command Prompt lên gõ java -version xem coi nó chạy không, nêu chạy ra như hình là ổn.

upload_2017-8-16_16-14-32.png

 

Tiếp theo là các bạn download Spark tại chủ của nó: https://spark.apache.org/downloads.html. Hiện tại version mới nhất là 2.0.2 như hình:

upload_2017-8-16_16-15-43.png

Nhưng trong quá trình thử viết demo trên Spark thì tôi thấy rằng do Spark 2.0.2 được build bằng Scala 2.11 nó chạy không được tương thích với một số thư viện khác nên tôi quyết định chuyển xuống sử dụng Spark 1.6.3 build bằng Scala 2.10 cho nó thuận tiện. Do vậy, các bạn chọn Spark 1.6.3 Pre-built for Hadoop 2.6 như hình sau:

upload_2017-8-16_16-15-58.png

 

Sau khi download file spark-1.6.3-bin-hadoop2.6.tgz, các bạn giải nén nó bằng winrar vào thư mục nào cũng được, trên máy của tôi thì tôi extract nó ra thư mục E:\Server\spark\1.6.3

upload_2017-8-16_16-16-17.png
Tiếp theo, các bạn tạo biến môi trường SPARK_HOME và set %SPARK_HOME%\bin vào biến PATH tương tự như khi nảy các làm làm với JDK nha.

Đến đây, vẫn chưa chơi được với Spark đâu, các bạn vào trang này: https://github.com/steveloughran/winutils để download cái winutils cho Hadoop nữa.
Do tôi sử dụng Spark 1.6.3 pre-built for Hadoop 2.6 nên tôi chọn thư mục trên github là https://github.com/steveloughran/winutils/tree/master/hadoop-2.6.4/bin, kéo xuống bên dưới, các bạn sẽ thấy cái file winutils.exe

upload_2017-8-16_16-16-56.png

 

Click vô, nó sẽ chuyển sang trang download file này, download xong thì các bạn bỏ nó vào thư mục nào cũng được, ví dụ tôi bỏ nó vào thư mục E:\Server\hadoop-winutils\2.6.4. Sau đó, các bạn tạo biến môi trường là HADOOP_HOME với đường dẫn là cái thư mục chứa file winutils này.

upload_2017-8-16_16-17-12.png

Đến đây, làm tiếp cái bước cuối nữa, các bạn vào thư mục %SPARK_HOME%\conf, kiếm cái file log4j.properties.template, các bạn copy nó thành file log4j.properties

Mở file này lên, tìm đến cái dòng sau:

log4j.rootCategory=INFO,console

đổi cái chữ INFO thành WARN, sau đó save lại nha

log4j.rootCategory=WARN,console

Rồi, sau khi setup, cấu hình xong, chạy thử coi Spark nó hoạt động không nha. Các bạn mở Command Prompt lên, đứng ở bất kỳ thư mục nào cũng được rồi gõ lệnh spark-shell, nếu nó chạy ra được chữ SPARK 1.6.3 như hình

upload_2017-8-16_16-17-51.png

và nó tiếp tục chạy cho đến khi các bạn thấy dấu nháy scala> là coi như Spark run thành công.

upload_2017-8-16_16-18-10.png

Vậy là kết thúc bài giới thiệu và cài Apache Spark.