Cài đặt Apache Spark Để Sử Dụng Spark SQL

Discussion in 'Tableau' started by tableau, Aug 16, 2017.

  1. tableau

    tableau Well-Known Member

    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:

     

    Attached Files:

    Last edited: Aug 16, 2017
  2. Loading...


  3. tableau

    tableau Well-Known Member

    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.
     
    Last edited: Aug 16, 2017
: SQL, spark

Share This Page