Hướng Dẫn Chi Tiết cách cài hadoop trên ubuntu Nhanh Chóng và Hiệu Quả
Nội dung bài viết
- Chuẩn Bị Môi Trường Cài Đặt Hadoop Trên Ubuntu
- Bước 1: Cài Đặt Java Development Kit (JDK) Cho Hadoop
- Bước 2: Tải Xuống và Cài Đặt Hadoop
- Xác Minh Tính Toàn Vẹn Của Tệp Hadoop
- Giải Nén và Di Chuyển Tệp Hadoop
- Bước 3: Thiết Lập Biến Môi Trường JAVA_HOME Cho Hadoop
- Tùy Chọn 1: Đặt Giá Trị Tĩnh Cho JAVA_HOME
- Tùy Chọn 2: Sử Dụng Readlink Để Đặt Giá Trị Động Cho JAVA_HOME
- Bước 4: Chạy Hadoop và Xác Minh Cài Đặt
- Khởi Chạy Hadoop Cơ Bản
- Chạy Chương Trình MapReduce Mẫu
- Xem Kết Quả MapReduce
- Khắc Phục Sự Cố Thường Gặp Khi Cài Đặt Hadoop
- Kết Luận Cuối Cùng
Hướng dẫn chi tiết này sẽ chỉ dẫn bạn từng bước về cách cài hadoop trên ubuntu một cách hiệu quả. Hadoop là một nền tảng mã nguồn mở mạnh mẽ, cho phép xử lý và lưu trữ các tập dữ liệu cực lớn trên kiến trúc phân tán. Việc thiết lập Hadoop ở chế độ độc lập là lựa chọn lý tưởng cho việc học tập và phát triển, giúp bạn làm quen với HDFS và MapReduce. Bài viết này sẽ đảm bảo bạn có thể nhanh chóng bắt đầu với phân tích dữ liệu lớn trên môi trường Ubuntu 20.04, xác minh cài đặt bằng một chương trình mẫu.
Chuẩn Bị Môi Trường Cài Đặt Hadoop Trên Ubuntu
Để đảm bảo quá trình cài đặt Hadoop diễn ra suôn sẻ, việc chuẩn bị một môi trường hệ thống phù hợp là rất quan trọng. Các yêu cầu tối thiểu này sẽ giúp bạn thiết lập một nền tảng vững chắc cho việc triển khai Hadoop. Hiểu rõ từng điều kiện sẽ giúp bạn khắc phục các vấn đề tiềm ẩn ngay từ đầu.
Bạn sẽ cần một máy chủ Ubuntu 20.04 đã được cài đặt. Điều này có thể là một máy ảo hoặc một máy vật lý. Phiên bản 20.04 cung cấp sự ổn định và hỗ trợ lâu dài, lý tưởng cho môi trường phát triển Hadoop. Đảm bảo hệ điều hành được cập nhật thường xuyên để vá lỗi bảo mật và tối ưu hiệu suất.
Bên cạnh đó, một người dùng không phải root nhưng có đặc quyền sudo là bắt buộc. Việc này giúp tăng cường bảo mật hệ thống, tránh các rủi ro khi chạy các lệnh với quyền quản trị tối cao. Người dùng sudo có thể thực hiện các tác vụ quản trị khi cần thiết mà không cần đăng nhập trực tiếp với quyền root. Bạn có thể tham khảo hướng dẫn thiết lập máy chủ ban đầu để tạo người dùng này.
Để có cái nhìn sâu sắc hơn về bối cảnh rộng lớn của Hadoop, bạn nên tìm hiểu về các khái niệm và thuật ngữ dữ liệu lớn. Kiến thức nền tảng này sẽ giúp bạn hiểu rõ hơn về vai trò của Hadoop trong hệ sinh thái xử lý dữ liệu. Nắm vững các khái niệm cơ bản sẽ hỗ trợ bạn trong quá trình học và làm việc với Hadoop.
Khi bạn đã hoàn tất các điều kiện tiên quyết này, hãy đăng nhập bằng tài khoản người dùng sudo của mình. Đây là bước đầu tiên để bắt đầu quá trình cài đặt Hadoop. Sự chuẩn bị kỹ lưỡng sẽ tiết kiệm thời gian và công sức cho các bước tiếp theo.
Bước 1: Cài Đặt Java Development Kit (JDK) Cho Hadoop
Java là nền tảng cốt lõi cho Hadoop, vì Hadoop được phát triển chủ yếu bằng ngôn ngữ Java. Do đó, việc cài đặt một phiên bản Java Development Kit (JDK) phù hợp là bước đầu tiên và quan trọng nhất trong quá trình cài đặt Hadoop. Hadoop yêu cầu một môi trường Java để biên dịch và chạy các ứng dụng.
Bạn cần cập nhật danh sách gói trên hệ thống của mình trước khi cài đặt bất kỳ phần mềm nào mới. Lệnh sudo apt update sẽ làm mới kho lưu trữ gói, đảm bảo bạn nhận được các phiên bản phần mềm mới nhất. Đây là một thực hành tốt để tránh các xung đột phiên bản và lỗ hổng bảo mật.
Sau khi cập nhật, bạn sẽ tiến hành cài đặt OpenJDK, Bộ phát triển Java mặc định trên Ubuntu 20.04. Lệnh sudo apt install default-jdk sẽ tự động tải xuống và cài đặt phiên bản JDK phù hợp nhất. OpenJDK là một triển khai mã nguồn mở của Java, được khuyến nghị sử dụng trên các hệ thống Linux.
sudo apt update
sudo apt install default-jdk
Việc cài đặt JDK có thể mất vài phút tùy thuộc vào tốc độ mạng của bạn. Sau khi quá trình hoàn tất, bạn cần xác minh phiên bản Java đã cài đặt. Điều này đảm bảo rằng Java đã được thiết lập chính xác và sẵn sàng cho việc sử dụng bởi Hadoop. Kiểm tra phiên bản là một bước quan trọng để tránh các lỗi không mong muốn sau này.
Sử dụng lệnh java -version để kiểm tra phiên bản Java hiện tại.
java -version
Đầu ra tương tự như sau sẽ xuất hiện:
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 nhận rằng OpenJDK đã được cài đặt thành công trên hệ thống của bạn. Hadoop tương thích với nhiều phiên bản Java, nhưng Java 8 hoặc Java 11 thường được khuyến nghị. Phiên bản OpenJDK 11 mà bạn vừa cài đặt là hoàn toàn phù hợp.
Bước 2: Tải Xuống và Cài Đặt Hadoop
Sau khi đã cài đặt Java, bước tiếp theo là tải xuống và cài đặt Hadoop lên hệ thống Ubuntu của bạn. Quá trình này bao gồm việc chọn phiên bản Hadoop phù hợp, tải tệp nhị phân và xác minh tính toàn vẹn của tệp trước khi giải nén. Điều này đảm bảo rằng bạn đang cài đặt một phiên bản Hadoop ổn định và an toàn.
Để bắt đầu, hãy truy cập trang Bản phát hành Apache Hadoop chính thức. Trang này liệt kê tất cả các phiên bản Hadoop đã được phát hành, bao gồm cả các bản ổn định và bản thử nghiệm. Việc chọn một bản phát hành ổn định là rất quan trọng cho các môi trường sản xuất hoặc học tập nghiêm túc.
Điều hướng đến liên kết binary (nhị phân) cho phiên bản bạn muốn cài đặt. Trong hướng dẫn này, chúng ta sẽ sử dụng Hadoop 3.3.1. Tuy nhiên, bạn hoàn toàn có thể thay thế số phiên bản này bằng một bản phát hành mới hơn nếu có. Luôn kiểm tra tài liệu chính thức của Apache Hadoop để biết các khuyến nghị về phiên bản mới nhất và ổn định.
Ảnh chụp màn hình trang bản phát hành Apache Hadoop, hiển thị liên kết nhị phân
Trên trang tiếp theo, hãy nhấp chuột phải và sao chép liên kết trực tiếp đến tệp nhị phân nén của bản phát hành. Liên kết này thường có định dạng .tar.gz. Đây là tệp chứa tất cả các thành phần cần thiết để chạy Hadoop.
Ảnh chụp màn hình hiển thị liên kết tải xuống tệp nhị phân Hadoop
Sử dụng lệnh wget trên máy chủ Ubuntu của bạn để tải tệp này về. Thay thế URL trong ví dụ dưới đây bằng liên kết bạn vừa sao chép. Lệnh wget là một tiện ích dòng lệnh mạnh mẽ để tải xuống tệp từ internet.
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
Lưu ý rằng trang web Apache có thể tự động chuyển hướng bạn đến một máy nhân bản (mirror) tốt nhất. Do đó, URL thực tế trong lệnh wget của bạn có thể khác so với ví dụ trên. Điều này là hoàn toàn bình thường và không ảnh hưởng đến quá trình tải xuống.
Xác Minh Tính Toàn Vẹn Của Tệp Hadoop
Sau khi tải xuống tệp Hadoop, điều cực kỳ quan trọng là phải xác minh tính toàn vẹn của nó. Việc này đảm bảo rằng tệp không bị hỏng trong quá trình tải xuống và không bị thay đổi bởi bất kỳ bên thứ ba nào. Chúng ta sẽ sử dụng hàm băm bảo mật SHA-512 (Secure Hash Algorithm 512) để kiểm tra.
Quay lại trang phát hành Hadoop và nhấp chuột phải để sao chép liên kết đến tệp tổng kiểm tra (checksum file) cho bản nhị phân mà bạn vừa tải xuống. Tệp này chứa giá trị băm SHA-512 chính thức do Apache cung cấp.
Liên kết đến tệp SHA-512 checksum cho bản cài đặt Hadoop trên Ubuntu.
Tải tệp tổng kiểm tra này về máy chủ của bạn bằng wget:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz.sha512
Bây giờ, hãy chạy lệnh shasum để tính toán giá trị băm SHA-512 của tệp Hadoop đã tải xuống:
shasum -a 512 hadoop-3.3.1.tar.gz
Đầu ra sẽ hiển thị giá trị băm của tệp của bạn:
2fd0bf74852c797dc864f373ec82ffaa1e98706b309b30d1effa91ac399b477e1accc1ee74d4ccbb1db7da1c5c541b72e4a834f131a99f2814b030fbd043df66 hadoop-3.3.1.tar.gz
Cuối cùng, so sánh giá trị này với giá trị SHA-512 trong tệp .sha512 mà bạn đã tải về. Bạn có thể xem nội dung tệp này bằng lệnh cat:
cat hadoop-3.3.1.tar.gz.sha512
Nội dung tệp sẽ hiển thị giá trị băm chính thức:
... SHA512 (hadoop-3.3.1.tar.gz) = 2fd0bf74852c797dc864f373ec82ffaa1e98706b309b30d1effa91ac399b477e1accc1ee74d4ccbb1db7da1c5c541b72e4a834f131a99f2814b030fbd043df66 ...
Nếu hai giá trị băm này khớp nhau, bạn có thể hoàn toàn yên tâm rằng tệp Hadoop của bạn là nguyên bản và không bị thay đổi. Đây là một bước bảo mật quan trọng, đặc biệt khi tải xuống phần mềm từ internet.
Giải Nén và Di Chuyển Tệp Hadoop
Sau khi xác minh thành công tệp Hadoop, bạn có thể tiến hành giải nén và di chuyển nó đến vị trí cài đặt phù hợp. Lệnh tar là công cụ tiêu chuẩn trên Linux để xử lý các tệp nén .tar.gz.
Sử dụng lệnh sau để giải nén tệp:
tar -xzvf hadoop-3.3.1.tar.gz
Giải thích các cờ (flags) trong lệnh tar:
-x: (extract) để trích xuất các tệp.-z: (gzip) để giải nén tệp đã được nén bằng gzip.-v: (verbose) để hiển thị chi tiết quá trình giải nén, liệt kê các tệp được trích xuất.-f: (file) để chỉ định rằng bạn đang giải nén từ một tệp cụ thể.
Quá trình này sẽ tạo ra một thư mục mới có tên hadoop-3.3.1 trong thư mục hiện tại của bạn, chứa tất cả các tệp cài đặt Hadoop.
Cuối cùng, bạn cần di chuyển thư mục Hadoop đã giải nén vào vị trí thích hợp trên hệ thống. Theo quy ước, phần mềm được cài đặt cục bộ thường được đặt trong thư mục /usr/local. Việc này giúp tổ chức hệ thống tốt hơn và tuân thủ các tiêu chuẩn của Linux.
sudo mv hadoop-3.3.1 /usr/local/hadoop
Lệnh sudo mv sẽ di chuyển thư mục hadoop-3.3.1 vào /usr/local và đổi tên nó thành hadoop. Bây giờ, các tệp Hadoop của bạn đã nằm đúng vị trí. Với phần mềm đã sẵn sàng, bạn có thể tiến hành thiết lập cấu hình môi trường của nó.
Bước 3: Thiết Lập Biến Môi Trường JAVA_HOME Cho Hadoop
Hadoop cần biết vị trí cài đặt Java trên hệ thống của bạn để hoạt động chính xác. Thông tin này được cung cấp thông qua biến môi trường JAVA_HOME. Bạn có thể thiết lập biến này trực tiếp trong tệp cấu hình của Hadoop hoặc trong môi trường hệ thống. Việc này đảm bảo Hadoop luôn tìm thấy đúng phiên bản Java cần thiết.
Đường dẫn đến Java trên Ubuntu thường là một liên kết tượng trưng (symlink). Để lấy đường dẫn vật lý chính xác, chúng ta cần theo dõi tất cả các liên kết tượng trưng. Lệnh readlink với cờ -f sẽ thực hiện việc này một cách đệ quy, trả về đường dẫn tuyệt đối của tệp hoặc thư mục mà liên kết tượng trưng trỏ tới.
Cụ thể, đường dẫn /usr/bin/java là một liên kết tượng trưng đến /etc/alternatives/java, mà bản thân nó lại là một liên kết tượng trưng đến nhị phân Java mặc định của hệ thống. Để có được đường dẫn gốc của thư mục JDK, chúng ta sẽ sử dụng sed để loại bỏ phần bin/java khỏi đầu ra của readlink.
Để tìm đường dẫn Java mặc định chính xác:
readlink -f /usr/bin/java | sed "s:bin/java::"
Đầu ra sẽ tương tự như sau:
/usr/lib/jvm/java-11-openjdk-amd64/
Bạn có hai tùy chọn để thiết lập JAVA_HOME trong cấu hình Hadoop: giá trị tĩnh hoặc giá trị động. Giá trị tĩnh sẽ cố định đường dẫn Java, trong khi giá trị động sẽ tự động cập nhật nếu phiên bản Java mặc định của hệ thống thay đổi. Cả hai đều có ưu và nhược điểm riêng.
Để bắt đầu, hãy mở tệp cấu hình môi trường của Hadoop, hadoop-env.sh, bằng trình soạn thảo nano:
sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh
Trong tệp này, bạn sẽ tìm kiếm dòng export JAVA_HOME= và sửa đổi nó.
Tùy Chọn 1: Đặt Giá Trị Tĩnh Cho JAVA_HOME
Đây là tùy chọn đơn giản nhất và được khuyến nghị nếu bạn không mong đợi phiên bản Java mặc định của hệ thống thay đổi. Bạn chỉ cần sao chép đầu ra từ lệnh readlink trước đó và dán vào tệp hadoop-env.sh.
Tìm dòng export JAVA_HOME= (thường được comment bằng dấu # ở đầu) và bỏ comment, sau đó thêm đường dẫn Java của bạn:
. . .
#export JAVA_HOME=
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
. . .
Việc này đảm bảo rằng Hadoop luôn sử dụng một phiên bản Java cụ thể, bất kể các thay đổi hệ thống khác. Tuy nhiên, nếu bạn nâng cấp Java sau này, bạn sẽ cần phải cập nhật thủ công dòng này.
Tùy Chọn 2: Sử Dụng Readlink Để Đặt Giá Trị Động Cho JAVA_HOME
Tùy chọn này linh hoạt hơn, cho phép Hadoop tự động sử dụng bất kỳ phiên bản Java nào đang được đặt làm mặc định của hệ thống. Bạn sẽ nhúng trực tiếp lệnh readlink vào tệp cấu hình.
Tìm dòng export JAVA_HOME= và sửa đổi nó như sau:
. . .
#export JAVA_HOME=
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
. . .
Với cấu hình này, mỗi khi Hadoop được khởi động, nó sẽ tự động xác định đường dẫn Java mặc định hiện tại của hệ thống. Điều này tiện lợi nếu bạn thường xuyên cập nhật Java hoặc quản lý nhiều phiên bản Java.
Nếu bạn gặp khó khăn khi tìm dòng export JAVA_HOME=, hãy sử dụng tổ hợp phím CTRL + W trong nano để tìm kiếm nhanh. Sau khi đã sửa đổi tệp theo tùy chọn mong muốn, hãy nhấn CTRL + X để thoát và Y để lưu các thay đổi.
Lưu ý quan trọng: Giá trị của JAVA_HOME được đặt trong hadoop-env.sh sẽ ghi đè bất kỳ giá trị nào được đặt trong môi trường hệ thống (ví dụ: trong /etc/profile hoặc profile của người dùng). Điều này có nghĩa là Hadoop sẽ luôn ưu tiên cấu hình Java được định nghĩa trong tệp của nó.
Bước 4: Chạy Hadoop và Xác Minh Cài Đặt
Sau khi đã cài đặt Java và cấu hình JAVA_HOME cho Hadoop, bạn đã sẵn sàng để khởi chạy Hadoop và kiểm tra xem mọi thứ có hoạt động đúng cách trong chế độ độc lập hay không. Bước này bao gồm việc chạy lệnh Hadoop cơ bản và sau đó thực thi một chương trình MapReduce mẫu để xác minh cài đặt toàn diện.
Khởi Chạy Hadoop Cơ Bản
Để chạy Hadoop, bạn chỉ cần gọi tệp thực thi hadoop nằm trong thư mục bin của cài đặt Hadoop.
/usr/local/hadoop/bin/hadoop
Nếu Hadoop được cấu hình chính xác, bạn sẽ thấy đầu ra tương tự như sau:
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 là tài liệu hướng dẫn sử dụng cơ bản của lệnh Hadoop, cho thấy các tùy chọn và lệnh con có sẵn. Điều này xác nhận rằng bạn đã thiết lập Hadoop thành công để chạy ở chế độ độc lập. Đây là dấu hiệu tốt cho thấy các tệp thực thi và cấu hình cơ bản đang hoạt động.
Chạy Chương Trình MapReduce Mẫu
Để đảm bảo rằng Hadoop đang hoạt động bình thường và có thể thực thi các tác vụ xử lý dữ liệu, bạn sẽ chạy một trong các chương trình MapReduce mẫu mà Hadoop cung cấp. Chương trình này sẽ giúp bạn kiểm tra chức năng cốt lõi của Hadoop.
Đầu tiên, hãy tạo một thư mục đầu vào và sao chép các tệp cấu hình của Hadoop vào đó. Chúng ta sẽ sử dụng các tệp .xml này làm dữ liệu đầu vào cho chương trình mẫu của mình. Việc này mô phỏng một tác vụ xử lý dữ liệu thực tế.
mkdir ~/input
cp /usr/local/hadoop/etc/hadoop/.xml ~/input
Lệnh mkdir ~/input tạo một thư mục mới có tên input trong thư mục chính của bạn. Lệnh cp sau đó sao chép tất cả các tệp .xml từ thư mục cấu hình Hadoop vào thư mục input mới tạo.
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. Đây là một kho lưu trữ Java (JAR) chứa nhiều ví dụ minh họa khác nhau cho việc sử dụng MapReduce.
/usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep ~/input ~/grep_example 'allowed[.]'
Hãy phân tích lệnh này:
/usr/local/hadoop/bin/hadoop jar: Lệnh này được sử dụng để chạy một tệp JAR (Java Archive) như một ứng dụng Hadoop./usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar: Đây là đường dẫn đến tệp JAR chứa các chương trình MapReduce mẫu.grep: Đây là tên của chương trình mẫu chúng ta muốn chạy. Chương trìnhgreptrong Hadoop được thiết kế để đếm số lần xuất hiện của một từ hoặc biểu thức chính quy trong dữ liệu đầu vào.~/input: Đây là thư mục đầu vào chứa dữ liệu mà chương trìnhgrepsẽ xử lý (các tệp.xmlbạn đã sao chép).~/grep_example: Đây là thư mục đầu ra mà Hadoop sẽ ghi kết quả của tác vụ MapReduce. Điều quan trọng là thư mục này không được tồn tại trước khi chạy lệnh. Nếu không, Hadoop sẽ báo lỗi và không thực thi tác vụ.'allowed[.]': Đây là biểu thức chính quy mà chương trìnhgrepsẽ tìm kiếm. Biểu thức này sẽ tìm các lần xuất hiện của từ"allowed"theo sau bởi bất kỳ ký tự nào một hoặc nhiều lần, thường dùng để tìm từ ở cuối câu. Biểu thức này phân biệt chữ hoa chữ thường.
Khi nhiệm vụ hoàn thành, Hadoop sẽ cung cấp một bản tóm tắt chi tiết về những gì đã được xử lý và các lỗi (nếu có) mà nó đã gặp phải. Tuy nhiên, bản tóm tắt này không chứa kết quả thực tế của tác vụ grep.
. . .
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
Đầu ra này hiển thị các số liệu thống kê về hiệu suất của tác vụ MapReduce, bao gồm số byte đã đọc/ghi, số lượng bản ghi được xử lý ở giai đoạn Map và Reduce, và thời gian thực thi. Nó cung cấp một cái nhìn sâu sắc về cách Hadoop xử lý dữ liệu.
Lưu ý quan trọng: Nếu thư mục đầu ra ~/grep_example đã tồn tại, chương trình sẽ không thành công ngay lập tức. Thay vì xem bản tóm tắt, bạn sẽ nhận được thông báo lỗi tương tự như sau:
. . .
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)
Để khắc phục, bạn cần xóa thư mục đầu ra đã tồn tại bằng lệnh rm -r ~/grep_example trước khi chạy lại tác vụ.
Xem Kết Quả MapReduce
Kết quả thực tế của tác vụ grep được lưu trữ trong thư mục đầu ra mà bạn đã chỉ định, tức là ~/grep_example. Bạn có thể kiểm tra nội dung của thư mục này bằng lệnh cat để xem kết quả tìm kiếm.
cat ~/grep_example/
Đầu ra sẽ hiển thị các kết quả đã tìm thấy, cùng với số lần xuất hiện:
22 allowed.
1 allowed
Tác vụ MapReduce đã tìm thấy 22 lần xuất hiện của từ "allowed" theo sau bởi dấu chấm, và 1 lần xuất hiện của từ "allowed" đơn thuần. Điều này xác minh rằng cài đặt Hadoop ở chế độ độc lập của bạn đang hoạt động bình thường. Người dùng không có đặc quyền (non-privileged users) trên hệ thống hiện có thể chạy Hadoop để khám phá dữ liệu hoặc gỡ lỗi các ứng dụng của họ.
Quá trình này đã chứng minh khả năng của Hadoop trong việc thực hiện các tác vụ xử lý dữ liệu phân tán cơ bản. Từ việc cài đặt Java đến chạy một chương trình MapReduce mẫu, mỗi bước đều quan trọng để xây dựng một môi trường Hadoop hoạt động ổn định.
Khắc Phục Sự Cố Thường Gặp Khi Cài Đặt Hadoop
Mặc dù quy trình cách cài hadoop trên ubuntu đã được chuẩn hóa, người dùng vẫn có thể gặp phải một số vấn đề. Hiểu rõ các lỗi phổ biến và cách khắc phục chúng sẽ giúp bạn tiết kiệm thời gian và đảm bảo quá trình triển khai diễn ra suôn sẻ. Đây là một phần quan trọng để làm chủ Hadoop trên Ubuntu.
Một trong những vấn đề phổ biến nhất là lỗi liên quan đến JAVA_HOME. Nếu Hadoop không thể tìm thấy hoặc sử dụng phiên bản Java phù hợp, nó sẽ hiển thị thông báo lỗi. Hãy kiểm tra lại tệp hadoop-env.sh và đảm bảo rằng đường dẫn JAVA_HOME đã được đặt chính xác, hoặc sử dụng tùy chọn động để tự động phát hiện. Đôi khi, lỗi chính tả trong đường dẫn cũng có thể gây ra sự cố.
Quyền truy cập thư mục cũng là một nguồn gây lỗi thường xuyên. Hadoop cần quyền đọc và ghi vào các thư mục làm việc của nó, bao gồm cả thư mục đầu vào và đầu ra cho các tác vụ MapReduce. Nếu bạn gặp lỗi “Permission denied”, hãy kiểm tra quyền của thư mục /usr/local/hadoop và các thư mục ~/input, ~/grep_example. Sử dụng lệnh chmod và chown để cấp quyền thích hợp cho người dùng Hadoop.
Khi chạy các chương trình MapReduce mẫu, lỗi “Output directory already exists” là rất phổ biến. Như đã đề cập trước đó, Hadoop không cho phép ghi đè thư mục đầu ra một cách mặc định. Bạn phải xóa thư mục đầu ra cũ (rm -r ~/grep_example) trước khi chạy lại tác vụ. Điều này giúp ngăn chặn việc mất dữ liệu không mong muốn và đảm bảo tính nhất quán của kết quả.
Sự không tương thích giữa phiên bản Java và Hadoop đôi khi cũng xảy ra. Mặc dù Hadoop 3.x tương thích với Java 8 và Java 11, một số phiên bản Hadoop cũ hơn có thể yêu cầu Java 8. Luôn kiểm tra tài liệu chính thức của Apache Hadoop cho phiên bản cụ thể bạn đang cài đặt để xác định yêu cầu Java. Cài đặt phiên bản Java không đúng có thể dẫn đến các lỗi runtime.
Cuối cùng, việc kiểm tra nhật ký (logs) của Hadoop là một kỹ năng gỡ lỗi quan trọng. Khi gặp lỗi, hãy xem các tệp nhật ký của Hadoop (thường nằm trong thư mục $HADOOP_HOME/logs) để tìm kiếm thông báo lỗi chi tiết. Các thông báo này thường cung cấp manh mối chính xác về nguyên nhân gốc rễ của vấn đề. Hiểu cách đọc và diễn giải nhật ký sẽ giúp bạn giải quyết các sự cố một cách nhanh chóng.
Kết Luận Cuối Cùng
Trong hướng dẫn này, bạn đã tìm hiểu toàn bộ cách cài hadoop trên ubuntu ở chế độ độc lập. Chúng ta đã đi qua từng bước, từ việc chuẩn bị môi trường, cài đặt Java, tải xuống và cấu hình Hadoop, cho đến chạy một chương trình MapReduce mẫu để xác minh cài đặt. Việc này cung cấp một nền tảng vững chắc để bạn bắt đầu khám phá thế giới phân tích dữ liệu lớn. Để tiếp tục hành trình học tập, bạn có thể tham khảo Hướng dẫn MapReduce của Apache Hadoop để tìm hiểu cách viết các chương trình MapReduce của riêng mình, hoặc xem Hướng dẫn Thiết lập Hadoop Cluster để triển khai một cụm đầy đủ.

Vinh Vê Vê là một nhà sáng lập Leon-live.com và là một trong những người tiên phong trong lĩnh vực đánh giá (review) công nghệ với 9 năm kinh nghiệm tại Việt Nam.