Cách cài đặt và cấu hình Apache Hadoop trên Ubuntu 20.04

theanh

Administrator
Nhân viên
Apache Hadoop là một khuôn khổ mã nguồn mở được sử dụng để quản lý, lưu trữ và xử lý dữ liệu cho nhiều ứng dụng dữ liệu lớn chạy trong các hệ thống cụm. Nó được viết bằng Java với một số mã gốc bằng C và các tập lệnh shell. Nó sử dụng hệ thống tệp phân tán (HDFS) và mở rộng từ các máy chủ đơn lẻ lên hàng nghìn máy.

Apache Hadoop dựa trên bốn thành phần chính:
  • Hadoop Common: Đây là tập hợp các tiện ích và thư viện cần thiết cho các mô-đun Hadoop khác.
  • HDFS: Còn được gọi là Hệ thống tệp phân tán Hadoop được phân phối trên nhiều nút.
  • MapReduce: Đây là một khuôn khổ được sử dụng để viết các ứng dụng xử lý lượng dữ liệu khổng lồ.
  • Hadoop YARN: Còn được gọi là Yet Another Resource Negotiator là lớp quản lý tài nguyên của Hadoop.
Trong hướng dẫn này, chúng tôi sẽ giải thích cách thiết lập cụm Hadoop một nút trên Ubuntu 20.04.

Điều kiện tiên quyết​

  • Máy chủ chạy Ubuntu 20.04 với RAM 4 GB.
  • Mật khẩu gốc được cấu hình trên máy chủ của bạn.

Cập nhật các gói hệ thống​

Trước khi bắt đầu, bạn nên cập nhật các gói hệ thống lên phiên bản mới nhất. Bạn có thể thực hiện bằng lệnh sau:
Mã:
apt-get update -y
apt-get upgrade -y
Sau khi hệ thống của bạn được cập nhật, hãy khởi động lại để triển khai các thay đổi.

Cài đặt Java​

Apache Hadoop là ứng dụng dựa trên Java. Vì vậy, bạn sẽ cần cài đặt Java trong hệ thống của mình. Bạn có thể cài đặt bằng lệnh sau:
Mã:
apt-get install default-jdk default-jre -y
Sau khi cài đặt, bạn có thể xác minh phiên bản Java đã cài đặt bằng lệnh sau:
Mã:
java -version
Bạn sẽ nhận được kết quả sau:
Mã:
openjdk version "11.0.7" 2020-04-14Môi trường chạy thời gian OpenJDK (bản dựng 11.0.7+10-post-Ubuntu-3ubuntu1)Máy ảo máy chủ OpenJDK 64-Bit (bản dựng 11.0.7+10-post-Ubuntu-3ubuntu1, chế độ hỗn hợp, chia sẻ)

Tạo người dùng Hadoop và thiết lập SSH không cần mật khẩu​

Trước tiên, hãy tạo một người dùng mới có tên là hadoop bằng lệnh sau:
Mã:
adduser hadoop
Tiếp theo, thêm người dùng hadoop vào nhóm sudo
usermod -aG sudo hadoop

Tiếp theo, đăng nhập bằng người dùng hadoop và tạo cặp khóa SSH bằng lệnh sau:
Mã:
su - hadoop
ssh-keygen -t rsa
Bạn sẽ nhận được kết quả sau:
Mã:
Đang tạo cặp khóa rsa công khai/riêng tư.Nhập tệp để lưu khóa (/home/hadoop/.ssh/id_rsa):Đã tạo thư mục '/home/hadoop/.ssh'.Nhập mật khẩu (để trống nếu không có mật khẩu):Nhập lại mật khẩu tương tự:Thông tin nhận dạng của bạn đã được lưu trong /home/hadoop/.ssh/id_rsaKhóa công khai của bạn đã được lưu trong /home/hadoop/.ssh/id_rsa.pubDấu vân tay khóa là:SHA256:HG2K6x1aCGuJMqRKJb+GKIDRdKCd8LXnGsB7WSxApno hadoop@ubuntu2004Hình ảnh randomart của khóa là:+---[RSA 3072]----+|..=.. || O.+.o . ||oo*.o + . o ||o .o * o + ||o+E.= o S ||=.+o * o ||*.o.= o o ||=+ o.. + . ||o .. o . |+----[SHA256]-----+
Tiếp theo, thêm khóa này vào Khóa ssh được ủy quyền và cấp quyền thích hợp:
Mã:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
Tiếp theo, xác minh SSH không cần mật khẩu bằng lệnh sau:
Mã:
ssh localhost
Sau khi đăng nhập mà không cần mật khẩu, bạn có thể tiến hành bước tiếp theo.

Cài đặt Hadoop​

Trước tiên, hãy đăng nhập bằng người dùng hadoop và tải xuống phiên bản Hadoop mới nhất bằng lệnh sau:
Mã:
su - hadoop
wget https://downloads.apache.org/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
Sau khi tải xuống hoàn tất, hãy giải nén tệp đã tải xuống bằng lệnh sau:
Mã:
tar -xvzf hadoop-3.2.1.tar.gz
Tiếp theo, di chuyển thư mục đã giải nén đến /usr/local/:
Mã:
sudo mv hadoop-3.2.1 /usr/local/hadoop
Tiếp theo, tạo một thư mục để lưu nhật ký bằng lệnh sau:
Mã:
sudo mkdir /usr/local/hadoop/logs
Tiếp theo, thay đổi quyền sở hữu thư mục hadoop thành hadoop:
Mã:
sudo chown -R hadoop:hadoop /usr/local/hadoop
Tiếp theo, bạn sẽ cần cấu hình các biến môi trường Hadoop. Bạn có thể thực hiện bằng cách chỉnh sửa tệp ~/.bashrc:
Mã:
nano ~/.bashrc
Thêm các dòng sau:
Mã:
export HADOOP_HOME=/usr/local/hadoopexport HADOOP_INSTALL=$HADOOP_HOMEexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/binexport HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, kích hoạt các biến môi trường bằng lệnh sau:
Mã:
source ~/.bashrc

Cấu hình Hadoop​

Trong phần này, chúng ta sẽ tìm hiểu cách thiết lập Hadoop trên một nút duy nhất.

Cấu hình các biến môi trường Java​

Tiếp theo, bạn sẽ cần xác định các biến môi trường Java trong hadoop-env.sh để cấu hình YARN, HDFS, MapReduce và các thiết lập dự án liên quan đến Hadoop.

Trước tiên, hãy xác định đường dẫn Java chính xác bằng lệnh sau:
Mã:
which javac
Bạn sẽ thấy đầu ra sau:
Mã:
/usr/bin/javac
Tiếp theo, tìm thư mục OpenJDK bằng lệnh sau:
Mã:
readlink -f /usr/bin/javac
Bạn sẽ thấy đầu ra sau:
Mã:
/usr/lib/jvm/java-11-openjdk-amd64/bin/javac
Tiếp theo, chỉnh sửa tệp hadoop-env.sh và xác định đường dẫn Java:
Mã:
sudo nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
Thêm các dòng sau:
Mã:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64export HADOOP_CLASSPATH+=" $HADOOP_HOME/lib/*.jar"
Tiếp theo, bạn cũng sẽ cần tải xuống tệp kích hoạt Javax. Bạn có thể tải xuống bằng lệnh sau:
Mã:
cd /usr/local/hadoop/lib
sudo wget https://jcenter.bintray.com/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar
Bây giờ bạn có thể xác minh phiên bản Hadoop bằng lệnh sau:
Mã:
phiên bản hadoop
Bạn sẽ nhận được kết quả sau:
Mã:
Hadoop 3.2.1Kho lưu trữ mã nguồn https://gitbox.apache.org/repos/asf/hadoop.git -r b3cbbb467e22ea829b3808f4b7b01d07e0bf3842Biên soạn bởi rohithsharmaks vào ngày 2019-09-10T15:56ZBiên soạn bằng giao thức 2.5.0Từ nguồn có tổng kiểm tra 776eaf9eee9c0ffc370bcbc1888737Lệnh này được chạy bằng /usr/local/hadoop/share/hadoop/common/hadoop-common-3.2.1.jar

Cấu hình tệp core-site.xml​

Tiếp theo, bạn sẽ cần chỉ định URL cho NameNode của mình. Bạn có thể thực hiện bằng cách chỉnh sửa tệp core-site.xml:
Mã:
sudo nano $HADOOP_HOME/etc/hadoop/core-site.xml
Thêm các dòng sau:
Mã:
 fs.default.name hdfs://0.0.0.0:9000 URI hệ thống tệp mặc định
Lưu và đóng tệp khi bạn hoàn tất:

Cấu hình tệp hdfs-site.xml​

Tiếp theo, bạn sẽ cần xác định vị trí lưu trữ siêu dữ liệu nút, tệp fsimage và tệp nhật ký chỉnh sửa. Bạn có thể thực hiện bằng cách chỉnh sửa tệp hdfs-site.xml. Trước tiên, hãy tạo một thư mục để lưu trữ siêu dữ liệu của nút:
Mã:
sudo mkdir -p /home/hadoop/hdfs/{namenode,datanode}
sudo chown -R hadoop:hadoop /home/hadoop/hdfs
Tiếp theo, hãy chỉnh sửa tệp hdfs-site.xml và xác định vị trí của thư mục:
Mã:
sudo nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
Thêm các dòng sau:
Mã:
  dfs.replication 1    dfs.name.dir file:///home/hadoop/hdfs/namenode    file:///home/hadoop/hdfs/datanode
Lưu và đóng tệp.

Cấu hình tệp mapred-site.xml​

Tiếp theo, bạn sẽ cần xác định các giá trị MapReduce. Bạn có thể định nghĩa nó bằng cách chỉnh sửa tệp mapred-site.xml:
Mã:
sudo nano $HADOOP_HOME/etc/hadoop/mapred-site.xml
Thêm các dòng sau:
Mã:
 mapreduce.framework.name yarn
Lưu và đóng tệp.

Cấu hình tệp yarn-site.xml​

Tiếp theo, bạn sẽ cần chỉnh sửa tệp yarn-site.xml và xác định các cài đặt liên quan đến YARN:
Mã:
sudo nano $HADOOP_HOME/etc/hadoop/yarn-site.xml
Thêm các dòng sau:
Mã:
 yarn.nodemanager.aux-services mapreduce_shuffle
Lưu và đóng tệp khi bạn hoàn tất.

Định dạng HDFS NameNode​

Tiếp theo, bạn sẽ cần xác thực cấu hình Hadoop và định dạng HDFS NameNode.

Trước tiên, hãy đăng nhập bằng người dùng Hadoop và định dạng HDFS NameNode bằng lệnh sau:
Mã:
su - hadoop
hdfs namenode -format
Bạn sẽ nhận được kết quả sau:
Mã:
2020-06-07 11:35:57,691 INFO util.GSet: VM type = 64-bit2020-06-07 11:35:57,692 INFO util.GSet: 0,25% bộ nhớ tối đa 1,9 GB = 5,0 MB2020-06-07 11:35:57,692 INFO util.GSet: capacity = 2^19 = 524288 mục2020-06-07 11:35:57,706 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.window.num.buckets = 102020-06-07 11:35:57,706 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.num.users = 102020-06-07 11:35:57,706 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.windows.minutes = 1,5,252020-06-07 11:35:57,710 INFO namenode.FSNamesystem: Thử lại bộ nhớ đệm trên namenode là enabled2020-06-07 11:35:57,710 INFO namenode.FSNamesystem: Bộ nhớ đệm thử lại sẽ sử dụng 0,03 tổng số heap và thời gian hết hạn mục nhập bộ nhớ đệm thử lại là 600000 millis2020-06-07 11:35:57,712 INFO util.GSet: Khả năng tính toán cho bản đồ NameNodeRetryCache2020-06-07 11:35:57,712 INFO util.GSet: Kiểu VM = 64-bit2020-06-07 11:35:57,712 INFO util.GSet: 0,029999999329447746% bộ nhớ tối đa 1,9 GB = 611,9 KB2020-06-07 11:35:57,712 INFO util.GSet: capacity = 2^16 = 65536 mục2020-06-07 11:35:57,743 INFO namenode.FSImage: Đã phân bổ BlockPoolId mới: BP-1242120599-69.87.216.36-15915297577332020-06-07 11:35:57,763 INFO common.Storage: Thư mục lưu trữ /home/hadoop/hdfs/namenode đã được định dạng thành công.2020-06-07 11:35:57,817 THÔNG TIN namenode.FSImageFormatProtobuf: Lưu tệp hình ảnh /home/hadoop/hdfs/namenode/current/fsimage.ckpt_00000000000000000000 không nén2020-06-07 11:35:57,972 THÔNG TIN namenode.FSImageFormatProtobuf: Tệp hình ảnh /home/hadoop/hdfs/namenode/current/fsimage.ckpt_000000000000000000 có kích thước 398 byte đã được lưu trong 0 giây.2020-06-07 11:35:57,987 THÔNG TIN namenode.NNStorageRetentionManager: Sẽ giữ lại 1 hình ảnh với txid >= 02020-06-07 11:35:58,000 THÔNG TIN namenode.FSImage: Điểm kiểm tra sạch FSImageSaver: txid=0 khi gặp sự cố tắt máy.2020-06-07 11:35:58,003 INFO namenode.NameNode: SHUTDOWN_MSG:/***************************************************************SHUTDOWN_MSG: Đang tắt NameNode tại ubuntu2004/69.87.216.36******************************************************************/

Khởi động Hadoop Cluster​

Trước tiên, hãy khởi động NameNode và DataNode bằng lệnh sau:
Mã:
start-dfs.sh
Bạn sẽ nhận được kết quả sau:
Mã:
Đang khởi động namenode trên [0.0.0.0]Đang khởi động datanodeĐang khởi động namenode phụ [ubuntu2004]
Tiếp theo, hãy khởi động Tài nguyên YARN và nodemanagers bằng cách chạy lệnh sau:
Mã:
start-yarn.sh
Bạn sẽ nhận được kết quả sau:
Mã:
Starting resourcemanagerStarting nodemanagers
Bây giờ bạn có thể xác minh chúng bằng lệnh sau:
Mã:
jps
Bạn sẽ nhận được kết quả sau:
Mã:
5047 NameNode5850 Jps5326 SecondaryNameNode5151 DataNode

Truy cập Giao diện web Hadoop​

Bây giờ bạn có thể truy cập Hadoop NameNode bằng URL http://your-server-ip:9870. Bạn sẽ thấy màn hình sau:



Bạn cũng có thể truy cập từng DataNode bằng URL http://your-server-ip:9864. Bạn sẽ thấy màn hình sau:



Để truy cập YARN Resource Manager, hãy sử dụng URL http://your-server-ip:8088. Bạn sẽ thấy màn hình sau:


Kết luận​

Xin chúc mừng! Bạn đã cài đặt thành công Hadoop trên một nút duy nhất. Bây giờ bạn có thể bắt đầu khám phá các lệnh HDFS cơ bản và thiết kế một cụm Hadoop phân tán hoàn toàn. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên