DEV Community

Cover image for How to Install Hadoop on Ubuntu: A Step-by-Step Guide
Hải Phạm Ngọc
Hải Phạm Ngọc

Posted on • Edited on

How to Install Hadoop on Ubuntu: A Step-by-Step Guide

Hadoop là một framework mã nguồn mở được thiết kế để lưu trữ và xử lý dữ liệu lớn trên các cụm máy tính. Các thành phần chính của Hadoop bao gồm Hệ thống tệp phân tán Hadoop (HDFS - Hadoop Distributed File System) để lưu trữ và mô hình lập trình MapReduce để xử lý dữ liệu song song. Hadoop giúp các tổ chức quản lý và phân tích hiệu quả các bộ dữ liệu lớn, biến nó thành một công cụ quan trọng trong lĩnh vực phân tích dữ liệu lớn.

Kiến trúc của Hadoop gồm ba thành phần chính:

  • HDFS dùng để lưu trữ
  • Yet Another Resource Negotiator (YARN) để quản lý tài nguyên và điều phối công việc
  • MapReduce để xử lý dữ liệu song song

Các thành phần này phối hợp với nhau để cho phép xử lý hiệu quả và mở rộng các bộ dữ liệu lớn trên các cụm phần cứng phổ thông.

Dưới đây là hướng dẫn từng bước để cài đặt Hadoop Single Node trên Ubuntu:

1. Cài đặt Java Development Kit (JDK)

sudo apt install openjdk-11-jdk
Enter fullscreen mode Exit fullscreen mode

Xác minh việc cài đặt bằng cách kiểm tra phiên bản Java:

java -version
Enter fullscreen mode Exit fullscreen mode

2. Tạo Hadoop User

sudo adduser hadoop
Enter fullscreen mode Exit fullscreen mode

Bạn sẽ được yêu cầu đặt mật khẩu cho người dùng mới. Sau khi đặt mật khẩu, bạn sẽ được nhắc nhập thông tin bổ sung về người dùng. Bạn có thể nhập chi tiết các thông tin này hoặc chỉ cần nhấn Enter để chấp nhận các giá trị mặc định.
Nhập mật khẩu và các thông tin khác cho user hadoop

Tiếp theo, bạn cần cấp đặc quyền sudo cho user hadoop:

sudo usermod -aG sudo hadoop
Enter fullscreen mode Exit fullscreen mode

3. Cài đặt SSH

SSH (Secure Shell) rất cần thiết để cho phép liên lạc an toàn giữa các nút Hadoop. SSH cho phép bạn kết nối với các máy từ xa một cách an toàn và được Hadoop sử dụng để quản lý các nút phân tán của nó. Thiết lập SSH rất quan trọng để đăng nhập không cần mật khẩu, giúp đơn giản hóa việc quản lý cụm Hadoop.

Trước tiên, bạn cần đảm bảo rằng SSH đã được cài đặt trên hệ thống Ubuntu của bạn. Nếu nó chưa được cài đặt, bạn có thể cài đặt nó bằng lệnh sau:

sudo apt install openssh-client openssh-server
Enter fullscreen mode Exit fullscreen mode

Để xác nhận rằng SSH đã được cài đặt chính xác, bạn có thể kiểm tra vị trí của tệp thực thi máy khách và máy chủ SSH:

which ssh
which sshd
Enter fullscreen mode Exit fullscreen mode

Đầu ra của các lệnh này sẽ hiển thị các đường dẫn như /usr/bin/ssh/usr/sbin/sshd, cho biết SSH client và SSH server đã được cài đặt.

4. Chuyển sang Hadoop User đã tạo

Các bước tiếp theo cần được thực hiện trong user hadoop. Do đó, bạn cần chuyển sang user hadoop đã tạo trước đó bằng lệnh sau:

su - hadoop
Enter fullscreen mode Exit fullscreen mode

5. Tạo và thiết lập xác thực dựa trên khóa SSH

ssh-keygen -t rsa -b 4096 -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Enter fullscreen mode Exit fullscreen mode

Xác minh rằng SSH đang hoạt động chính xác bằng cách kết nối với localhost:

ssh localhost 
Enter fullscreen mode Exit fullscreen mode

Khi kết nối lần đầu tiên, bạn có thể thấy thông báo yêu cầu bạn xác nhận tính xác thực của máy chủ. Nhập 'yes' và nhấn 'Enter' để thêm localhost vào danh sách các máy chủ đã biết.

6. Cài đặt Hadoop

Bạn có thể sử dụng lệnh wget để tải xuống phiên bản ổn định mới nhất của Hadoop:

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.4.0/hadoop-3.4.0.tar.gz
Enter fullscreen mode Exit fullscreen mode

Sau khi quá trình tải xuống hoàn tất, bạn cần giải nén nó bằng lệnh sau:

tar -xzvf hadoop-3.4.0.tar.gz 
Enter fullscreen mode Exit fullscreen mode

Di chuyển thư mục Hadoop đã giải nén sang /opt/apache-hadoop để truy cập và quản lý dễ dàng hơn.

sudo mv hadoop-3.4.0 /opt/apache-hadoop
Enter fullscreen mode Exit fullscreen mode

7. Cấu hình biến môi trường

a. Tạo tệp /etc/profile.d/hadoop.sh

sudo nano /etc/profile.d/hadoop.sh
Enter fullscreen mode Exit fullscreen mode

Thêm các dòng bên dưới vào tệp:

#!/bin/sh

HADOOP_HOME="/opt/apache-hadoop"
HADOOP_INSTALL="${HADOOP_HOME}"
HADOOP_MAPRED_HOME="${HADOOP_HOME}"
HADOOP_COMMON_HOME="${HADOOP_HOME}"
HADOOP_HDFS_HOME="${HADOOP_HOME}"
YARN_HOME="${HADOOP_HOME}"
HADOOP_COMMON_LIB_NATIVE_DIR="${HADOOP_HOME}/lib/native"
HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"
PATH="${PATH}:${HADOOP_HOME}/sbin:${HADOOP_HOME}/bin"

export HADOOP_HOME
export HADOOP_INSTALL
export HADOOP_MAPRED_HOME
export HADOOP_COMMON_HOME
export HADOOP_HDFS_HOME
export YARN_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR
export HADOOP_OPTS
export PATH
Enter fullscreen mode Exit fullscreen mode

Nhấn Ctrl + X, sau đó nhấn Y và nhấn Enter để lưu các thay đổi và thoát.

b. Sửa tệp hadoop-env.sh

Tệp hadoop-env.sh được sử dụng để định cấu hình môi trường cho Hadoop Daemons. Việc đặt biến JAVA_HOME ở đây đảm bảo rằng Hadoop sử dụng đúng phiên bản Java.

sudo nano /opt/apache-hadoop/etc/hadoop/hadoop-env.sh
Enter fullscreen mode Exit fullscreen mode

Khi tệp được mở, hãy thêm/sửa đổi dòng sau:

export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
Enter fullscreen mode Exit fullscreen mode

Export JAVA_HOME
Nhấn Ctrl + X, sau đó nhấn Y và nhấn Enter để lưu các thay đổi và thoát.

c. Sửa tệp core-site.xml

sudo nano /opt/apache-hadoop/etc/hadoop/core-site.xml 
Enter fullscreen mode Exit fullscreen mode

Khi tệp được mở, hãy chèn cấu hình sau vào thẻ <configuration>: Cấu hình này đặt hệ thống tệp mặc định thành HDFS chạy trên localhost với cổng 9000.

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>
Enter fullscreen mode Exit fullscreen mode

Sửa tệp core-site.xml
Nhấn Ctrl + X, sau đó nhấn Y và nhấn Enter để lưu các thay đổi và thoát.

d. Sửa tệp mapred-site.xml

sudo nano /opt/apache-hadoop/etc/hadoop/mapred-site.xml 
Enter fullscreen mode Exit fullscreen mode

Khi tệp được mở, hãy chèn cấu hình sau vào thẻ <configuration>:

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.application.classpath</name>
    <value>${HADOOP_MAPRED_HOME}/share/hadoop/mapreduce/*:${HADOOP_MAPRED_HOME}/share/hadoop/mapreduce/lib/*</value>
  </property>
  <property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/apache-hadoop</value>
  </property>
  <property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/apache-hadoop</value>
  </property>
  <property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/apache-hadoop</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>0.0.0.0:10020</value>
    <description>Address and port for Job History Server (default 0.0.0.0:10020)</description>
  </property>
</configuration>
Enter fullscreen mode Exit fullscreen mode

Sửa tệp mapred-site.xml
Nhấn Ctrl + X, sau đó nhấn Y và nhấn Enter để lưu các thay đổi và thoát.

e. Sửa tệp hdfs-site.xml

sudo nano /opt/apache-hadoop/etc/hadoop/hdfs-site.xml 
Enter fullscreen mode Exit fullscreen mode

Khi tệp được mở, hãy chèn cấu hình sau vào thẻ <configuration>:

<configuration>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///data/hadoop/hdfs/namenode</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///data/hadoop/hdfs/datanode</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>
</configuration>
Enter fullscreen mode Exit fullscreen mode

Sửa tệp hdfs-site.xml
Nhấn Ctrl + X, sau đó nhấn Y và nhấn Enter để lưu các thay đổi và thoát.

f. Sửa tệp yarn-site.xml

sudo nano /opt/apache-hadoop/etc/hadoop/yarn-site.xml 
Enter fullscreen mode Exit fullscreen mode

Khi tệp được mở, hãy chèn cấu hình sau vào thẻ <configuration>:

<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>
Enter fullscreen mode Exit fullscreen mode

Sửa tệp yarn-site.xml

Nhấn Ctrl + X, sau đó nhấn Y và nhấn Enter để lưu các thay đổi và thoát.

7. Khởi tạo Hadoop Distributed File System (HDFS)

sudo mkdir -p /data/hadoop/hdfs/{namenode,datanode}
sudo chown -R hadoop:hadoop /data/hadoop
sudo chmod -R 700 /data/hadoop/hdfs
Enter fullscreen mode Exit fullscreen mode

Định dạng NameNode sẽ khởi tạo metadata cho hệ thống tệp Hadoop. Bước này chỉ nên được thực hiện một lần, thường là trong quá trình thiết lập ban đầu, vì việc định dạng lại sẽ xóa metadata hiện có và nội dung hệ thống tệp.

/opt/apache-hadoop/bin/hdfs namenode -format
Enter fullscreen mode Exit fullscreen mode

8. Tạo systemd service file cho Hadoop

Sau khi định dạng NameNode, bạn cần khởi động HDFS Daemons, bao gồm NameNode và DataNode. Khởi động các dịch vụ Hadoop là quá trình khởi tạo các daemon và thành phần cần thiết trong hệ sinh thái Hadoop để giúp cụm hoạt động. Các dịch vụ này bao gồm cả HDFS và YARN

a. Tạo Apache Hadoop DFS Daemons Service File

sudo nano /lib/systemd/system/hadoop-dfs.service
Enter fullscreen mode Exit fullscreen mode
[Unit]
Description=Apache Hadoop DFS Daemons
Requires=network.target
After=network.target

[Service]
Type=forking
User=hadoop
Group=hadoop
ExecStart=/opt/apache-hadoop/sbin/start-dfs.sh
ExecStop=/opt/apache-hadoop/sbin/stop-dfs.sh
Restart=on-failure
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

Nhấn Ctrl + X, sau đó nhấn Y và nhấn Enter để lưu các thay đổi và thoát.
Tạo symlink

sudo ln -s /lib/systemd/system/hadoop-dfs.service /etc/systemd/system/hadoop-dfs.service
Enter fullscreen mode Exit fullscreen mode

b. Tạo Apache Hadoop YARN Daemons Service File

sudo nano /lib/systemd/system/hadoop-yarn.service
Enter fullscreen mode Exit fullscreen mode
[Unit]
Description=Apache Hadoop YARN Daemons
Requires=network.target
After=network.target

[Service]
Type=forking
User=hadoop
Group=hadoop
ExecStart=/opt/apache-hadoop/sbin/start-yarn.sh
ExecStop=/opt/apache-hadoop/sbin/stop-yarn.sh
Restart=on-failure
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

Nhấn Ctrl + X, sau đó nhấn Y và nhấn Enter để lưu các thay đổi và thoát.
Tạo symlink

sudo ln -s /lib/systemd/system/hadoop-yarn.service /etc/systemd/system/hadoop-yarn.service
Enter fullscreen mode Exit fullscreen mode

Yêu cầu systemd tải lại cấu hình của các dịch vụ

sudo systemctl daemon-reload
Enter fullscreen mode Exit fullscreen mode

9. Cấu hình hệ thống khởi động tự động dịch vụ cho Hadoop (Optional)

sudo systemctl enable hadoop-dfs
sudo systemctl enable hadoop-yarn
Enter fullscreen mode Exit fullscreen mode

10. Khởi động Hadoop Services và Verify Status

sudo systemctl start hadoop-dfs
sudo systemctl start hadoop-yarn
Enter fullscreen mode Exit fullscreen mode

Việc xác minh trạng thái daemon của Hadoop bao gồm việc sử dụng lệnh jps, lệnh này liệt kê các quy trình Java để kiểm tra xem các daemon của Hadoop như NameNode, DataNode, PrimaryNameNode, ResourceManager và NodeManagers có đang chạy hay không. Mỗi daemon tương ứng với một quy trình Java, xác nhận trạng thái hoạt động của nó trong cụm Hadoop. Bước này đảm bảo rằng tất cả các thành phần cần thiết đều hoạt động và sẵn sàng xử lý các tác vụ lưu trữ, xử lý và quản lý tài nguyên dữ liệu một cách hiệu quả.

jps
Enter fullscreen mode Exit fullscreen mode

Nếu các daemons khởi động thành công, thì sẽ thấy kết quả tương tự như dưới đây:

1296 NodeManager
1680 SecondaryNameNode
1104 NameNode
929 ResourceManager
3335 Jps
1415 DataNode
Enter fullscreen mode Exit fullscreen mode

Truy cập WebUI NameNode của Hadoop: http://localhost:9870/
WebUI Namenode
Giao diện người dùng NameNode thường hiển thị thông tin cần thiết như tóm tắt cụm, nút dữ liệu, dung lượng HDFS, mức sử dụng hệ thống tệp, v.v. Nó cung cấp thông tin chi tiết về trạng thái chung của HDFS, cho phép quản trị viên và người dùng khắc phục sự cố, quản lý tệp và đảm bảo hiệu suất tối ưu của cụm Hadoop.

Truy cập WebUI của Trình quản lý tài nguyên Hadoop: http://localhost:8088/
WebUI Resource Manager
Giao diện người dùng ResourceManager thường hiển thị bảng thông tin bao gồm thông tin tóm tắt về các ứng dụng đang hoạt động và đã hoàn thành, số liệu sử dụng cụm, trình quản lý nút, hàng đợi, v.v. Điều này cho phép quản trị viên và người dùng theo dõi trạng thái phân bổ và sử dụng tài nguyên hiện tại.

Chúc các bạn thành công!

Top comments (0)