Mục lục

Không có mục lục
Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly

Cách cài đặt Hadoop ở chế độ độc lập trên Ubuntu 20.04

Ngày đăng: 10 tháng 10 năm 2022

Ubuntu

Giới thiệu

Hadoop là một khung lập trình dựa trên Java, hỗ trợ xử lý và lưu trữ các tập dữ liệu cực lớn trên một nhóm các máy rẻ tiền. Đây là dự án mã nguồn mở lớn đầu tiên trong sân chơi dữ liệu lớn và được tài trợ bởi Apache Software Foundation.

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 mô-đun Hadoop khác.
  • HDFS, viết tắt của Hadoop Distributed File System, chịu trách nhiệm lưu trữ dữ liệu vào đĩa.
  • YARN, viết tắt của Yet Another Resource Negotiator, là “hệ điều hành” cho HDFS.
  • MapReduce là mô hình xử lý ban đầu cho các Hadoop Cluster. Nó phân phối công việc trong cluster hoặc bản đồ, sau đó tổ chức và giảm kết quả từ các node thành phản hồi cho một truy vấn. Nhiều mô hình xử lý khác có sẵn cho phiên bản 3.x của Hadoop.

Các Hadoop Cluster tương đối phức tạp để thiết lập, vì vậy dự án bao gồm một chế độ độc lập phù hợp để tìm hiểu về Hadoop, thực hiện các thao tác đơn giản và gỡ lỗi.

Trong hướng dẫn này, bạn sẽ cài đặt Hadoop ở chế độ độc lập và chạy một trong các chương trình MapReduce mẫu mà nó bao gồm để xác minh cài đặt.

Điều kiện

Để làm theo hướng dẫn này, bạn sẽ cần:

  • Máy chủ Ubuntu 20.04 với non-root user có đặc quyền sudo: Bạn có thể tìm hiểu thêm về cách thiết lập người dùng có các đặc quyền này trong hướng dẫn Thiết lập máy chủ ban đầu với Ubuntu 20.04 của chúng tôi.

Bạn cũng có thể muốn xem Giới thiệu về các khái niệm và thuật ngữ dữ liệu lớn hoặc Giới thiệu về Hadoop

Khi bạn đã hoàn thành các điều kiện, hãy đăng nhập với tư cách là sudo user của bạn để bắt đầu.

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

Để bắt đầu, bạn sẽ cập nhật danh sách gói của chúng tôi và cài đặt OpenJDK, Bộ phát triển Java mặc định trên Ubuntu 20.04:

  1. sudo apt update
  2. sudo apt install default-jdk

Sau khi cài đặt xong, hãy kiểm tra phiên bản.

  1. 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)

Đầu ra này xác minh rằng 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 Bản phát hành Apache Hadoop để tìm bản phát hành ổn định gần đây nhất.

Điều hướng đến binary (nhị phân) cho bản phát hành bạn muốn cài đặt. Trong hướng dẫn này, bạn sẽ cài đặt Hadoop 3.3.1, nhưng bạn có thể thay thế số phiên bản trong hướng dẫn này bằng một trong những lựa chọn của bạn.

description image

Trên trang tiếp theo, nhấp chuột phải và sao chép liên kết vào tệp nhị phân phát hành.

description image

Trên máy chủ, bạn sẽ sử dụng wget để tìm nó:

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

Lưu ý: Trang web Apache sẽ tự động chuyển hướng bạn đến máy nhân bản 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 tệp bạn đã tải xuống không bị thay đổi, bạn hãy kiểm tra nhanh bằng cách sử dụng SHA-512 hoặc Secure Hash Algorithm 512. Quay lại trang phát hành, sau đó nhấp chuột phải và sao chép liên kết tới tệp tổng kiểm tra cho bản nhị phân phát hành mà bạn đã tải xuống:

description image

Một lần nữa, bạn sẽ sử dụng wget trên máy chủ của chúng tôi để tải xuống tệp:

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

Sau đó chạy xác minh:

  1. 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:

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

Đầu ra của lệnh bạn chạy với tệp bạn đã tải xuống từ máy nhân bản phải khớp với giá trị trong tệp bạn đã tải xuống từ apache.org.

Bây giờ bạn đã xác minh rằng tệp không bị hỏng hoặc bị thay đổi, bạn có thể trích xuất nó:

  1. tar -xzvf hadoop-3.3.1.tar.gz

Sử dụng lệnh tar với cờ -x để trích xuất, -z để giải nén, -v cho đầu ra dài và -f để xác đị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 phần mềm được cài đặt cục bộ:

  1. sudo mv hadoop-3.3.1 /usr/local/hadoop

Với phần mềm tại chỗ, bạn đã sẵn sàng thiết lập cấu hình môi trường của nó.

Bước 3: Thiết lập cấu hình Trang chủ Java của Hadoop

Hadoop yêu cầu bạn đặt đường dẫn đến Java, dưới dạng một 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 tới /etc/alternatives/java, đây 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 cờ -f để theo dõi mọi liên kết biểu tượng trong mọi phần của đường dẫn, một cách đệ quy. Sau đó, bạn sẽ sử dụng sed để cắt bin/java khỏi đầu ra để cung cấp giá trị chính xác cho JAVA_HOME.

Để tìm đường dẫn Java mặc định:

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

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

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

  1. 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 tùy chọn sau:

Tùy chọn 1: Đặt giá trị tĩnh

/usr/local/hadoop/etc/hadoop/hadoop-env.sh
. . .
#export JAVA_HOME=
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
 . . .
/usr/local/hadoop/etc/hadoop/hadoop-env.sh
. . .
#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 để nhanh chóng tìm kiếm trong văn bản. Sau khi hoàn tất, hãy thoát bằng CTRL + X và lưu tệp của bạn.

Lưu ý: Đối với Hadoop, giá trị của JAVA_HOME trong hadoop-env.sh sẽ ghi đè bất kỳ giá trị nào được đặt trong môi trường bởi /etc/profile hoặc trong profile của người dùng.

Bước 4: Chạy Hadoop

Bây giờ bạn có thể chạy Hadoop:

  1. /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: . . .

Đầu ra này có nghĩa là bạn đã thiết lập cấu hình Hadoop thành công để chạy ở chế độ độc lập.

Bạn hãy đả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ó cung cấp. Để làm như vậy, hãy tạo một thư mục được gọi là input trong thư mục chính của chúng ta 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 của chúng ta.

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

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

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

Điều này giúp đỡ 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ả phù hợp của một từ theo nghĩa đen hoặc biểu thức chính quy. Cuối cùng, biểu thức chính quy 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. Biểu thức có phân biệt chữ hoa chữ thường, vì vậy bạn sẽ không tìm thấy từ nếu nó được viết hoa ở đầu câu.

Khi nhiệm vụ hoàn thành, nó cung cấp một bản tóm tắt về những gì đã được xử lý và các lỗi mà nó đã gặp phải, nhưng phần này 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 đầu ra đã tồn tại, chương trình sẽ không thành công, và thay vì xem bản tóm tắt, đầu ra 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 đầu ra và có thể được kiểm tra bằng cách chạy cat trên thư mục đầu ra:

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

Tác vụ 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 khi từ đó không được phép. Việc chạy chương trình ví dụ đã xác minh rằng cài đặt độc lập của chúng ta đang hoạt động bình thường và non-privileged users (người dùng không có đặc quyền) trên hệ thống có thể chạy Hadoop để thăm dò hoặc gỡ lỗi.

Kết luận

Trong hướng dẫn này, bạn đã cài đặt Hadoop ở chế độ độc lập và xác minh nó bằng cách chạy một chương trình mẫu mà nó cung cấp. Để tìm hiểu cách viết các chương trình MapReduce của riêng bạn, bạn có thể truy cập Hướng dẫn MapReduce của Apache Hadoop, hướng dẫn này đi qua đoạn mã đằng sau ví dụ. Khi bạn đã sẵn sàng thiết lập một cụm, hãy xem Hướng dẫn Thiết lập Hadoop Cluster của Apache Foundation.

Nếu bạn quan tâm đến việc triển khai một cluster đầy đủ thay vì chỉ một cụm riêng lẻ, hãy xem Cách tạo một Hadoop Cluster với DigitalOcean Droplets.

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Chia sẻ

0 câu trả lời