Trong bài viết trước tôi đã hướng dẫn các bạn tiến hành cài Hadoop trong môi trường single node. Tuy nhiên đây chỉ là môi trường để test, thực tế không ai sử dụng Hadoop trên một máy chủ cả.
Vì vậy trong bài này tôi sẽ tiếp tục hướng dẫn các bạn cách cài Hadoop trong môi trường multi server.
Các bước chuẩn bị bạn làm y hệt như trong
bài hướng dẫn này và dừng lại sau bước tạo ssh-key.
Ở đây, tôi giả định bạn đang để các máy có IP như sau (cấu hình file hosts):
192.168.1.109 master.hadoop.com
192.168.1.145 slave.hadoop.com
Cấu hình ssh-key cho các máy chủ
Bạn chạy lệnh sau để cấu hình:
# su hadoop
$ ssh -keygen -t rsa
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master.hadoop.com
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave.hadoop.com
$ chmod 0600 ~/.ssh/authorized_keys
$ exit
Download và giải nén bộ cài hadoop vào thư mục /opt/hadoop như sau:
Quay về tài khoản root nếu đang ở tài khoản khác.
Tải về Hadoop (lưu ý có thể chọn phiên bản khác tùy ý):
wget http://www-eu.apache.org/dist/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
Giải nén file vừa tải về:
tar xfz hadoop-2.7.2.tar.gz
Tạo thư mục lưu các tập tin của Hadoop:
mkdir /opt/hadoop
mv hadoop-2.7.2/* /opt/hadoop
Đổi quyền cho thư mục:
chown -R hadoop:hadoop /opt/hadoop/
Kiểm tra lại các tập tin đã nằm ở thư mục chỉ định hay chưa:
ls /opt/hadoop
nếu thấy output như sau thì được:
LICENSE.txt README.txt etc lib sbin
NOTICE.txt bin include libexec share
Chuyển sang tài khoản hadoop.
su - hadoop
Chèn nội dung sau vào tập tin ~/.bash_profile:
export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/opt/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
Khởi tạo các biến bằng lệnh sau:
source .bash_profile
Kiểm tra lại các biến bằng các lệnh sau:
echo $JAVA_HOME echo $HADOOP_HOME
Nếu output tương tự như sau là được:
/usr/java/default/opt/hadoop
Cấu hình cho Hadoop:
Mở tập tin /opt/hadoop/etc/hadoop/core-size.xml và thêm vào nội dung sau:
fs.default.name
hdfs://master.hadoop.com:9000/
dfs.permissions
false
Mở tiếp tập tin /opt/hadoop/etc/hadoop/hdfs-site.xml và thêm vào nội dung sau:
dfs.data.dir
/opt/hadoop/hadoop/dfs/name/data
true
dfs.name.dir
/opt/hadoop/hadoop/dfs/name
true
dfs.replication
1
Mở tiếp tập tin /opt/hadoop/etc/hadoop/mapred-size.xml và thêm vào nội dung sau:
mapred.job.tracker
master.hadoop.com:9001
Cài đặt Hadoop lên các máy chủ khác Copy bộ cài Hadoop lên các máy chủ khác bằng lệnh:
# su hadoop
$ cd /opt/hadoop
$ scp -r hadoop slave.hadoop.com:/opt/hadoop
Cấu hình trên máy chủ chính Trên máy chủ master.hadoop.com, thêm tập tin /opt/hadoop/etc/hadoop/masters với nội dung sau:
master.hadoop.com
Thêm tập tin /opt/hadoop/etc/hadoop/slaves với nội dung sau:
slave.hadoop.com
Chạy Hadoop: Từ máy chủ chính chạy lệnh sau để format: hdfs namenode -format. Chạy dịch vụ của Hadoop bằng các lệnh sau:
sbin/start-dfs.sh sbin/start-yarn.sh.
Thêm một DataNode vào Hadoop Cluster: Giả sử ta có thêm một DataNode có địa chỉ như sau: 192.168.1.103 slave2.hadoop.com Trên slave2 ta thêm tài khoản có tên là hadoop: useradd hadoop passwd hadoop Từ trên máy chủ master, ta chạy các lệnh sau:
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 hadoop@192.168.1.103:/home/hadoop/
Từ trên máy chủ slave2, ta copy public key vào tập tin $HOME/.ssh/authorized_keys:
cd $HOME
mkdi -p $HOME/.>ssh
chmod 700 $HOME/.ssh
cat id_rsa.pub >> $HOME/.ssh/authorized_keys
chmod 644 $HOME/.ssh>/authorized_keys
Các bước trên là để các máy chủ đăng nhập vào nhau mà không phải sử dụng mật khẩu. Cập nhật thông tin máy chủ slave2 trên mọi file hosts của các máy chủ khác. Khởi động DataNode trên máy chủ mới bằng lệnh sau: bin/hadoop-daemon.sh start datanode
Loại bỏ máy chủ DataNode ra khỏi cụm máy chủ: Đăng nhập vào máy chủ master. Thêm trường sau vào tập tin hdfs-site.xml:
dfs.hosts.exclude
/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt
DFS exclude
Thêm tập tin hdfs_exclude.txt với nội dung sau: slave2.hadoop.com Load lại thông tin cấu hình: bin/hadoop/hdfs dfsadmin -refreshNodes Tắt Node vừa loại bỏ.
Tham khảo tại đây.