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:
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.
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:
Bạn sẽ nhận được kết quả sau:
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:
Bạn sẽ nhận được kết quả sau:
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:
Tiếp theo, xác minh SSH không cần mật khẩu bằng lệnh sau:
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.
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:
Tiếp theo, di chuyển thư mục đã giải nén đến /usr/local/:
Tiếp theo, tạo một thư mục để lưu nhật ký bằng lệnh sau:
Tiếp theo, thay đổi quyền sở hữu thư mục hadoop thành 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:
Thêm các dòng sau:
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:
Trước tiên, hãy xác định đường dẫn Java chính xác bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Tiếp theo, tìm thư mục OpenJDK bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Tiếp theo, chỉnh sửa tệp hadoop-env.sh và xác định đường dẫn Java:
Thêm các dòng sau:
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:
Bây giờ bạn có thể xác minh phiên bản Hadoop bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất:
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:
Thêm các dòng sau:
Lưu và đóng tệp.
Thêm các dòng sau:
Lưu và đóng tệp.
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất.
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:
Bạn sẽ nhận được kết quả sau:
Bạn sẽ nhận được kết quả sau:
Tiếp theo, hãy khởi động Tài nguyên YARN và nodemanagers bằng cách chạy lệnh sau:
Bạn sẽ nhận được kết quả sau:
Bây giờ bạn có thể xác minh chúng bằng lệnh sau:
Bạn sẽ nhận được kết quả 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:
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.
Đ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
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
Mã:
java -version
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
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
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]-----+
Mã:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
Mã:
ssh localhost
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
Mã:
tar -xvzf hadoop-3.2.1.tar.gz
Mã:
sudo mv hadoop-3.2.1 /usr/local/hadoop
Mã:
sudo mkdir /usr/local/hadoop/logs
Mã:
sudo chown -R hadoop:hadoop /usr/local/hadoop
Mã:
nano ~/.bashrc
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"
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
Mã:
/usr/bin/javac
Mã:
readlink -f /usr/bin/javac
Mã:
/usr/lib/jvm/java-11-openjdk-amd64/bin/javac
Mã:
sudo nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
Mã:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64export HADOOP_CLASSPATH+=" $HADOOP_HOME/lib/*.jar"
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
Mã:
phiên bản hadoop
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
Mã:
fs.default.name hdfs://0.0.0.0:9000 URI hệ thống tệp mặc định
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
Mã:
sudo nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
Mã:
dfs.replication 1 dfs.name.dir file:///home/hadoop/hdfs/namenode file:///home/hadoop/hdfs/datanode
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
Mã:
mapreduce.framework.name yarn
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
Mã:
yarn.nodemanager.aux-services mapreduce_shuffle
Đị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
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
Mã:
Đang khởi động namenode trên [0.0.0.0]Đang khởi động datanodeĐang khởi động namenode phụ [ubuntu2004]
Mã:
start-yarn.sh
Mã:
Starting resourcemanagerStarting nodemanagers
Mã:
jps
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: