NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
21/04/2023
Lượt xem

Cách cài đặt Hadoop ở chế độ Stand-Alone trên Ubuntu 20.04

21/04/2023
13 phút đọc
Lượt xem

Đánh giá

5/5 - (80 bình chọn)

Hadoop là một software framework hỗ trợ các ứng dụng phân tán dữ liệu chuyên sâu. Nó cho phép các ứng dụng có thể dễ dàng làm việc với hàng ngàn máy tính tính toán độc lập cũng như petabyte dữ liệu. Trong bài viết hôm nay, Vietnix sẽ hướng dẫn các bạn cách cài đặt Hadoop ở chế độ Stand-Alone trên Ubuntu 20.04.

Giới thiệu về Hadoop

Hadoop bao gồm bốn lớp chính:

  • Hadoop Common là tập hợp các tiện ích và thư viện hỗ trợ các Hadoop module khác.
  • HDFS (Hadoop Distributed File System) có nhiệm vụ duy trì dữ liệu trên đĩa.
  • YARN (Yet Another Resource Negotiator) là “operating system” cho HDFS.
  • MapReduce là mô hình xử lý ban đầu cho các Hadoop cluster. Lớp này giúp phân chia công việc trong cluster hoặc map, sau đó sắp xếp và rút gọn kết quả từ các nodes thành phản hồi cho truy vấn. 
Giới thiệu về Hadoop
Giới thiệu về Hadoop

Các Hadoop cluster tương đối phức tạp để thiết lập, vì vậy project cần có chế độ stand-alone phù hợp để tìm hiểu về Hadoop, thực hiện các thao tác đơn giản và debug.

Trong hướng dẫn này, bạn sẽ cài đặt Hadoop ở chế độ stand-alone và chạy một trong các chương trình MapReduce mẫu để xác minh cài đặt.

Điều kiện để có thể cài đặt Hadoop ở chế độ Stand-Alone trên Ubuntu 20.04

Để thực hiện theo hướng dẫn này bạn cần phải có một máy chủ Ubuntu 20.04 với tài khoản người dùng non-root và có quyền sudo.

Vietnix hiện đang cung cấp nhiều gói VPS tốc độ cao với cấu hình đa dạng, chi phí hợp lý chỉ từ 89.000VND/Tháng, có hỗ trợ hệ điều hành Ubuntu. Nếu chưa có máy chủ Ubuntu để thực hiện cài đặt Hadoop, bạn có thể tham khảo các gói dịch VPS tại Vietnix.

Bước 1: Cài đặt Java

Đầu tiên tiến hành đăng nhập, cập nhật package list của bạn và cài đặt OpenJDK, Java Development Kit mặc định trên Ubuntu 20.04:

sudo apt update sudo apt install default-jdk

Sau khi cài đặt hoàn tất, hãy kiểm tra version.

java -version
Output openjdk version "11.0.13" 2021-10-19 OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.20.04) OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

Output như trên có nghĩa là OpenJDK đã được cài đặt thành công.

Bước 2: Cài đặt Hadoop

Với Java sẵn có, bạn sẽ truy cập trang Releases Hadoop của Apache (http://hadoop.apache.org/releases.html) để tìm bản phát hành ổn định gần đây nhất.

Điều hướng đến binary cho bản phát hành bạn muốn cài đặt. Trong bài này, bạn sẽ cài đặt Hadoop 3.3.1, nhưng bạn có thể sử dụng phiên bản bạn muốn với hướng dẫn sau đây.

Trang Release Hadoop của Apache
Trang Release Hadoop của Apache

Trên trang tiếp theo, nhấp chuột phải và sao chép liên kết đến tệp binary releases.

Sao chép liên kết đến tệp binary releases
Sao chép liên kết đến tệp binary releases

Trên server, bạn sẽ sử dụng wget để fetch nó:

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz

Lưu ý: Trang web Apache sẽ chủ động chuyển hướng bạn đến mirror tốt nhất, vì vậy URL của bạn có thể không khớp với URL ở trên.

Để đảm bảo rằng file bạn đã tải xuống không bị thay đổi, bạn có thể kiểm tra nhanh bằng cách sử dụng SHA-512 hoặc Secure Hash Algorithm 512. Quay lại trang Releases, sau đó nhấp chuột phải và sao chép liên kết vào file checksum cho tệp binary release mà bạn đã tải xuống:

 Sao chép liên kết vào file checksum cho tệp binary release mà bạn đã tải xuống
Sao chép liên kết vào file checksum cho tệp binary release mà bạn đã tải xuống

Sử dụng wget trên server của bạn để tải xuống tệp:

wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz.sha512

Sau đó chạy lệnh kiểm tra:

shasum -a 512 hadoop-3.3.1.tar.gz
Output 2fd0bf74852c797dc864f373ec82ffaa1e98706b309b30d1effa91ac399b477e1accc1ee74d4ccbb1db7da1c5c541b72e4a834f131a99f2814b030fbd043df66  hadoop-3.3.1.tar.gz

So sánh giá trị này với giá trị SHA-512 trong tệp .sha512:

cat hadoop-3.3.1.tar.gz.sha512
... SHA512 (hadoop-3.3.1.tar.gz) = 2fd0bf74852c797dc864f373ec82ffaa1e98706b309b30d1effa91ac399b477e1accc1ee74d4ccbb1db7da1c5c541b72e4a834f131a99f2814b030fbd043df66 ...

Output từ lệnh bạn vừa chạy so với tệp bạn đã tải xuống từ mirror phải khớp với giá trị trong tệp bạn đã tải xuống từ apache.org .

Giờ bạn đã verified rằng tệp không bị corrupted hoặc thay đổi, bạn có thể giải nén nó:

tar -xzvf hadoop-3.3.1.tar.gz

Sử dụng lệnh tar có flag  -x để trích xuất, -z để giải nén, -v cho verbose output và -f để chỉ định rằng bạn đang giải nén từ một tệp.

Cuối cùng, bạn sẽ di chuyển các tệp đã giải nén vào /usr/local, nơi thích hợp cho locally để thiết lập phần mềm:

sudo mv hadoop-3.3.1 /usr/local/hadoop

Bước 3: Định cấu hình Trang chủ Java của Hadoop

Hadoop yêu cầu bạn đặt đường dẫn Path tới Java, dưới dạng biến môi trường hoặc trong tệp cấu hình Hadoop.

Đường dẫn đến Java, /usr/bin/java là một liên kết tượng trưng (symlink) đến /etc/alternatives/java, nghĩa là một liên kết tượng trưng đến nhị phân Java mặc định. Bạn sẽ sử dụng readlink với flag-f để theo dõi mọi liên kết tượng trưng trong mọi phần của đường dẫn, theo cách đệ quy (recursive). Sau đó, bạn sẽ sử dụng sed để trim bin/java từ output để cung cấp giá trị chính xác cho JAVA_HOME.

Để tìm đường dẫn Java mặc định chạy lệnh sau:

readlink -f /usr/bin/java | sed "s:bin/java::"
Output /usr/lib/jvm/java-11-openjdk-amd64/

Bạn có thể sao chép kết quả này để cài đặt trang chủ Java của Hadoop thành phiên bản cụ thể này, thao tác này đảm bảo rằng nếu Java mặc định thay đổi, thì giá trị này sẽ không thay đổi. Ngoài ra, bạn có thể sử dụng lệnh Dynamic readlink trong tệp để Hadoop sẽ tự động sử dụng bất kỳ phiên bản Java nào được đặt làm mặc định cho hệ thống.

Để bắt đầu, hãy mở hadoop-env.sh:

sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh

Sau đó, sửa đổi tệp bằng cách chọn một trong các option sau:

Option 1: Cài đặt một Static Value

. . . #export JAVA_HOME= export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/  . . .

Option 2: Sử dụng Readlink để cài đặt Value Dynamically

. . . #export JAVA_HOME= export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")  . . .

Nếu bạn gặp khó khăn khi tìm những dòng này, hãy sử dụng CTRL+W để tìm kiếm nhanh qua văn bản. Khi bạn đã hoàn tất, nhấn CTRL+X để thoát và lưu tệp của bạn.

Bước 4: Running Hadoop

Bây giờ bạn đã có thể run Hadoop:

/usr/local/hadoop/bin/hadoop
Output Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]  or    hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]   where CLASSNAME is a user-provided Java class    OPTIONS is none or any of:  --config dir                     Hadoop config directory --debug                          turn on shell script debug mode --help                           usage information buildpaths                       attempt to add class files from build tree hostnames list[,of,host,names]   hosts to use in slave mode hosts filename                   list of hosts to use in slave mode loglevel level                   set the log4j level for this command workers                          turn on worker mode    SUBCOMMAND is one of: . . .

Output này có nghĩa là bạn đã cấu hình thành công Hadoop để chạy ở chế độ stand-alone.

Bạn phải đảm bảo rằng Hadoop đang hoạt động bình thường bằng cách chạy chương trình MapReduce mẫu mà nó đi kèm. Để làm như vậy, hãy tạo một thư mục có tên input trong thư mục chính của bạn và sao chép các tệp cấu hình của Hadoop vào đó để sử dụng các tệp đó làm dữ liệu.

mkdir ~/input cp /usr/local/hadoop/etc/hadoop/*.xml ~/input

Tiếp theo, bạn có thể sử dụng lệnh sau để chạy chương trình MapReduce hadoop-mapreduce-examples, một kho lưu trữ Java với một số option:

/usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep ~/input ~/grep_example 'allowed[.]*'

Thao tác này invokes chương trình grep, một trong nhiều ví dụ có trong hadoop-mapreduce-examples, theo sau là thư mục đầu vào input và thư mục đầu ra grep_example. Chương trình grep MapReduce sẽ đếm các kết quả match nhau của một từ hoặc cụm từ thông dụng. Cuối cùng, biểu thức chính quy (Regular Expression) allowed[.]* được đưa ra để tìm các lần xuất hiện của từ allowed trong hoặc ở cuối câu khai báo (declarative sentence). Biểu thức phân biệt chữ hoa chữ thường, vì vậy bạn sẽ không tìm thấy nếu từ đó được viết hoa ở đầu câu.

Khi task hoàn thành, bạn sẽ được cung cấp một bản summary về những gì đã được xử lý và các lỗi gặp phải, nhưng nó sẽ không chứa kết quả thực tế.

Output  . . .    File System Counters         FILE: Number of bytes read=1200956         FILE: Number of bytes written=3656025         FILE: Number of read operations=0         FILE: Number of large read operations=0         FILE: Number of write operations=0     Map-Reduce Framework         Map input records=2         Map output records=2         Map output bytes=33         Map output materialized bytes=43         Input split bytes=114         Combine input records=0         Combine output records=0         Reduce input groups=2         Reduce shuffle bytes=43         Reduce input records=2         Reduce output records=2         Spilled Records=4         Shuffled Maps =1         Failed Shuffles=0         Merged Map outputs=1         GC time elapsed (ms)=41         Total committed heap usage (bytes)=403800064     Shuffle Errors         BAD_ID=0         CONNECTION=0         IO_ERROR=0         WRONG_LENGTH=0         WRONG_MAP=0         WRONG_REDUCE=0     File Input Format Counters         Bytes Read=147     File Output Format Counters         Bytes Written=34

Lưu ý: Nếu thư mục output đã tồn tại, chương trình sẽ fail và thay vì xem summary , output sẽ giống như sau:

Output  . . .      at java.base/java.lang.reflect.Method.invoke(Method.java:564)     at org.apache.hadoop.util.RunJar.run(RunJar.java:244)     at org.apache.hadoop.util.RunJar.main(RunJar.java:158)

Kết quả được lưu trữ trong thư mục output và có thể được kiểm tra bằng cách chạy cat trên thư mục output:

cat ~/grep_example/*
Output 22    allowed. 1    allowed

Từ ví dụ, MapReduce đã tìm thấy 19 lần xuất hiện của từ allowed theo sau là dấu chấm và một lần xuất hiện không có dấu đó. Việc chạy chương trình mẫu đã chứng minh rằng cài đặt stand-alone của chúng ta đang hoạt động bình thường và những user không có đặc quyền trên hệ thống có thể chạy Hadoop để exploration hoặc debugging.

Ngoài ra, bạn cũng có thể tham khảo thêm về cách chia sẻ dữ liệu giữa các Docker Containers, điều này giúp cho việc phát triển ứng dụng được tối ưu hóa và linh hoạt hơn, đồng thời giảm thiểu tối đa các rủi ro về bảo mật và hiệu suất.

Lời kết

Trên đây, bạn vừa thành công cài đặt Hadoop ở chế độ stand-alone trên Ubuntu 20.04 và kiểm định nó bằng cách chạy một chương trình mẫu mà nó cung cấp. Nếu bạn đang tìm kiếm một giải pháp để phân tích và xử lý dữ liệu lớn, Hadoop là một lựa chọn tuyệt vời. Cảm ơn các bạn đã theo dõi bài viết, nếu thấy hữu ích hãy chia sẻ đến mọi người nhé.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG