Apache Hadoop là một khuôn khổ mã nguồn mở để xử lý và lưu trữ dữ liệu lớn. Trong các ngành công nghiệp ngày nay, Hadoop trở thành khuôn khổ tiêu chuẩn cho dữ liệu lớn. Hadoop được thiết kế để chạy trên các hệ thống phân tán với hàng trăm hoặc thậm chí hàng nghìn máy tính cụm hoặc máy chủ chuyên dụng. Với điều này trong tâm trí, Hadoop có thể xử lý các tập dữ liệu lớn với khối lượng lớn và độ phức tạp cho cả dữ liệu có cấu trúc và không có cấu trúc.
Mỗi triển khai Hadoop đều chứa các thành phần sau:
Java OpenJDK 11 có sẵn theo mặc định trên kho lưu trữ Ubuntu và bạn sẽ cài đặt nó thông qua APT.
Để bắt đầu, hãy chạy lệnh apt bên dưới để cập nhật và làm mới danh sách/kho lưu trữ gói trên Ubuntu của bạn hệ thống.
Bây giờ hãy cài đặt Java OpenJDK 11 thông qua lệnh apt bên dưới. Trên kho lưu trữ Ubuntu 22.04, gói 'default-jdk' tham chiếu đến Java OpenJDK v11.
Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục. Và quá trình cài đặt Java OpenJDK sẽ bắt đầu.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22402%22%3E%3C/svg%3E
Sau khi Java được cài đặt, hãy chạy lệnh bên dưới để xác minh phiên bản Java. Bạn nên cài đặt Java OpenJDK 11 trên hệ thống Ubuntu của mình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22121%22%3E%3C/svg%3E
Bây giờ Java OpebnJDK đã được cài đặt, sau đó bạn sẽ thiết lập một người dùng mới với xác thực SSH không cần mật khẩu sẽ được sử dụng để chạy hadoop quy trình và dịch vụ.
Trong trường hợp bạn chưa cài đặt SSH trên hệ thống, hãy chạy lệnh apt bên dưới để cài đặt SSH. Gói 'pdsh' là một máy khách shell từ xa đa luồng cho phép bạn thực thi các lệnh trên nhiều máy chủ ở chế độ song song.
Bây giờ hãy chạy lệnh bên dưới để tạo người dùng mới 'hadoop' và thiết lập mật khẩu cho người dùng 'hadoop'.
Nhập mật khẩu mới cho Người dùng 'hadoop' và nhập lại mật khẩu.
Tiếp theo, thêm người dùng 'hadoop' vào nhóm 'sudo' thông qua lệnh usermod bên dưới. Điều này cho phép người dùng 'hadoop' thực thi lệnh 'sudo'.
Bây giờ người dùng 'hadoop' đã được tạo, hãy đăng nhập vào người dùng 'hadoop' thông qua lệnh bên dưới.
Sau khi đăng nhập, lời nhắc của bạn sẽ trở thành như thế này: "hadoop@hostname..".
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22686%22%20height=%22312%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh bên dưới để tạo khóa công khai và riêng tư SSH. Khi được nhắc thiết lập mật khẩu cho khóa, hãy nhấn ENTER để bỏ qua.
Khóa SSH hiện được tạo vào thư mục ~/.ssh. id_rsa.pub là khóa công khai SSH và tệp 'id_rsa' là khóa riêng tư.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22688%22%20height=%22519%22%3E%3C/svg%3E
Bạn có thể xác minh khóa SSH đã tạo thông qua lệnh sau.
Tiếp theo, chạy lệnh bên dưới để sao chép khóa công khai SSH 'id_rsa.pub' vào tệp 'authorized_keys' và thay đổi quyền mặc định thành 600.
Trong ssh, tệp 'authorized_keys" là nơi bạn lưu trữ khóa công khai ssh, có thể là nhiều khóa công khai. Bất kỳ ai có khóa công khai được lưu trữ trong tệp 'authorized_keys' và có khóa riêng phù hợp sẽ có thể kết nối với máy chủ với tư cách là người dùng 'hadoop' mà không cần mật khẩu.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22724%22%20height=%22162%22%3E%3C/svg%3E
Sau khi cấu hình SSH không cần mật khẩu hoàn tất, bạn có thể xác minh bằng cách kết nối với máy cục bộ thông qua lệnh ssh bên dưới.
Nhập yes để xác nhận và thêm dấu vân tay SSH, bạn sẽ được kết nối với máy chủ mà không cần xác thực bằng mật khẩu.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22406%22%3E%3C/svg%3E
Bây giờ người dùng 'hadoop' đã được tạo và xác thực SSH không cần mật khẩu đã được định cấu hình, sau đó bạn sẽ tiến hành cài đặt hadoop bằng cách tải xuống gói nhị phân hadoop.
Chạy lệnh wget bên dưới để tải gói nhị phân Apache Hadoop xuống thư mục làm việc hiện tại. Bạn sẽ nhận được tệp 'hadoop-3.3.4.tar.gz' trong thư mục làm việc hiện tại của mình.
Tiếp theo, giải nén gói Apache Hadoop 'hadoop-3.3.4.tar.gz' thông qua lệnh tar bên dưới. Sau đó, di chuyển thư mục đã giải nén đến '/usr/local/hadoop'.
Cuối cùng, thay đổi quyền sở hữu thư mục cài đặt hadoop '/usr/local/hadoop' thành người dùng 'hadoop' và nhóm 'hadoop'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22702%22%20height=%22348%22%3E%3C/svg%3E
Trong bước này, bạn đã tải xuống gói nhị phân Apache Hadoop và định cấu hình thư mục cài đặt hadoop. Với những điều đó trong đầu, giờ đây bạn có thể bắt đầu cấu hình cài đặt hadoop.
Thêm các dòng sau vào tệp. Hãy chắc chắn đặt các dòng sau vào cuối dòng.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Tiếp theo, chạy lệnh bên dưới để áp dụng các thay đổi mới trong tệp '~/.bashrc'.
Sau khi lệnh được thực thi, các biến môi trường mới sẽ được áp dụng. Bạn có thể xác minh bằng cách kiểm tra từng biến môi trường thông qua lệnh bên dưới. Và bạn sẽ nhận được đầu ra của từng biến môi trường.
Tiếp theo, bạn cũng sẽ cấu hình biến môi trường JAVA_HOME trong tập lệnh 'hadoop-env.sh'.
Mở tệp 'hadoop-env.sh' bằng lệnh trình chỉnh sửa nano sau. Tệp 'hadoop-env.sh' có sẵn trong thư mục '$HADOOP_HOME', được tham chiếu đến thư mục cài đặt hadoop '/usr/local/hadoop'.
Bỏ chú thích dòng môi trường JAVA_HOME và thay đổi giá trị thành thư mục cài đặt Java OpenJDK '/usr/lib/jvm/java-11-openjdk-amd64'.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn đã hoàn tất.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22659%22%20height=%22275%22%3E%3C/svg%3E
Với cấu hình biến môi trường, hãy chạy lệnh bên dưới để xác minh phiên bản hadoop trên hệ thống của bạn. Bạn sẽ thấy Apache Hadoop 3.3.4 được cài đặt trên hệ thống của mình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22172%22%3E%3C/svg%3E
Lúc này, bạn đã sẵn sàng thiết lập và cấu hình cụm hadoop, có thể triển khai ở nhiều chế độ.
Mở tệp '$HADOOP_HOME/etc/hadoop/core-site.xml' bằng nano sau biên tập viên.
Thêm các dòng bên dưới vào tệp. Hãy chắc chắn thay đổi địa chỉ IP NameNode hoặc bạn có thể thay thế bằng '0.0.0.0' để NameNode có thể chạy ở tất cả các giao diện và địa chỉ IP.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Tiếp theo, chạy lệnh sau để tạo các thư mục mới sẽ được sử dụng cho DataNode trên cụm hadoop. Sau đó, thay đổi quyền sở hữu các thư mục DataNode thành người dùng 'hadoop'.
Sau đó, mở tệp '$HADOOP_HOME/etc/hadoop/hdfs-site.xml' bằng lệnh trình chỉnh sửa nano bên dưới.
Thêm cấu hình sau vào tệp. Trong ví dụ này, bạn sẽ thiết lập cụm hadoop trong một nút duy nhất, do đó bạn phải thay đổi giá trị 'dfs.replication' thành '1'. Ngoài ra, bạn phải chỉ định thư mục sẽ được sử dụng cho DataNode.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Với NameNode và DataNode đã được cấu hình, hãy chạy lệnh bên dưới để định dạng hệ thống tệp hadoop.
Bạn sẽ nhận được đầu ra như sau cái này:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22417%22%3E%3C/svg%3E
Tiếp theo, khởi động NameNode và DataNode thông qua lệnh sau. NameNode sẽ chạy trên địa chỉ IP của máy chủ mà bạn đã cấu hình trong tệp 'core-site.xml'.
Bạn sẽ thấy đầu ra như thế này:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22152%22%3E%3C/svg%3E
Bây giờ NameNode và DataNode đang chạy, sau đó bạn sẽ xác minh cả hai quy trình thông qua giao diện web.
Giao diện web Hadoop NameNode đang chạy cổng '9870'. Vì vậy, hãy mở trình duyệt web của bạn và truy cập địa chỉ IP của máy chủ theo sau là cổng 9870 (ví dụ: http://192.168.5.100:9870/).
Bây giờ bạn sẽ nhận được trang như ảnh chụp màn hình sau - NameNode hiện đang hoạt động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22616%22%3E%3C/svg%3E
Bây giờ hãy nhấp vào menu 'Datanodes' và bạn sẽ nhận được DataNode hiện tại đang hoạt động trên cụm hadoop. Ảnh chụp màn hình sau đây xác nhận rằng DataNode đang chạy trên cổng '9864' trên cụm hadoop.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22511%22%3E%3C/svg%3E
Nhấp vào 'Địa chỉ HTTP' của DataNode và bạn sẽ nhận được một trang mới với thông tin chi tiết về DataNode. Ảnh chụp màn hình sau đây xác nhận rằng DataNode đang chạy với thư mục ổ đĩa '/home/hadoop/hdfs/datanode'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22469%22%3E%3C/svg%3E
Với NameNode và DataNode đang chạy, tiếp theo bạn sẽ thiết lập và chạy MapReduce trên trình quản lý Yarn (Một ResourceManager và NodeManager khác).
Mở tệp '$HADOOP_HOME/etc/hadoop/mapred-site.xml' bằng cách sử dụng lệnh trình chỉnh sửa nano sau.
Thêm các dòng bên dưới vào tệp. Hãy chắc chắn thay đổi mapreduce.framework.name thành 'yarn'.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Tiếp theo, mở cấu hình Yarn '$HADOOP_HOME/etc/hadoop/yarn-site.xml' bằng trình chỉnh sửa nanoe sau lệnh.
Thay đổi cấu hình mặc định bằng các thiết lập sau.
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.
Bây giờ hãy chạy lệnh bên dưới để khởi động daemon Yarn. Và bạn sẽ thấy cả ResourceManager và NodeManager đều đang khởi động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22455%22%20height=%22124%22%3E%3C/svg%3E
ResourceManager sẽ chạy ở pot mặc định là 8088. Quay lại trình duyệt web của bạn và truy cập địa chỉ IP của máy chủ theo sau là cổng ResourceManager '8088' (ví dụ: http://192.168.5.100:8088/).
Bạn sẽ thấy giao diện web của hadoop ResourceManager. Từ đây, bạn có thể theo dõi tất cả các tiến trình đang chạy bên trong cụm Hadoop.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22238%22%3E%3C/svg%3E
Nhấp vào menu Nodes và bạn sẽ nhận được node đang chạy hiện tại trên cụm Hadoop.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22229%22%3E%3C/svg%3E
Bây giờ Cụm Hadoop đang chạy ở chế độ phân tán giả. Điều này có nghĩa là mỗi quy trình Hadoop đang chạy như một quy trình duy nhất trên một máy chủ Ubuntu 22.04, bao gồm NameNode, DataNode, MapReduce và Yarn.
Loại triển khai Hadoop này, chế độ Pseudo-Distributed, chỉ được khuyến nghị để thử nghiệm. Nếu bạn muốn một hệ thống phân tán có thể xử lý các tập dữ liệu trung bình hoặc lớn, bạn có thể triển khai Hadoop ở chế độ Clustered, chế độ này cần nhiều hệ thống máy tính hơn và cung cấp tính khả dụng cao cho ứng dụng của bạn.
Mỗi triển khai Hadoop đều chứa các thành phần sau:
- Hadoop Common: Các tiện ích chung hỗ trợ các mô-đun Hadoop khác.
- Hadoop Distributed File System (HDFS): Một hệ thống tệp phân tán cung cấp quyền truy cập thông lượng cao vào dữ liệu ứng dụng.
- Hadoop YARN: Một khuôn khổ để lập lịch công việc và quản lý tài nguyên cụm.
- Hadoop MapReduce: Một hệ thống dựa trên YARN để xử lý song song các tập dữ liệu lớn.
Điều kiện tiên quyết
Để hoàn thành hướng dẫn này, bạn sẽ cần các yêu cầu sau:- Máy chủ Ubuntu 22.04 - Ví dụ này sử dụng máy chủ Ubuntu có tên máy chủ 'hadoop' và địa chỉ IP '192.168.5.100'.
- Người dùng không phải root có quyền quản trị viên sudo/root.
Cài đặt Java OpenJDK
Hadoop là một dự án lớn thuộc Apache Software Foundation, chủ yếu được viết bằng Java. Tại thời điểm viết bài này, phiên bản mới nhất của hadoop là v3.3,4, hoàn toàn tương thích với Java v11.Java OpenJDK 11 có sẵn theo mặc định trên kho lưu trữ Ubuntu và bạn sẽ cài đặt nó thông qua APT.
Để bắt đầu, hãy chạy lệnh apt bên dưới để cập nhật và làm mới danh sách/kho lưu trữ gói trên Ubuntu của bạn hệ thống.
Mã:
sudo apt update
Mã:
sudo apt install default-jdk
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22402%22%3E%3C/svg%3E
Sau khi Java được cài đặt, hãy chạy lệnh bên dưới để xác minh phiên bản Java. Bạn nên cài đặt Java OpenJDK 11 trên hệ thống Ubuntu của mình.
Mã:
java -version
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22121%22%3E%3C/svg%3E
Bây giờ Java OpebnJDK đã được cài đặt, sau đó bạn sẽ thiết lập một người dùng mới với xác thực SSH không cần mật khẩu sẽ được sử dụng để chạy hadoop quy trình và dịch vụ.
Thiết lập xác thực người dùng và SSH không cần mật khẩu
Apache Hadoop yêu cầu dịch vụ SSH phải chạy trên hệ thống. Dịch vụ này sẽ được các tập lệnh hadoop sử dụng để quản lý daemon hadoop từ xa trên máy chủ từ xa. Trong bước này, bạn sẽ tạo một người dùng mới sẽ được sử dụng để chạy các quy trình và dịch vụ hadoop, sau đó thiết lập xác thực SSH không cần mật khẩu.Trong trường hợp bạn chưa cài đặt SSH trên hệ thống, hãy chạy lệnh apt bên dưới để cài đặt SSH. Gói 'pdsh' là một máy khách shell từ xa đa luồng cho phép bạn thực thi các lệnh trên nhiều máy chủ ở chế độ song song.
Mã:
sudo apt install openssh-server openssh-client pdsh
Mã:
sudo useradd -m -s /bin/bash hadoop
sudo passwd hadoop
Tiếp theo, thêm người dùng 'hadoop' vào nhóm 'sudo' thông qua lệnh usermod bên dưới. Điều này cho phép người dùng 'hadoop' thực thi lệnh 'sudo'.
Mã:
sudo usermod -aG sudo hadoop
Mã:
su - hadoop
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22686%22%20height=%22312%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh bên dưới để tạo khóa công khai và riêng tư SSH. Khi được nhắc thiết lập mật khẩu cho khóa, hãy nhấn ENTER để bỏ qua.
Mã:
ssh-keygen -t rsa
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22688%22%20height=%22519%22%3E%3C/svg%3E
Bạn có thể xác minh khóa SSH đã tạo thông qua lệnh sau.
Mã:
ls ~/.ssh/
Trong ssh, tệp 'authorized_keys" là nơi bạn lưu trữ khóa công khai ssh, có thể là nhiều khóa công khai. Bất kỳ ai có khóa công khai được lưu trữ trong tệp 'authorized_keys' và có khóa riêng phù hợp sẽ có thể kết nối với máy chủ với tư cách là người dùng 'hadoop' mà không cần mật khẩu.
Mã:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22724%22%20height=%22162%22%3E%3C/svg%3E
Sau khi cấu hình SSH không cần mật khẩu hoàn tất, bạn có thể xác minh bằng cách kết nối với máy cục bộ thông qua lệnh ssh bên dưới.
Mã:
ssh localhost
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22406%22%3E%3C/svg%3E
Bây giờ người dùng 'hadoop' đã được tạo và xác thực SSH không cần mật khẩu đã được định cấu hình, sau đó bạn sẽ tiến hành cài đặt hadoop bằng cách tải xuống gói nhị phân hadoop.
Tải xuống Hadoop
Sau khi tạo người dùng mới và định cấu hình xác thực SSH không cần mật khẩu, giờ đây bạn có thể tải xuống gói nhị phân Apache Hadoop và thiết lập thư mục cài đặt cho gói đó. Trong ví dụ này, bạn sẽ tải hadoop v3.3.4 và thư mục cài đặt đích sẽ là thư mục '/usr/local/hadoop'.Chạy lệnh wget bên dưới để tải gói nhị phân Apache Hadoop xuống thư mục làm việc hiện tại. Bạn sẽ nhận được tệp 'hadoop-3.3.4.tar.gz' trong thư mục làm việc hiện tại của mình.
Mã:
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
Mã:
tar -xvzf hadoop-3.3.4.tar.gz
sudo mv hadoop-3.3.4 /usr/local/hadoop
Mã:
sudo chown -R hadoop:hadoop /usr/local/hadoop
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22702%22%20height=%22348%22%3E%3C/svg%3E
Trong bước này, bạn đã tải xuống gói nhị phân Apache Hadoop và định cấu hình thư mục cài đặt hadoop. Với những điều đó trong đầu, giờ đây bạn có thể bắt đầu cấu hình cài đặt hadoop.
Thiết lập Biến môi trường Hadoop
Mở tệp cấu hình '~/.bashrc' thông qua lệnh trình soạn thảo nano bên dưới.
Mã:
nano ~/.bashrc
Mã:
# Hadoop environment variables
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
Tiếp theo, chạy lệnh bên dưới để áp dụng các thay đổi mới trong tệp '~/.bashrc'.
Mã:
source ~/.bashrc
Mã:
echo $JAVA_HOME
echo $HADOOP_HOME
echo $HADOOP_OPTS
Mở tệp 'hadoop-env.sh' bằng lệnh trình chỉnh sửa nano sau. Tệp 'hadoop-env.sh' có sẵn trong thư mục '$HADOOP_HOME', được tham chiếu đến thư mục cài đặt hadoop '/usr/local/hadoop'.
Mã:
nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
Mã:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22659%22%20height=%22275%22%3E%3C/svg%3E
Với cấu hình biến môi trường, hãy chạy lệnh bên dưới để xác minh phiên bản hadoop trên hệ thống của bạn. Bạn sẽ thấy Apache Hadoop 3.3.4 được cài đặt trên hệ thống của mình.
Mã:
hadoop version
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22172%22%3E%3C/svg%3E
Lúc này, bạn đã sẵn sàng thiết lập và cấu hình cụm hadoop, có thể triển khai ở nhiều chế độ.
Thiết lập cụm Apache Hadoop: Chế độ phân tán giả
Trong hadoop, bạn có thể tạo cụm ở ba chế độ khác nhau:- Chế độ cục bộ (độc lập) - cài đặt hadoop mặc định, được chạy như một quy trình Java duy nhất và chế độ không phân tán. Với chế độ này, bạn có thể dễ dàng gỡ lỗi quy trình hadoop.
- Chế độ phân tán giả - Chế độ này cho phép bạn chạy cụm hadoop với chế độ phân tán ngay cả khi chỉ có một nút/máy chủ. Ở chế độ này, các quy trình hadoop sẽ được chạy trong các quy trình Java riêng biệt.
- Chế độ phân tán hoàn toàn - triển khai hadoop lớn với nhiều hoặc thậm chí hàng nghìn nút/máy chủ. Nếu bạn muốn chạy hadoop trong môi trường sản xuất, bạn nên sử dụng hadoop ở chế độ phân phối hoàn toàn.
- core-site.xml - Cấu hình này sẽ được sử dụng để xác định NameNode cho cụm hadoop.
- hdfs-site.xml - Cấu hình này sẽ được sử dụng để xác định DataNode trên cụm hadoop.
- mapred-site.xml - Cấu hình MapReduce cho cụm hadoop.
- yarn-site.xml - Cấu hình ResourceManager và NodeManager cho cụm hadoop.
Thiết lập NameNode và DataNode
Đầu tiên, bạn sẽ thiết lập NameNode và DataNode cho cụm hadoop.Mở tệp '$HADOOP_HOME/etc/hadoop/core-site.xml' bằng nano sau biên tập viên.
Mã:
sudo nano $HADOOP_HOME/etc/hadoop/core-site.xml
Mã:
fs.defaultFS
hdfs://192.168.5.100:9000
Tiếp theo, chạy lệnh sau để tạo các thư mục mới sẽ được sử dụng cho DataNode trên cụm hadoop. Sau đó, thay đổi quyền sở hữu các thư mục DataNode thành người dùng 'hadoop'.
Mã:
sudo mkdir -p /home/hadoop/hdfs/{namenode,datanode}
sudo chown -R hadoop:hadoop /home/hadoop/hdfs
Mã:
sudo nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
Mã:
dfs.replication
1
dfs.name.dir
file:///home/hadoop/hdfs/namenode
dfs.data.dir
file:///home/hadoop/hdfs/datanode
Với NameNode và DataNode đã được cấu hình, hãy chạy lệnh bên dưới để định dạng hệ thống tệp hadoop.
Mã:
hdfs namenode -format
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22417%22%3E%3C/svg%3E
Tiếp theo, khởi động NameNode và DataNode thông qua lệnh sau. NameNode sẽ chạy trên địa chỉ IP của máy chủ mà bạn đã cấu hình trong tệp 'core-site.xml'.
Mã:
start-dfs.sh
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22152%22%3E%3C/svg%3E
Bây giờ NameNode và DataNode đang chạy, sau đó bạn sẽ xác minh cả hai quy trình thông qua giao diện web.
Giao diện web Hadoop NameNode đang chạy cổng '9870'. Vì vậy, hãy mở trình duyệt web của bạn và truy cập địa chỉ IP của máy chủ theo sau là cổng 9870 (ví dụ: http://192.168.5.100:9870/).
Bây giờ bạn sẽ nhận được trang như ảnh chụp màn hình sau - NameNode hiện đang hoạt động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22616%22%3E%3C/svg%3E
Bây giờ hãy nhấp vào menu 'Datanodes' và bạn sẽ nhận được DataNode hiện tại đang hoạt động trên cụm hadoop. Ảnh chụp màn hình sau đây xác nhận rằng DataNode đang chạy trên cổng '9864' trên cụm hadoop.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22511%22%3E%3C/svg%3E
Nhấp vào 'Địa chỉ HTTP' của DataNode và bạn sẽ nhận được một trang mới với thông tin chi tiết về DataNode. Ảnh chụp màn hình sau đây xác nhận rằng DataNode đang chạy với thư mục ổ đĩa '/home/hadoop/hdfs/datanode'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22469%22%3E%3C/svg%3E
Với NameNode và DataNode đang chạy, tiếp theo bạn sẽ thiết lập và chạy MapReduce trên trình quản lý Yarn (Một ResourceManager và NodeManager khác).
Trình quản lý Yarn
Để chạy MapReduce trên Yarn ở chế độ phân tán giả, bạn cần thực hiện một vài thay đổi đối với các tệp cấu hình.Mở tệp '$HADOOP_HOME/etc/hadoop/mapred-site.xml' bằng cách sử dụng lệnh trình chỉnh sửa nano sau.
Mã:
sudo nano $HADOOP_HOME/etc/hadoop/mapred-site.xml
Mã:
mapreduce.framework.name
yarn
mapreduce.application.classpath
$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*
Tiếp theo, mở cấu hình Yarn '$HADOOP_HOME/etc/hadoop/yarn-site.xml' bằng trình chỉnh sửa nanoe sau lệnh.
Mã:
sudo nano $HADOOP_HOME/etc/hadoop/yarn-site.xml
Mã:
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME
Bây giờ hãy chạy lệnh bên dưới để khởi động daemon Yarn. Và bạn sẽ thấy cả ResourceManager và NodeManager đều đang khởi động.
Mã:
start-yarn.sh
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22455%22%20height=%22124%22%3E%3C/svg%3E
ResourceManager sẽ chạy ở pot mặc định là 8088. Quay lại trình duyệt web của bạn và truy cập địa chỉ IP của máy chủ theo sau là cổng ResourceManager '8088' (ví dụ: http://192.168.5.100:8088/).
Bạn sẽ thấy giao diện web của hadoop ResourceManager. Từ đây, bạn có thể theo dõi tất cả các tiến trình đang chạy bên trong cụm Hadoop.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22238%22%3E%3C/svg%3E
Nhấp vào menu Nodes và bạn sẽ nhận được node đang chạy hiện tại trên cụm Hadoop.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22229%22%3E%3C/svg%3E
Bây giờ Cụm Hadoop đang chạy ở chế độ phân tán giả. Điều này có nghĩa là mỗi quy trình Hadoop đang chạy như một quy trình duy nhất trên một máy chủ Ubuntu 22.04, bao gồm NameNode, DataNode, MapReduce và Yarn.
Kết luận
Trong hướng dẫn này, bạn đã cài đặt Apache Hadoop trên một máy chủ Ubuntu 22.04. Bạn đã cài đặt Hadoop với chế độ Pseudo-Distributed được bật, nghĩa là mỗi thành phần Hadoop đang chạy như một quy trình Java duy nhất trên hệ thống. Trong hướng dẫn này, bạn cũng đã tìm hiểu cách thiết lập Java, thiết lập các biến môi trường hệ thống và thiết lập xác thực SSH không cần mật khẩu thông qua khóa công khai-riêng tư SSH.Loại triển khai Hadoop này, chế độ Pseudo-Distributed, chỉ được khuyến nghị để thử nghiệm. Nếu bạn muốn một hệ thống phân tán có thể xử lý các tập dữ liệu trung bình hoặc lớn, bạn có thể triển khai Hadoop ở chế độ Clustered, chế độ này cần nhiều hệ thống máy tính hơn và cung cấp tính khả dụng cao cho ứng dụng của bạn.