3/29/2021

Cài đặt và triển khai Hadoop Single Node | Share


Mỗi ngành công nghiệp lớn đang triển khai Apache Hadoop là khung tiêu chuẩn để xử lý và lưu trữ dữ liệu lớn. Hadoop được thiết kế để được triển khai trên một mạng lưới hàng trăm hoặc thậm chí hàng ngàn máy chủ chuyên dụng. Tất cả các máy này làm việc cùng nhau để đối phó với khối lượng lớn và nhiều bộ dữ liệu khổng lồ.

Xem thêmCài đặt và triển khai Spark standalone



Hadoop mạnh mẽ và hữu dụng chỉ khi được cài đặt và khai thác nó trên nhiều node, tuy nhiên với người bắt đầu thì Hadoop Single node là sự khởi đầu tuyệt vời để làm quen với hadoop. Bài viết này mình sẽ hướng dẫn các bạn triển khai Hadoop trên 1 node ( Hadoop Single node).

Điều kiện trước khi cài : 

  • Máy bạn phải có Openjdk ( bản 8, 11 hay 15 đều được), nếu chưa có thì bạn có thể cài theo câu lệnh sau : 
sudo apt-get install openjdk-11-jdk -y
  • Máy có SSH client và SSH server, nếu chưa có thì bạn có thể cài theo câu lệnh sau : 
sudo apt-get install openssh-server openssh-client -y

Thiết lập User cho Hadoop

Thường mình thấy một nhiều trang hướng dẫn các bạn tạo một user mới trên Ubuntu và cài Hadoop trên đó nhưng qua trải nhiệm của mình thì cài Single Node chúng ta có thể cài trên bất cứ tài khoản nào, bạn có thể cài đặt ngay trên tài khoản admin mà bạn đang dùng hiện tại.

Tạo cặp khóa SSH và xác định vị trí sẽ được lưu trữ : 

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

Hệ thống sẽ tiến hành tạo và lưu cặp khóa SSH : 

Sử dụng lệnh cat để lưu public key vào authorized_keys trong thư mục của SSH:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Phân quyền cho người dùng với lệnh chmod :

chmod 0600 ~/.ssh/authorized_keys

Xác minh mọi thứ được thiết lập chính xác bằng cách ssh đến localhost: 

ssh localhost

Download và Cài đặt Hadoop trên Ubuntu

Tải về một phiên bản Hadoop trên trang phân phối chính thức của Hadoop tại : https://hadoop.apache.org/releases.html

Ấn vào phần binary trong Binary download

Bây giờ để file nén mà bạn vừa tải về vào bất kì chỗ nào và giải nén nó ra bằng lệnh : 

tar xvzf hadoop-3.2.2.tar.gz 

Cấu hình và triển khai Hadoop Single Node (Pseudo-Distributed Mode)

Để cấu hình Hadoop cho chế độ phân phối giả chúng ta sẽ chỉnh sửa các tập file cấu hình của Hadoop trong đường dẫn etc/hadoop và trong file cấu hình môi trường gồm các file sau : 

  • .bashrc
  • hadoop-env.sh
  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • yarn-site.xml

Cấu hình biến môi trường Hadoop ( file .bashrc)

Mở file của .bashrc của bạn bằng trình soạn thảo nano : 

sudo nano ~/.bashrc 

Xác định biến mỗi trường Hadoop bằng cách thêm các biến sau vào cuối file ( nhớ chỉnh sửa đường dẫn $HADOOP_HOME cho đúng với đường dẫn mà bạn đã đặt hadoop)

#Hadoop Related Options

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

export HADOOP_HOME=/opt/myapp/hadoop-3.2.2

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export HADOOP_YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native" 

Áp dụng các thay đổi trên bằng cách thực hiện lệnh sau : 

source ~/.bashrc 

 

Chỉnh sửa file hadoop-env.sh

Mở file hadoop-env.sh bằng trình soạn thảo nano : 

sudo nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh 

Tìm tới vị trí như hình bên dưới, bỏ comment ( bỏ dấu #) phần JAVA_HOME và thêm vào đầy đủ đường dẫn Openjdk trên máy của bạn : 



Chỉnh sửa file core-site.xml

Mở file core-site.xml bằng trình soạn thảo nano : 

sudo nano $HADOOP_HOME/etc/hadoop/core-site.xml

Thêm vào giữa 2 thẻ configuration để được nội dung đầy đủ như sau : 

<configuration>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/myapp/hadoop-3.2.2/tmpdata</value>
</property>
<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:9001</value>
</property>
</configuration>

 

Chỉnh sửa file hdfs-site.xml

Mở file core-site.xml bằng trình soạn thảo nano : 

sudo nano $HADOOP_HOME/etc/hadoop/core-site.xml 

Thêm vào giữa 2 thẻ configuration để được nội dung đầy đủ như sau : 

<configuration>
<property>
  <name>dfs.data.dir</name>
  <value>/opt/myapp/hadoop-3.2.2/dfsdata/namenode</value>
</property>
<property>
  <name>dfs.data.dir</name>
  <value>/opt/myapp/hadoop-3.2.2/dfsdata/datanode</value>
</property>
<property>
  <name>dfs.replication</name>
  <value>2</value>
</property>
</configuration>

 

Chỉnh sửa file mapred-site.xml

Mở file core-site.xml bằng trình soạn thảo nano : 

sudo nano $HADOOP_HOME/etc/hadoop/mapred-site.xml

Thêm vào giữa 2 thẻ configuration để được nội dung đầy đủ như sau : 

<configuration>
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
</configuration>

 

Chỉnh sửa file yarn-site.xml

Mở file core-site.xml bằng trình soạn thảo nano : 

sudo nano $HADOOP_HOME/etc/hadoop/yarn-site.xml  

Thêm vào giữa 2 thẻ configuration để được nội dung đầy đủ như sau : 

<configuration>
<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
<property>
  <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
  <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>127.0.0.1</value>
</property>
<property>
  <name>yarn.acl.enable</name>
  <value>0</value>
</property>
<property>
  <name>yarn.nodemanager.env-whitelist</name>   
  <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PERPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>

 

Format HDFS namenode

Các bạn phải định dạng lại namenode trước khi bắt đầu các dịch vụ đầu tiên : 

hdfs namenode -format

 

Start Hadoop Cluster

Tại thư mục sbin, thực hiện các lệnh sau để chạy và khởi động Hadoop : 

./start-all.sh

Chạy lệnh jsp để kiểm tra các trình daemon đang chạy : 

jps

Nếu kết quả ra 6 trình daemon như sau thì bạn đã cấu hình đúng : 



Truy cập Hadoop UI từ trình duyệt 

Các bạn có thể kiểm tra Hadoop đã được cài đặt thành công hay chưa tại cổng mặc định của namenode là 9870 : 

localhost:9870



Kiểm tra datanode tại cổng mặc định 9864 : 

localhost:9864

Kiểm tra Yarn resource manager tại cổng 8088 : 

locahost:8088


Tham khảo : https://phoenixnap.com/

7 comments:

  1. hadoop giờ tích hợp vào HDP rồi bạn ơi, dùng cái đó cho tiện (nếu muốn vọc thì dùng bản HDP Sandbox), có nhiều dịch vụ hơn như Spark, Kerberos, .... Doanh nghiệp giờ họ cũng dùng HDP hết rồi chứ ko cài hadoop như này nữa đâu

    ReplyDelete
    Replies
    1. Chào bạn, blog mình đang nói về xoay quanh các môn học của trường ĐHBK và các vấn đề liên quan là chủ yếu, trong môn lưu trữ và xử lý dữ liệu lớn mọi người sẽ được học và có lab là cài Hadoop vì vậy mình viết bài viết hướng dẫn cài Hadoop Single Node.
      Biết là doanh nghiệp không sử dụng vậy nhưng trong bài viết mình có nêu rõ Hadoop Single node là một sự khởi đầu tuyệt vời để làm quen với Hadoop như cách cấu hình, HDFS command,... Và không có những cái cơ bản như vậy làm sao có được những cái nâng cao.
      Cuối cùng mình vẫn cảm ơn sự góp ý của bạn, chúc bạn ngày mới tuyệt vời.

      Delete
    2. Có thể là bạn master nhưng khi bạn nói lại cho người khác thì phải đặt mình vào vị thế của người khác nữa bạn. Master nói chuyện với các master thì sẽ khác nhưng những người ở đây đa số là chưa biết gì.
      Với lại Intern Bigdata ở VC Corp mọi người vẫn phải cài Hadoop Single Node trước nha, 1 phần là để thực hiện các task còn lại trên chính con Hadoop này, 1 phần là để vọc vạch cài đặt cho quen.

      Delete
    3. Cảm ơn ad rất nhiều vì bài viết này. Mình đã cài được Hadoop nhờ nó nhưng khi kiểm tra JPS thì thiếu mất cái dịch vụ cuối là XML Server Launcher, không biết sai ở đâu ạ

      Delete
    4. có 6 cái daemon bên trên thôi nha bạn, những cái khác sinh ra khi ban chạy chương trình và cái XMLServerLauncher cũng thế =)))

      Delete
  2. Ad ơi, có thể làm thêm bài viết về Kafka Streaming, kiến thức về HDFS, sử dụng SparkSQL không ạ

    ReplyDelete
    Replies
    1. https://demanejar.github.io/ bạn có thể theo dõi blog chuyên môn này nha.

      Delete