Hadoop - Cụm đa nút

Chương này giải thích cách thiết lập cụm Đa nút Hadoop trên môi trường phân tán.

Vì không thể chứng minh toàn bộ cụm, chúng tôi đang giải thích môi trường cụm Hadoop bằng cách sử dụng ba hệ thống (một chủ và hai nô lệ); dưới đây là địa chỉ IP của họ.

  • Hadoop Master: 192.168.1.15 (hadoop-master)
  • Hadoop Slave: 192.168.1.16 (hadoop-slave-1)
  • Hadoop Slave: 192.168.1.17 (hadoop-slave-2)

Làm theo các bước dưới đây để thiết lập cụm Đa nút Hadoop.

Cài đặt Java

Java là điều kiện tiên quyết chính cho Hadoop. Trước hết, bạn nên xác minh sự tồn tại của java trong hệ thống của mình bằng cách sử dụng “java -version”. Cú pháp của lệnh phiên bản java được đưa ra dưới đây.

$ java -version

Nếu mọi thứ hoạt động tốt, nó sẽ cung cấp cho bạn kết quả sau.

java version "1.7.0_71" 
Java(TM) SE Runtime Environment (build 1.7.0_71-b13) 
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Nếu java chưa được cài đặt trong hệ thống của bạn, hãy làm theo các bước đã cho để cài đặt java.

Bước 1

Tải xuống java (JDK <phiên bản mới nhất> - X64.tar.gz) bằng cách truy cập liên kết sau www.oracle.com

Sau đó jdk-7u71-linux-x64.tar.gz sẽ được tải xuống hệ thống của bạn.

Bước 2

Nói chung, bạn sẽ tìm thấy tệp java đã tải xuống trong thư mục Tải xuống. Xác minh nó và trích xuấtjdk-7u71-linux-x64.gz sử dụng các lệnh sau.

$ cd Downloads/
$ ls
jdk-7u71-Linux-x64.gz

$ tar zxf jdk-7u71-Linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-Linux-x64.gz

Bước 3

Để cung cấp java cho tất cả người dùng, bạn phải di chuyển nó đến vị trí “/ usr / local /”. Mở thư mục gốc và nhập các lệnh sau.

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

Bước 4

Để thiết lập PATHJAVA_HOME biến, thêm các lệnh sau vào ~/.bashrc tập tin.

export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=PATH:$JAVA_HOME/bin

Bây giờ xác minh java -versionlệnh từ thiết bị đầu cuối như đã giải thích ở trên. Làm theo quy trình trên và cài đặt java trong tất cả các nút cụm của bạn.

Tạo tài khoản người dùng

Tạo tài khoản người dùng hệ thống trên cả hệ thống chủ và hệ thống phụ để sử dụng cài đặt Hadoop.

# useradd hadoop 
# passwd hadoop

Lập bản đồ các nút

Bạn phải chỉnh sửa hosts trong tập tin /etc/ thư mục trên tất cả các nút, chỉ định địa chỉ IP của từng hệ thống theo sau là tên máy chủ của chúng.

# vi /etc/hosts
enter the following lines in the /etc/hosts file.

192.168.1.109 hadoop-master 
192.168.1.145 hadoop-slave-1 
192.168.56.1 hadoop-slave-2

Định cấu hình đăng nhập dựa trên khóa

Thiết lập ssh trong mọi nút để chúng có thể giao tiếp với nhau mà không cần bất kỳ lời nhắc nào về mật khẩu.

# su hadoop 
$ ssh-keygen -t rsa 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub tutorialspoint@hadoop-master 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp1@hadoop-slave-1 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp2@hadoop-slave-2 
$ chmod 0600 ~/.ssh/authorized_keys 
$ exit

Cài đặt Hadoop

Trong máy chủ Chính, tải xuống và cài đặt Hadoop bằng các lệnh sau.

# mkdir /opt/hadoop 
# cd /opt/hadoop/ 
# wget http://apache.mesi.com.ar/hadoop/common/hadoop-1.2.1/hadoop-1.2.0.tar.gz 
# tar -xzf hadoop-1.2.0.tar.gz 
# mv hadoop-1.2.0 hadoop
# chown -R hadoop /opt/hadoop 
# cd /opt/hadoop/hadoop/

Định cấu hình Hadoop

Bạn phải định cấu hình máy chủ Hadoop bằng cách thực hiện các thay đổi sau như được cung cấp bên dưới.

core-site.xml

Mở core-site.xml và chỉnh sửa nó như hình dưới đây.

<configuration>
   <property> 
      <name>fs.default.name</name> 
      <value>hdfs://hadoop-master:9000/</value> 
   </property> 
   <property> 
      <name>dfs.permissions</name> 
      <value>false</value> 
   </property> 
</configuration>

hdfs-site.xml

Mở hdfs-site.xml và chỉnh sửa nó như hình dưới đây.

<configuration>
   <property> 
      <name>dfs.data.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name/data</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.name.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.replication</name> 
      <value>1</value> 
   </property> 
</configuration>

mapred-site.xml

Mở mapred-site.xml và chỉnh sửa nó như hình dưới đây.

<configuration>
   <property> 
      <name>mapred.job.tracker</name> 
      <value>hadoop-master:9001</value> 
   </property> 
</configuration>

hadoop-env.sh

Mở hadoop-env.sh và chỉnh sửa JAVA_HOME, HADOOP_CONF_DIR và HADOOP_OPTS như hình dưới đây.

Note - Đặt JAVA_HOME theo cấu hình hệ thống của bạn.

export JAVA_HOME=/opt/jdk1.7.0_17
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
export HADOOP_CONF_DIR=/opt/hadoop/hadoop/conf

Cài đặt Hadoop trên Máy chủ Slave

Cài đặt Hadoop trên tất cả các máy chủ nô lệ bằng cách làm theo các lệnh đã cho.

# su hadoop 
$ cd /opt/hadoop 
$ scp -r hadoop hadoop-slave-1:/opt/hadoop 
$ scp -r hadoop hadoop-slave-2:/opt/hadoop

Cấu hình Hadoop trên Master Server

Mở máy chủ chính và cấu hình nó bằng cách làm theo các lệnh đã cho.

# su hadoop 
$ cd /opt/hadoop/hadoop

Định cấu hình nút chính

$ vi etc/hadoop/masters

hadoop-master

Định cấu hình nút nô lệ

$ vi etc/hadoop/slaves

hadoop-slave-1 
hadoop-slave-2

Định dạng nút tên trên Hadoop Master

# su hadoop 
$ cd /opt/hadoop/hadoop 
$ bin/hadoop namenode –format
11/10/14 10:58:07 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG: host = hadoop-master/192.168.1.109 
STARTUP_MSG: args = [-format] 
STARTUP_MSG: version = 1.2.0 
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1479473;
compiled by 'hortonfo' on Mon May 6 06:59:37 UTC 2013 
STARTUP_MSG: java = 1.7.0_71 

************************************************************/
11/10/14 10:58:08 INFO util.GSet: Computing capacity for map BlocksMap
editlog=/opt/hadoop/hadoop/dfs/name/current/edits
………………………………………………….
………………………………………………….
…………………………………………………. 
11/10/14 10:58:08 INFO common.Storage: Storage directory 
/opt/hadoop/hadoop/dfs/name has been successfully formatted.
11/10/14 10:58:08 INFO namenode.NameNode: 
SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop-master/192.168.1.15
************************************************************/

Bắt đầu dịch vụ Hadoop

Lệnh sau đây là khởi động tất cả các dịch vụ Hadoop trên Hadoop-Master.

$ cd $HADOOP_HOME/sbin
$ start-all.sh

Thêm một mã dữ liệu mới trong cụm Hadoop

Dưới đây là các bước cần thực hiện để thêm các nút mới vào một cụm Hadoop.

Kết nối mạng

Thêm các nút mới vào cụm Hadoop hiện có với một số cấu hình mạng thích hợp. Giả sử cấu hình mạng sau.

Đối với cấu hình nút mới -

IP address : 192.168.1.103 
netmask : 255.255.255.0
hostname : slave3.in

Thêm người dùng và quyền truy cập SSH

Thêm người dùng

Trên một nút mới, thêm người dùng "hadoop" và đặt mật khẩu của người dùng Hadoop thành "hadoop123" hoặc bất kỳ thứ gì bạn muốn bằng cách sử dụng các lệnh sau.

useradd hadoop
passwd hadoop

Thiết lập Mật khẩu ít kết nối từ chủ sang nô lệ mới.

Thực thi những điều sau trên bản gốc

mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh 
ssh-keygen -t rsa -P '' -f $HOME/.ssh/id_rsa 
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys
Copy the public key to new slave node in hadoop user $HOME directory
scp $HOME/.ssh/id_rsa.pub [email protected]:/home/hadoop/

Thực hiện những điều sau trên nô lệ

Đăng nhập hadoop. Nếu không, hãy đăng nhập vào người dùng hadoop.

su hadoop ssh -X [email protected]

Sao chép nội dung của khóa công khai vào tệp "$HOME/.ssh/authorized_keys" và sau đó thay đổi quyền tương tự bằng cách thực hiện các lệnh sau.

cd $HOME
mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh
cat id_rsa.pub >>$HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys

Kiểm tra đăng nhập ssh từ máy chủ. Bây giờ hãy kiểm tra xem bạn có thể ssh đến nút mới mà không cần mật khẩu từ chủ hay không.

ssh [email protected] or hadoop@slave3

Đặt tên máy chủ của nút mới

Bạn có thể đặt tên máy chủ trong tệp /etc/sysconfig/network

On new slave3 machine

NETWORKING = yes 
HOSTNAME = slave3.in

Để thực hiện các thay đổi có hiệu lực, hãy khởi động lại máy hoặc chạy lệnh tên máy chủ đến một máy mới có tên máy chủ tương ứng (khởi động lại là một lựa chọn tốt).

Trên máy nút slave3 -

tên máy chủ slave3.in

Cập nhật /etc/hosts trên tất cả các máy của cụm với các dòng sau:

192.168.1.102 slave3.in slave3

Bây giờ hãy thử ping máy bằng tên máy chủ để kiểm tra xem nó có phân giải thành IP hay không.

Trên máy nút mới -

ping master.in

Khởi động DataNode trên New Node

Khởi động trình nền datanode theo cách thủ công bằng cách sử dụng $HADOOP_HOME/bin/hadoop-daemon.sh script. Nó sẽ tự động liên hệ với master (NameNode) và tham gia vào cụm. Chúng ta cũng nên thêm nút mới vào tệp conf / slave trong máy chủ chính. Các lệnh dựa trên tập lệnh sẽ nhận ra nút mới.

Đăng nhập vào nút mới

su hadoop or ssh -X [email protected]

Khởi động HDFS trên một nút nô lệ mới được thêm bằng cách sử dụng lệnh sau

./bin/hadoop-daemon.sh start datanode

Kiểm tra đầu ra của lệnh jps trên một nút mới. Nó trông như sau.

$ jps
7141 DataNode
10312 Jps

Xóa Mã dữ liệu khỏi Cụm Hadoop

Chúng tôi có thể xóa một nút khỏi cụm một cách nhanh chóng, trong khi nó đang chạy mà không bị mất dữ liệu. HDFS cung cấp một tính năng ngừng hoạt động, đảm bảo rằng việc loại bỏ một nút được thực hiện một cách an toàn. Để sử dụng nó, hãy làm theo các bước như dưới đây:

Bước 1 - Đăng nhập để làm chủ

Đăng nhập vào người dùng máy chính nơi Hadoop được cài đặt.

$ su hadoop

Bước 2 - Thay đổi cấu hình cụm

Một tệp loại trừ phải được định cấu hình trước khi bắt đầu cụm. Thêm khóa có tên dfs.hosts.exclude vào$HADOOP_HOME/etc/hadoop/hdfs-site.xmltập tin. Giá trị được liên kết với khóa này cung cấp đường dẫn đầy đủ đến một tệp trên hệ thống tệp cục bộ của NameNode chứa danh sách các máy không được phép kết nối với HDFS.

Ví dụ: thêm các dòng này vào etc/hadoop/hdfs-site.xml tập tin.

<property> 
   <name>dfs.hosts.exclude</name> 
   <value>/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt</value> 
   <description>DFS exclude</description> 
</property>

Bước 3 - Xác định máy chủ để ngừng hoạt động

Mỗi máy sẽ ngừng hoạt động phải được thêm vào tệp được xác định bởi hdfs_exclude.txt, một tên miền trên mỗi dòng. Điều này sẽ ngăn chúng kết nối với NameNode. Nội dung của"/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt" tệp được hiển thị bên dưới, nếu bạn muốn loại bỏ DataNode2.

slave2.in

Bước 4 - Buộc tải lại cấu hình

Chạy lệnh "$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes" mà không có dấu ngoặc kép.

$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes

Điều này sẽ buộc NameNode đọc lại cấu hình của nó, bao gồm cả tệp 'loại trừ' mới được cập nhật. Nó sẽ ngừng truyền các nút trong một khoảng thời gian, cho phép thời gian để các khối của mỗi nút được sao chép vào các máy được lên lịch để duy trì hoạt động.

Trên slave2.in, kiểm tra đầu ra lệnh jps. Sau một thời gian, bạn sẽ thấy quá trình DataNode tự động tắt.

Bước 5 - Tắt các nút

Sau khi quá trình ngừng hoạt động hoàn tất, phần cứng ngừng hoạt động có thể được tắt an toàn để bảo trì. Chạy lệnh báo cáo đến dfsadmin để kiểm tra trạng thái ngừng hoạt động. Lệnh sau đây sẽ mô tả trạng thái của nút ngắt và các nút được kết nối với cụm.

$ $HADOOP_HOME/bin/hadoop dfsadmin -report

Bước 6 - Chỉnh sửa lại tệp loại trừ

Khi máy đã ngừng hoạt động, chúng có thể bị xóa khỏi tệp 'loại trừ'. Đang chạy"$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes"một lần nữa sẽ đọc lại tệp loại trừ vào Mã tên; cho phép các Mã dữ liệu tham gia lại cụm sau khi bảo trì xong hoặc cần thêm dung lượng trong cụm lần nữa, v.v.

Special Note- Nếu quá trình trên được tuân thủ và quá trình trình chạy tác vụ vẫn đang chạy trên nút, nó cần phải được tắt. Có một cách là ngắt kết nối máy như chúng ta đã làm ở các bước trên. Master sẽ tự động nhận ra tiến trình và sẽ tuyên bố là đã chết. Không cần phải làm theo cùng một quy trình để xóa tasktracker vì nó KHÔNG quan trọng nhiều so với DataNode. DataNode chứa dữ liệu mà bạn muốn xóa một cách an toàn mà không làm mất dữ liệu.

Tasktracker có thể được chạy / tắt nhanh chóng bằng lệnh sau đây vào bất kỳ thời điểm nào.

$ $HADOOP_HOME/bin/hadoop-daemon.sh stop tasktracker
$HADOOP_HOME/bin/hadoop-daemon.sh start tasktracker