- vừa được xem lúc

Cùng thiết lập Multi Node Cluster trong Hadoop 2.x nào!

0 0 24

Người đăng: Trung Đức

Theo Viblo Asia

Trong bài viết trước của mình, mình đã giới thiệu về Hadoop và các thành phần của Hadoop. Hadoop là một hệ sinh thái mã nguồn mở được sử dụng để lưu trữ và xử lý dữ liệu lớn. Nhân tiện một ngày đẹp trời được giao task setup multi node cluster để làm 1 số công việc trên công ty, mình viết luôn một bài coi như node lại quá trình cài đặt cũng như kiểm thử về multi node cluster trong Hadoop.

Việc triển khai multi node cluster trong Hadoop sẽ chứa hai hoặc nhiều DataNode trong môi trường Hadoop phân tán. Trong bài viết này, mình sẽ hướng dẫn các bạn cài đặt với 2 máy (1 master và 1 slave) và data node trên cả 2 máy sẽ đều chạy Triển thôi!!

Cài đặt Multi Node Cluster trong Hadoop

Những thứ cần chuẩn bị trên 2 máy

  • Hadoop 2.7.3
  • JAVA8
  • SSH

Trước hết, do có một số lỗi vặt như đường dẫn tài khoản cty mình có '\' trong path, mà hadoop chỉ cho phép '/' vì vậy tốt nhất các bạn nên tạo riêng 1 user và cấp quyền sudo cho nó (trên tất cả các node cho an toàn), rồi cài đặt hadoop trên user đó.

  • Tạo user
    sudo adduser hadoop
    
  • Cấp quyền sudo
    sudo usermod -aG sudo hadoop
    
  • Chuyển user
    su hadoop
    

Bước 1: Check IP 2 máy

  • Dùng lệnh ifconfig để kiểm tra IP 2 máy, ở đây mình có thông tin như sau
    • Master IP: 10.0.37.186
    • Slave IP: 10.0.37.92

Bước 2: Vô hiệu hóa tường lửa

  • Dùng lệnh service iptables stopsudo chkconfig iptables off để vô hiệu hóa tường lửa trên cả 2 máy
  • Hoặc bạn có thể dùng lệnh sudo ufw disable

Bước 3: Thêm địa chỉ IP của master node và slave node vào file cấu hình

  • Thêm cấu hình IP của 2 node vào file /etc/hosts:
    sudo nano /etc/hosts
    

Bước 4: Restart sshd service

service sshd restart

Bước 5: Tạo SSH key trên Master Node

ssh-keygen -t rsa -P “”

Bước 6: Sao chép SSH key vừa tạo để làm authorized key của Master Node

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

Bước 7: Sao chép key ssh master node sang authorized key của slave node

ssh-copy-id -i $HOME/.ssh/id_rsa.pub user_slave_node@slave

Bước 8: Cài JAVA trên tất cả các node

  • Tải xuống Java8 package tại đây. Lưu trữ file này tại /home
  • Giải nén package vừa tải
    tar -xvf jdk-8u371-linux-x64.tar.gz
    

Bước 9: Cài Hadoop trên tất cả các node

  • Download Hadoop Package tùy version tại đây
  • Giải nén tập vừa tải
    tar -xvf hadoop-2.7.3.tar.gz
    

Bước 10: Thêm Hadoop path và Java patth vào bash file trên tất cả các node

  • Mở file .bashrc để thêm các đường dẫn Hadoop và Java

    sudo nano .bashrc
    
  • Thêm các nội dung sau

    # Set hadoop environment variables
    export HADOOP_HOME=$HOME/hadoop-2.7.3
    export HADOOP_CONF_DIR=$HOME/hadoop-2.7.3/etc/hadoop
    export HADOOP_MAPRED_HOME=$HOME/hadoop-2.7.3
    export HADOOP_COMMON_HOME=$HOME/hadoop-2.7.3
    export HADOOP_HDFS_HOME=$HOME/hadoop-2.7.3
    export YARN_HOME=$HOME/hadoop-2.7.3
    export PATH=$PATH:$HOME/hadoop-2.7.3/bin # Set Java environment variables
    export JAVA_HOME=$HOME/jdk1.8.0_371
    export PATH=$HOME/jdk1.8.0_371/bin:$PATH
    
  • Thực thi các thay đổi

    source .bashrc
    
  • Export thêm Java path trong file $HADOOP_HOME/etc/hadoop/hadoop_env.sh

  • Kiểm tra lại xem đã cấu hình đúng đường dẫn hay chưa

Bước 11: Disable IPv6

  • Do một vài lý do, việc disable IPv6 trong Hadoop có thể cải thiện hiệu suất và ổn định cho hệ thống.
  • Disable IPv6 trong hadoop-env.sh trong folder $HADOOP_HOME/etc/hadoop/ bằng cách sửa câu lệnh
    HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
    
  • Để chắc chắn hơn, hãy kiểm tra xem Ubuntu của bạn có đang bật IPv6 không bằng lệnh sau
    cat /proc/sys/net/ipv6/conf/all/disable_ipv6
    
    Nếu trả về 0 tức không bật IPv6, còn 1 thì chúng ta sẽ làm thêm 1 vài bước dưới đây để disable nó
    sudo nano /etc/sysctl.conf
    
    Thêm nội dung sau
    # IPv6 configuration
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    net.ipv6.conf.lo.disable_ipv6 = 1
    
    Reload lại config vừa thêm
    sudo sysctl -p
    

Bước 12: Cấu hình file mastersslaves

  • Di chuyển tới thư mục hadoop-2.7.3/etc/hadoop
    cd hadoop-2.7.3/etc/hadoop
    
  • Tại master node:
    • Chỉnh sửa file masters
    sudo nano masters
    
    • Chỉnh sửa file slaves
    sudo nano slaves
    
  • Tại slave node:
    • Chỉnh sửa file masters
    sudo nano masters
    
    • Chỉnh sửa file slaves
    sudo nano slaves
    

Bước 13: Cấu hình file core-site.xml

  • Trên cả master node và slave node, cấu hình file core-site.xml như sau

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

Bước 14: Cấu hình file hdfs-site.xml

  • Phần này là do mình đang thử nghiệm 2 máy nên sẽ để Secondary NameNode chính ở master node (Đúng chuẩn cần đặt Secondary NameNode ở 1 node riêng)

  • Trên master node sudo nano hdfs-site.xml (lưu ý thay đổi --username-- cho phù hợp)

     <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions.enabled</name> <value>true</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>--IP_master_node--:50090</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/home/--username--/hadoop-2.7.3/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/--username--/hadoop-2.7.3/datanode</value> </property> </configuration>
    
  • Trên slave node sudo nano hdfs-site.xml (lưu ý thay đổi --username-- cho phù hợp)

     <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions.enabled</name> <value>true</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>--IP_master_node--:50090</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/--username--/hadoop-2.7.3/datanode</value> </property> </configuration>
    

Bước 15: Sao chép template của mapred-site.xml từ file mapred-site.xml.template

  • Sao chép template thành 1 file riêng để cấu hình trên cả master node và slave node
    cp mapred-site.xml.template mapred-site.xml
    
  • Cấu hình lại file sudo nano mapred-site.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
    </configuration>
    

Bước 16: Cấu hình file yarn-site.xml

  • Trên cả master node và slave node, cấu hình file yarn-site.xml như sau
    sudo nano yarn-site.xml
    
     <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration>
    

Bước 17: Định dạng tên node trên master node

  • Tại master node:
hdfs namenode -format

Bước 18: Khởi động các demons trên master node

  • Tại master node:
cd $HADOOP_HOME
./sbin/start-all.sh

Kiểm tra các Nodes đã hoạt động hay chưa

  • Sử dụng lệnh jps để kiểm tra xem các node đã hoạt động hay chưa

master node

Slave node

Một số lỗi mình gặp phải và cách khắc phục

  • JAVA_HOME is not set: Thêm dòng sau JAVA_HOME="/home/<<user_name>>/jdk1.8.0_371" vào file /etc/environment trên tất cả các nodes sau đó chạy lệnh source /etc/environment

  • Check bằng jps không thấy có node nào đang chạy: check logs trong $HADOOP_HOME/logs để biết có lỗi ở đâu (datanode, namenode, hdfs hay yarn)

  • Ngoài ra nếu có lỗi nào, các bạn có thể comment bên dưới nhé ^^

Tài liệu tham khảo

Bình luận

Bài viết tương tự

- vừa được xem lúc

Nhập môn lý thuyết cơ sở dữ liệu - Phần 1 : Tổng quan

# Trong bài viết này mình sẽ tập trung vào chủ đề tổng quan về Cơ sở dữ liệu. Phần 1 lý thuyết nên hơi chán các bạn cố gắng đọc nhé, chắc lý thuyết mới làm bài tập được, kiến thức còn nhiều các bạn cứ

0 0 112

- vừa được xem lúc

Nhập môn lý thuyết cơ sở dữ liệu - Phần 2: Mô hình thực thể liên kết

**Chào các bạn, hôm nay mình tiếp tục viết tiếp phần 2 cho series Nhập môn lý thuyết cơ sở dữ liệu. Chắc hẳn qua bài trước các bạn tìm được lý do vì sao mình phải học môn này rồi chứ.

0 0 68

- vừa được xem lúc

[Python Library Series] Pandas Tutorial for Beginners Part 2

Ở Part 1 chúng ta đã đi qua các bước hướng dẫn cách cài đặt Pandas, cách tạo và xem thông tin của một Dataframe. Như đã đề cập ở phần trước thì nội dung trong Part 2 này giúp chúng ta làm quen các tha

0 0 41

- vừa được xem lúc

Data Resource - A core component in Data Science

Dữ liệu ở đâu! Nên lấy dữ liệu từ nguồn nào để giải quyết vấn đề đặt ra? . Đó là câu hỏi của nhiều bạn khi bắt tay vào một dự án khoa học dữ liệu.

0 0 36

- vừa được xem lúc

Data Mining - Khai phá dữ liệu - [Data Science Series]

I. Data Mining là gì. Quá trình khai phá dữ liệu là một quá trình phức tạp bao gồm kho dữ liệu chuyên sâu cũng như các công nghệ tính toán. 1.

0 0 40

- vừa được xem lúc

Data Science, công việc hấp dẫn nhất thế kỷ 21 - [Data Science Series]

I. Data Science, công việc hấp dẫn nhất thế kỷ 21.

0 0 37