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 PATH và JAVA_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