Hướng dẫn cài hadoop 0.18.0 năm 2024

Apache Hadoop là một dự án phần mềm nguồn mở được sử dụng để xây dựng các hệ thống xử lý dữ liệu lớn, cho phép tính toán phân tán và mở rộng trên các cụm tới hàng ngàn máy tính với khả năng sẵn sàng và chịu lỗi cao. Hiện nay Hadoop đã phát triển trở thành một hệ sinh thái với rất nhiều sản phẩm, dịch vụ khác nhau. Trước đây mình sử dụng Ambari HDP để cài đặt và quản lý Hadoop Ecosystem, công cụ này cho phép tập trung tất cả cấu hình của các dịch vụ Hadoop về một nơi, từ đó dễ dàng quản lý và mở rộng node khi cần. Tuy nhiên từ năm 2021 HDP đã đóng lại để thu phí, tất cả các repository đều yêu cầu tài khoản trả phí để có thể download và cài đặt. Gần đây mình có nhu cầu cần cài đặt hệ thống Hadoop mới, mình quyết định cài tay từng thành phần, tuy sẽ phức tạp và tốn nhiều công sức hơn nhưng mình có thể kiểm soát dễ dàng hơn không bị phụ thuộc vào bên khác, một phần cũng do hệ thống mới chỉ có 3 node nên khối lượng công việc cũng không bị thêm quá nhiều. Toàn bộ quá trình cài đặt mình sẽ ghi chép lại chi tiết trong series các bài viết thuộc chủ đề

$ apt update
$ apt install -y wget tar ssh default-jdk 

2 mọi người chú ý đón đọc nhé!

Nội dung

Mục tiêu

Trong bài viết này mình sẽ cài đặt Hadoop bản mới nhất (3.3.4 vào thời điểm viết bài này) trên 3 node Ubuntu 20.04 và OpenJdk11. Để thuận tiện cho việc setup và thử nghiệm mình sẽ sử dụng Docker để giả lập 3 node này.


Cài đặt môi trường

Đầu tiên chúng ta tạo một bridge network mới trên Docker (Nếu chưa cài Docker các bạn xem hướng dẫn cài tại đây)

$ docker network create hadoop 

Tiếp theo là tạo một container trên image Ubuntu 20.04

$ docker run -it --name node01 -p 9870:9870 -p 8088:8088 -p 19888:19888 --hostname node01 --network hadoop ubuntu:20.04

Mình đang sử dụng MacOS nên cần binding port từ container ra máy host, bạn không cần làm điều này nếu sử dụng Linux hoặc Window.

Cài đặt các package cần thiết

$ apt update
$ apt install -y wget tar ssh default-jdk 

Tạo user hadoop

$ groupadd hadoop
$ useradd -g hadoop -m -s /bin/bash hdfs
$ useradd -g hadoop -m -s /bin/bash yarn
$ useradd -g hadoop -m -s /bin/bash mapred

Vì lý do bảo mật, Hadoop khuyến nghị mỗi dịch vụ nên chạy trên một user khác nhau, xem chi tiết tại đây

Tạo ssh-key trên mỗi user

$ su 
$ ssh-keygen -m PEM -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys

Start ssh service

Thêm hostname trong file

$ apt update
$ apt install -y wget tar ssh default-jdk 

3

Lưu ý

$ apt update $ apt install -y wget tar ssh default-jdk

4 là ip container trên máy của mình, bạn thay bằng ip máy của bạn.

Kiểm tra xem đã ssh được vào hay chưa


Download hadoop và cấu hình

Ta lên trang chủ download của Hadoop tại đây để lấy link down bản mới nhất.

$ wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
$ tar -xvzf hadoop-3.3.4.tar.gz
$ mv hadoop-3.3.4 /lib/hadoop
$ mkdir /lib/hadoop/logs
$ chgrp hadoop -R /lib/hadoop
$ chmod g+w -R /lib/hadoop

Tiếp theo cần cấu hình biến môi trường, ở đây chúng ta sẽ thêm các biến môi trường vào file

$ apt update
$ apt install -y wget tar ssh default-jdk 

5 để tất cả các user trên hệ thống đều có thể sử dụng

export JAVA_HOME=/usr/lib/jvm/default-java
export HADOOP_HOME=/lib/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export HDFS_NAMENODE_USER="hdfs"
export HDFS_DATANODE_USER="hdfs"
export HDFS_SECONDARYNAMENODE_USER="hdfs"
export YARN_RESOURCEMANAGER_USER="yarn"
export YARN_NODEMANAGER_USER="yarn"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

Cập nhật biến môi trường

$ source /etc/bash.bashrc

Cũng cần cập nhật biến môi trường trong file:

$ apt update
$ apt install -y wget tar ssh default-jdk 

6

export JAVA_HOME=/usr/lib/jvm/default-java

Thiết lập cấu hình cho Hadoop

  • $ apt update $ apt install -y wget tar ssh default-jdk

    7 xem full cấu hình tại đây


    
        fs.defaultFS
        hdfs://node01:9000
    
    
        hadoop.tmp.dir
        /home/${user.name}/hadoop
    

$ apt update $ apt install -y wget tar ssh default-jdk

8 là thư mục mình lưu dữ liệu trên HDFS, bạn có thể đổi sang thư mục khác nếu muốn.
  • $ apt update $ apt install -y wget tar ssh default-jdk

    9 xem full cấu hình tại đây

$ docker run -it --name node01 -p 9870:9870 -p 8088:8088 -p 19888:19888 --hostname node01 --network hadoop ubuntu:20.04

0

Cấu hình

$ groupadd hadoop $ useradd -g hadoop -m -s /bin/bash hdfs $ useradd -g hadoop -m -s /bin/bash yarn $ useradd -g hadoop -m -s /bin/bash mapred

0 thiết lập số bản sao thực tế được lưu trữ đối với một dữ liệu trên HDFS.
  • $ groupadd hadoop $ useradd -g hadoop -m -s /bin/bash hdfs $ useradd -g hadoop -m -s /bin/bash yarn $ useradd -g hadoop -m -s /bin/bash mapred

    1 xem full cấu hình tại đây

$ docker run -it --name node01 -p 9870:9870 -p 8088:8088 -p 19888:19888 --hostname node01 --network hadoop ubuntu:20.04

1


Chạy trên 1 node

Format file trên Name Node

$ docker run -it --name node01 -p 9870:9870 -p 8088:8088 -p 19888:19888 --hostname node01 --network hadoop ubuntu:20.04

2

Chạy các dịch vụ của Hadoop trên account root

$ docker run -it --name node01 -p 9870:9870 -p 8088:8088 -p 19888:19888 --hostname node01 --network hadoop ubuntu:20.04

3

Kết quả

  • $ groupadd hadoop $ useradd -g hadoop -m -s /bin/bash hdfs $ useradd -g hadoop -m -s /bin/bash yarn $ useradd -g hadoop -m -s /bin/bash mapred

    2 hoặc

    $ groupadd hadoop $ useradd -g hadoop -m -s /bin/bash hdfs $ useradd -g hadoop -m -s /bin/bash yarn $ useradd -g hadoop -m -s /bin/bash mapred

    3
    Hướng dẫn cài hadoop 0.18.0 năm 2024
  • $ groupadd hadoop $ useradd -g hadoop -m -s /bin/bash hdfs $ useradd -g hadoop -m -s /bin/bash yarn $ useradd -g hadoop -m -s /bin/bash mapred

    4 hoặc

    $ groupadd hadoop $ useradd -g hadoop -m -s /bin/bash hdfs $ useradd -g hadoop -m -s /bin/bash yarn $ useradd -g hadoop -m -s /bin/bash mapred

    5
    Hướng dẫn cài hadoop 0.18.0 năm 2024

Thêm node mới vào cụm

Để thêm một node mới vào cụm thì trên node đó cũng thực hiện đầy đủ các bước ở trên. Do sử dụng Docker nên mình sẽ tạo một image từ container đang có

$ docker run -it --name node01 -p 9870:9870 -p 8088:8088 -p 19888:19888 --hostname node01 --network hadoop ubuntu:20.04

4

Run container mới từ image vừa tạo

$ docker run -it --name node01 -p 9870:9870 -p 8088:8088 -p 19888:19888 --hostname node01 --network hadoop ubuntu:20.04

5

Trên node02 ta start service ssh và xoá thư mục data cũ đi

$ docker run -it --name node01 -p 9870:9870 -p 8088:8088 -p 19888:19888 --hostname node01 --network hadoop ubuntu:20.04

6

Cập nhật ip, hostname của Namenode cho node02

  • File

    $ apt update $ apt install -y wget tar ssh default-jdk

    3

$ docker run -it --name node01 -p 9870:9870 -p 8088:8088 -p 19888:19888 --hostname node01 --network hadoop ubuntu:20.04

7

Trên node01 chúng ta bổ sung thêm ip và hostname của node02

  • File

    $ apt update $ apt install -y wget tar ssh default-jdk

    3

$ docker run -it --name node01 -p 9870:9870 -p 8088:8088 -p 19888:19888 --hostname node01 --network hadoop ubuntu:20.04

8

  • File

    $ groupadd hadoop $ useradd -g hadoop -m -s /bin/bash hdfs $ useradd -g hadoop -m -s /bin/bash yarn $ useradd -g hadoop -m -s /bin/bash mapred

    8

Sau đó start all các dịch vụ của hadoop trên node01

$ docker run -it --name node01 -p 9870:9870 -p 8088:8088 -p 19888:19888 --hostname node01 --network hadoop ubuntu:20.04

3

Kiểm tra node02 đã được add vào chưa

  • $ groupadd hadoop $ useradd -g hadoop -m -s /bin/bash hdfs $ useradd -g hadoop -m -s /bin/bash yarn $ useradd -g hadoop -m -s /bin/bash mapred

    9
    Hướng dẫn cài hadoop 0.18.0 năm 2024
  • $ su $ ssh-keygen -m PEM -P '' -f /.ssh/id_rsa $ cat /.ssh/id_rsa.pub >> /.ssh/authorized_keys $ chmod 0600 /.ssh/authorized_keys 0
    Hướng dẫn cài hadoop 0.18.0 năm 2024

Làm tương tự với node03 ta sẽ được cụm 3 node

Lưu ý do mình clone node02, node03 từ node01 ban đầu nên không cần add ssh-key của các tài khoản (do đã sử dụng chung một ssh-key). Nếu cài trên hệ thống thật thì cần copy public key từ mỗi account trên namenode và add vào authorized_keys của account tương ứng trên datanode.

Hướng dẫn sử dụng cơ bản

Để start tất cả các dịch vụ trong cụm Hadoop ta cần vào master node (trong bài này là node01) sử dụng account root

$ docker run -it --name node01 -p 9870:9870 -p 8088:8088 -p 19888:19888 --hostname node01 --network hadoop ubuntu:20.04

3

Master node cần có ip và hostname của tất cả các slave node trong file

$ apt update $ apt install -y wget tar ssh default-jdk

3 và mỗi account

$ su $ ssh-keygen -m PEM -P '' -f /.ssh/id_rsa $ cat /.ssh/id_rsa.pub >> /.ssh/authorized_keys $ chmod 0600 /.ssh/authorized_keys

2,

$ su $ ssh-keygen -m PEM -P '' -f /.ssh/id_rsa $ cat /.ssh/id_rsa.pub >> /.ssh/authorized_keys $ chmod 0600 /.ssh/authorized_keys

3,

$ su $ ssh-keygen -m PEM -P '' -f /.ssh/id_rsa $ cat /.ssh/id_rsa.pub >> /.ssh/authorized_keys $ chmod 0600 /.ssh/authorized_keys 4 của master node đều có thể ssh đến account tương ứng trên các slave node. Mỗi Slave node đều phải connect được đến Master node thông qua hostname.

Để tắt tất cả dịch vụ của cụm Hadoop

$ apt update
$ apt install -y wget tar ssh default-jdk 

1


Kết luận

Như vậy trong bài viết này mình đã giới thiệu đầy đủ về quá trình cài Hadoop của mình, các bạn làm theo có vấn đề gì thì cố gắng tự giải quyết nha :). Hẹn gặp lại trong bài viết sau.