Cài đặt Hadoop Distributed File System trên macOS với Apache Hadoop 3.2.1

Để triển khai nhanh môi trường HDFS cục bộ nhằm kiểm thử và học tập, bài viết này hướng dẫn cài đặt Hadoop 3.2.1 trên hệ điều hành macOS — không yêu cầu cấu hình cụm phân tán hay máy ảo.

1. Tải và giải nén gói cài đặt

Tải bản binary của Hadoop 3.2.1 từ trang chủ: https://hadoop.apache.org/releases.html. Sau khi tải xong, giải nén vào thư mục làm việc (ví dụ: ~/hadoop-env):

mkdir -p ~/hadoop-env
tar -xzf hadoop-3.2.1.tar.gz -C ~/hadoop-env

Kiểm tra hỗ trợ native libraries:

cd ~/hadoop-env/hadoop-3.2.1
./bin/hadoop checknative

Kết quả thường cho thấy thiếu hỗ trợ các codec như snappy hoặc bzip2 — điều này không ảnh hưởng đến chức năng cơ bản, nhưng nếu cần tối ưu nén/giải nén, nên xây dựng lại Hadoop từ mã nguồn.

2. Cấu hình các file XML bắt buộc

2.1 Cập nhật core-site.xml

Vị trí: ~/hadoop-env/hadoop-3.2.1/etc/hadoop/core-site.xml

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
  <property>
    <name>io.file.buffer.size</name>
    <value>8192</value>
  </property>
  <property>
    <name>fs.trash.interval</name>
    <value>604800</value> <!-- 7 ngày -->
  </property>
</configuration>

2.2 Cập nhật hdfs-site.xml

Vị trí: ~/hadoop-env/hadoop-3.2.1/etc/hadoop/hdfs-site.xml

<configuration>
  <property>
    <name>dfs.namenode.http-address</name>
    <value>localhost:9870</value>
  </property>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>localhost:9868</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/Users/$(whoami)/hadoop-env/data/namenode</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/Users/$(whoami)/hadoop-env/data/datanode</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property>
    <name>dfs.blocksize</name>
    <value>134217728</value> <!-- 128 MB -->
  </property>
  <property>
    <name>dfs.permissions.enabled</name>
    <value>false</value> <!-- Vô hiệu hóa kiểm soát quyền để tránh lỗi trên macOS -->
  </property>
</configuration>

2.3 Điều chỉnh hadoop-env.sh

Mở file ~/hadoop-env/hadoop-3.2.1/etc/hadoop/hadoop-env.sh, tìm dòng chứa JAVA_HOME và cập nhật đường dẫn JDK (tối thiểu Java 8):

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

2.4 Cấu hình yarn-site.xml

Vị trí: ~/hadoop-env/hadoop-3.2.1/etc/hadoop/yarn-site.xml

<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>localhost</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>localhost:8088</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
  </property>
  <property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>512</value>
  </property>
</configuration>

2.5 Thiết lập mapred-site.xml

Sao chép mẫu và chỉnh sửa:

cp ~/hadoop-env/hadoop-3.2.1/etc/hadoop/mapred-site.xml.template \
   ~/hadoop-env/hadoop-3.2.1/etc/hadoop/mapred-site.xml

Nội dung:

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>localhost:10020</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>localhost:19888</value>
  </property>
</configuration>

3. Thiết lập biến môi trường

Thêm vào ~/.zshrc (macOS Catalina trở lên dùng zsh mặc định):

export HADOOP_HOME="$HOME/hadoop-env/hadoop-3.2.1"
export PATH="$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin"
export HADOOP_CONF_DIR="$HADOOP_HOME/etc/hadoop"
export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true"

Áp dụng ngay:

source ~/.zshrc

4. Khởi tạo và khởi động cụm

Định dạng NameNode lần đầu tiên:

$HADOOP_HOME/bin/hdfs namenode -format

Khởi động dịch vụ:

$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
$HADOOP_HOME/bin/mapred --daemon start historyserver

Xác minh tiến trình đang chạy:

jps

Kết quả mong đợi gồm: NameNode, DataNode, SecondaryNameNode, ResourceManager, NodeManager, JobHistoryServer.

5. Truy cập giao diện quản trị

6. Xử lý sự cố thường gặp

6.1 Lỗi liên quan đến quyền người dùng

Nếu gặp lỗi "Operation not permitted" hoặc "Permission denied", thiết lập rõ user cho từng thành phần trong ~/.zshrc:

export HDFS_NAMENODE_USER=$(whoami)
export HDFS_DATANODE_USER=$(whoami)
export HDFS_SECONDARYNAMENODE_USER=$(whoami)
export YARN_RESOURCEMANAGER_USER=$(whoami)
export YARN_NODEMANAGER_USER=$(whoami)

6.2 SSH không sử dụng cổng mặc định

Nếu bạn cấu hình SSH trên cổng khác (ví dụ 2222), thêm vào hadoop-env.sh:

export HADOOP_SSH_OPTS="-p 2222"

Đảm bảo đã thiết lập SSH key-based authentication để tránh nhập mật khẩu mỗi lần khởi động.

6.3 Không truy cập được từ bên ngoài

Trên macOS, tất cả dịch vụ đều bind về localhost — không cần mở cổng firewall hay thay đổi IP thành 0.0.0.0. Nếu bạn đang triển khai trên máy chủ Linux và muốn truy cập từ xa, hãy thay localhost bằng 0.0.0.0 trong các giá trị http-address tương ứng, đồng thời đảm bảo tường lửa cho phép các cổng 9870, 8088, 19888.

Thẻ: hadoop hdfs macos apache-hadoop yarn

Đăng vào ngày 16 tháng 6 lúc 08:53