Cài đặt và cấu hình Hadoop Cluster – Tài liệu 123Host

Cài đặt và cấu hình Hadoop Cluster

Bài viết này sẽ hướng dẫn cách cài đặt và cấu hình Hadoop Cluster.

Hadoop là một dự án Apache mã nguồn mở cho phép tạo các ứng dụng xử lý song song trên các tập dữ liệu lớn, được phân phối trên các nodes được kết nối mạng. Nó bao gồm Hadoop Distributed File System (HDFS™) xử lý khả năng mở rộng và dự phòng dữ liệu giữa các nodes và Hadoop YARN, một khuôn khổ để lập lịch thực hiện các tác vụ xử lý dữ liệu trên tất cả các nodes.

Kiến trúc hadoop cluster

Kiến trúc Hadoop Cluster gồm 2 loại node chính:

  • Master node: lưu giữ thông tin về hệ thống file phân tán, tương đương với bảng inode của ext3, ngoài ra còn có nhiệm vụ lên kế hoạch phân bổ tài nguyên. Trong guide này, node master có 2 nhiệm vụ chính:
    • Name node: quản lý hệ thống file phân tán, nắm thông tin block dữ liệu nào nằm ở đâu trong cluster.
    • ResourceManager: quản lý các job của YARN và quản lý các job được xếp lịch chạy trên các node slave.
  • Worker nodes: lưu dữ liệu thực và cung cấp sức mạnh phần cứng để chạy các job, trong lab này là node1 và node2:
    • Datanode: quản lý các block dữ liệu về mặt vật lý.
    • Nodemanager: quản lý thực hiện các task trên node.

Cài đặt hadoop cluster:

Chuẩn bị:

Với bài hướng dẫn này sẽ được tiến hành cài đặt trên 3 VPS OS Ubuntu 20 LTS hoặc 3 Server OS Ubuntu 20 LTS với IP lần lượt là :

  • 10.124.11.53
  • 10.124.11.16
  • 10.124.11.23

Trong đó  VPS có IP 10.124.11.53 sẽ đóng vai trò là master trong cụm cluster.

Phần môi trường cần cài đặt trên 3 máy: java jdk 1.8 trở lên. Nếu như các node chúng ta chưa có cài đặt java jdk chúng ta có thể thực thi lệnh sau:

apt-get update && apt-get upgrade

apt-get install openjdk-8-jdk

Kiểm tra phiên bản java jdk trên 3 node:

Master node:

root@masternode:~# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~20.04-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

Node 1:

root@node1:~# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~20.04-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

Node 2:

root@node2:~# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~20.04-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

Cấu hình hệ thống

Tạo file host trên mỗi node

Để mỗi node giao tiếp với nhau bằng tên, chúng ta cần tiến hành chỉnh sửa file /etc/hosts để thêm địa chỉ IP:

10.124.11.53 node-master
10.124.11.16 node1
10.124.11.23 node2

Tạo user hadoop

Chúng ta sẽ tiến hành tạo một user mới trên masternode là “hadoop” để quản lý các permission cho đơn giản.

addgroup hadoopgroup

usermod -g hadoopgroup hadoop

Tiến hành chuyển sang user hadoop:

su - hadoop

Tạo keypair xác thực cho user hadoop

Master node sẽ sử dụng giao thức ssh để kết nối tới các node khác và quản lý cluster. Thực hiện:
Log in vào node-master với user hadoop , tạo 1 ssh-key gán cho user hadoop. Sau đó thử ssh bằng user hadoop vào từng node 1, nếu như hỏi password tức là đã thành công:

ssh-keygen -b 4096

Tải xuống và giải nén Hadoop Binaries

Đăng nhập vào node-master với user hadoop, download bộ cài hadoop từ trang chủ:

wget http://apache.cs.utah.edu/hadoop/common/current/hadoop-3.3.1.tar.gz

Giải nén

tar -xvf hadoop-3.3.1.tar.gz

Đổi tên thư mục giải nén thành hadoop cho dễ quản lý

mv hadoop-3.3.1 hadoop

Cấu hình một số biến môi trường

Chúng ta tiền hành thêm một số biến môi trường bằng cách thêm vào file “.profile” bằng cách thêm dòng sau:

PATH=/home/hadoop/hadoop/bin:/home/hadoop/hadoop/sbin:$PATH

Thêm Hadoop vào PATH của chúng ta cho shell. Thực hiện chỉnh sửa file “.bashrc” và thêm các dòng sau:

export HADOOP_HOME=/home/hadoop/hadoop
export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

Cấu hình Master Node

Thiết lập JAVA_HOME

Tìm vị trí cài đặt java, mặc định ở /usr/java/java-8-openjdk-amd64
Có thể tìm bằng cách:

update-alternatives --display java
java - auto mode
link best version is /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
link currently points to /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
link java is /usr/bin/java
slave java.1.gz is /usr/share/man/man1/java.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java - priority 1081
slave java.1.gz: /usr/lib/jvm/java-8-openjdk-amd64/jre/man/man1/java.1.gz

Chỉnh sửa file “~/hadoop/etc/hadoop/hadoop-env.sh” và thay thế dòng này:

export JAVA_HOME=${JAVA_HOME}

sang dòng sau:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre

Đặt đường dẫn Namenode

Trên mỗi node đều cần thiết đặt file core-site.xml tại “~/hadoop/etc/hadoop/core-site.xml”
là thư mục chứa file cấu hình của hệ thống hdfs. Cập nhật tệp “~/hadoop/etc/hadoop/core-site.xml” của chúng ta để đặt vị trí NameNode thành node-master trên cổng 9000:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://node-master:9000</value>
</property>
</configuration>

Đặt đường dẫn cho HDFS

Chỉnh sửa file hdfs-site.conf để giống với cấu hình sau:

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/nameNode</value>
</property><property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/dataNode</value>
</property><property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

Lưu ý: Thuộc tính cuối cùng, dfs.replication cho biết số lần dữ liệu được sao chép trong cluster. Chúng có thể đặt 2 để có tất cả dữ liệu được nhân đôi trên hai node. Không nhập giá trị cao hơn số node thực tế.

Thiết lập Yarn làm Job Scheduler

Chỉnh sửa tệp mapred-site.xml, đặt YARN làm khung mặc định cho các hoạt động MapReduce:

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
</configuration>

Cấu hình YARN

Chỉnh sửa fiber-site.xml, chứa các tùy chọn cấu hình cho YARN. Trong trường giá trị cho fiber.resourcemanager.hostname, hãy thay thế bằng địa chỉ IP public của node-master:

<configuration>
<property>
<name>yarn.acl.enable</name>
<value>0</value>
</property><property>
<name>yarn.resourcemanager.hostname</name>
<value>IP PUBLIC</value>
</property><property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

Cấu hình Workers

Các Workers file được sử dụng bởi các tập lệnh khởi động để bắt đầu các daemon cần thiết trên tất cả các node. Chỉnh sửa “~/hadoop/etc/hadoop/worker” để bao gồm cả hai nút:

node1
node2

Cấu hình phân bổ RAM

Việc phân bổ ram có thể làm để những node có ram thấp có thể chạy được. Các giá trị mặc định được thiết kế cho các máy 8GB ram trở lên. Dưới đây là những tuỳ chỉnh cho những node 2GB Ram.

Một Yarn job được chạy với 2 loại:

  • Một application manager: chịu trách nhiệm giám sát ứng dụng và phối hợp để phân phối excecutor trong cluster (phân phối xem node nào sẽ thực hiện job).
  • Một số executor được tạo bởi application manager chạy các job. Đối với các mapredure job, chúng thực hiện các tiến trình map và redure song song.
  • Cả 2 app trên chạy trên slave node. Mỗi slave node chạy một NodeManager dạng deamon, chịu trách nhiệm đối với việc tạo container trên mỗi node. Toàn bộ cluster chịu sự quản lý của ResourceManager, lên kế hoạch phân bổ các container trên toàn bộ slavenode, dựa trên nhu cầu cần thiết cho mỗi action hiện tại.

Cấu hình cho node 2GB RAM

Property Value
yarn.nodemanager.resource.memory-mb 1536
yarn.scheduler.maximum-allocation-mb 1536
yarn.scheduler.minimum-allocation-mb 128
yarn.app.mapreduce.am.resource.mb 512
mapreduce.map.memory.mb 256
mapreduce.reduce.memory.mb 25

Sửa file /home/hadoop/hadoop/etc/hadoop/yarn-site.xml và thêm các dòng sau:

<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1536</value>
</property><property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>1536</value>
</property><property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>128</value>
</property><property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>

Sửa file /home/hadoop/hadoop/etc/hadoop/mapred-site.xml và thêm các dòng sau:

<property>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>512</value>
</property><property>
<name>mapreduce.map.memory.mb</name>
<value>256</value>
</property><property>
<name>mapreduce.reduce.memory.mb</name>
<value>256</value>
</property>

Nhân bản cấu hình vừa thiết lập tới các slave node

Copy hadoop sang slave node:

cd /home/hadoop/

scp hadoop-*.tar.gz node1:/home/hadoop

scp hadoop-*.tar.gz node2:/home/hadoop

Kết nối tới node1, node2 sử dụng ssh, giải nén 2 gói vừa copy sang:

tar -xzf hadoop-3.3.1.tar.gz

mv hadoop-3.3.1 hadoop

Tiến hành dùng spc tại masternode copy config sang node1 và node 2:

for node in node1 node2; do
scp ~/hadoop/etc/hadoop/* $node:/home/hadoop/hadoop/etc/hadoop/;
done

Format HDFS

HDFS sau khi tạo cũng cần phải được format trước khi sử dụng, tương tự như đối với bất kỳ file system truyền thống nào khác.
Trên node master chúng ta gõ lệnh

Chạy và monitor HDFS

Start và Stop HDFS

Mọi thao tác được thực hiện trên node-master:

start-dfs.sh

jps
53410 SecondaryNameNode
53209 NameNode
53516 Jps

Tại node1 và node2:

jps
929 Jps
903 DataNode

Monitor HDFS cluster

Lấy thông tin về cluster đang chạy bằng lệnh:

hdfs dfsadmin -report

Configured Capacity: 0 (0 B)
Present Capacity: 0 (0 B)
DFS Remaining: 0 (0 B)
DFS Used: 0 (0 B)
DFS Used%: 0.00%
Replicated Blocks:
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
Low redundancy blocks with highest priority to recover: 0
Pending deletion blocks: 0
Erasure Coded Block Groups:
Low redundancy block groups: 0
Block groups with corrupt internal blocks: 0
Missing block groups: 0
Low redundancy blocks with highest priority to recover: 0
Pending deletion blocks: 0

Lấy các thông tin về các lệnh được hỗ trợ bằng lệnh help

hdfs dfsadmin -help

Ngoài ra còn có thể truy cập trang web quản trị: http://node-master-IP:9870

Sử dụng HDFS

Sử dụng lệnh hdfs dfs để thao tác với dữ liệu trên hdfs. Đầu tiên, ta tạo một thư mục mặc định, tất cả các lệnh khác sẽ sử dụng đường dẫn quan hệ tới thư mục home mặc định này.

hdfs dfs -mkdir -p /usr/hadoop/

Tạo thêm thư mục books bên trong hdfs

hdfs dfs -mkdir books

Put dữ liệu lên thư mục books thực hiện lệnh sau:

hdfs dfs -put [data] books

Chúng ta cũng có thể đọc dữ liệu trực tiếp bằng HDFS:

hdfs dfs -cat [duong-dan]

Có nhiều lệnh để quản lý HDFS.  Chúng ta có thể xem cách sử dụng hdfs:

hdfs dfs -help

Thực thi YARN

Bắt đầu và dừng yarn

Bắt đầu Yarn với tập lệnh:

start-yarn.sh

Để dừng Yarn, hãy chạy lệnh sau trên node-master:

stop-yarn.sh

Monitor YARN

Chúng cũng có thể in báo cáo về các node đang chạy bằng lệnh:

fiber node -list

Chúng ta  có thể nhận được danh sách các ứng dụng đang chạy bằng lệnh:

fiber application -list

Hoặc chúng ta có thể truy cập trình duyệt website với URL để kiểm tra: http://node-master-IP:8088

Vậy là đã hoàn thành quá trình hướng dẫn cách cài đặt và cấu hình Hadoop Cluster.

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

5

/

5

(

1

vote

)