Bài đăng nổi bật

Hướng dẫn thay đổi thư mục root mặc định của Docker trên Linux

Hoàn cảnh: người viết gặp một trường hợp như này Được team hạ tầng cấp cho một máy chủ gồm 2 phân vùng lưu trữ, 1 phân vùng 20GB được gắn và...

12 tháng 11, 2016

Hướng dẫn cài đặt Hbase ở chế độ Distributed

Tiếp tục loạt bài hướng dẫn làm quen với BigData, hôm nay tôi sẽ hướng dẫn các bạn cách cài đặt Hbase.
Hbase là gì thì các bạn có thể tìm thông tin trên mạng.
Bài này được tóm tắt từ công việc thực tế của tác giả (mất 2 ngày ngồi ngẫm nghĩ và xử lý các vấn đề phát sinh) vì thế nên tỉ lệ cài thành công khá cao, nên nếu gặp lỗi thì chắc chắn bạn đã làm sai ở một bước nào đó.
Bài viết giả sử bạn đã cài đặt thành công Hadoop ở chế độ Distrubted từ trước.
1. Cài đặt HBase
Bạn có thể download bộ cài Hbase tại đây: http://www-us.apache.org/dist/hbase/
Tiến hành giải nén Hbase vào thư mục /opt/:
$ tar -xzf hbase-0.98.18-hadoop2-bin.tar.gz
Thêm biến môi trường vào tập tin ~/.bash_profile với nội dung sau:
export HBASE_HOME="/opt/hbase"
export PATH="$HBASE_HOME/bin:$PATH"
Kiểm tra xem đã cài đặt thành công chưa bằng lệnh:
hbase version
2. Cấu hình cho HBase
Sửa nội dung tập tin /opt/hbase/conf/hbase-env.sh với nội dung sau:
export JAVA_HOME=/usr/java/default
export HBASE_MANAGES_ZK=true
export HBASE_PID_DIR=/opt/hbase/var
Lưu ý:

  • Nếu HBASE_MANAGES_ZK = true tức là ta không phải cài thêm zookeeper nữa mà HBase sẽ tự quản lý bằng Zookeeper của mình (Cài đặt ZooKeeper riêng như nào sẽ được giới thiệu trong một bài viết khác)
  • HBASE_PID_DIR là thư mục đặt file pid của HBase, nếu chưa có thì phải tự tạo.
Tiếp tục sửa nội dung tập tin /opt/hbase/conf/hbase-site.xml và thêm vào nội dung sau;

        
                hbase.master
                sglamp.edumall.co.th:60000
        
        
                hbase.master.info.port
                60010
        
        
                hbase.rootdir
                hdfs://sglamp.edumall.co.th:9000/hbase
        
        
                hbase.cluster.distributed
                true
        
        
                
                        hbase.zookeeper.property.dataDir
                
                hdfs://sglamp.edumall.co.th:9000/zookeeper
        
        
                hbase.zookeeper.quorum
                sglamp2.edumall.co.th
        
        
                hbase.zookeeper.property.clientPort
                2181
        
        
                hbase.zookeeper.property.maxClientCnxns
                1000
        

Lưu ý:

  • Cần cấu hình thông tin  hbase.master.info.port thì mới có web ui để xem, nếu muốn disable thì bỏ dong này đi.
  • Số lượng Zookeeper quorum nên là số lẻ.
  • hbase.cluster.distributed phải là true.
  • hbase.master.info.port phải được để trên mọi file hbase-site.xml của các node.
Mở tập tin /opt/hbase/conf/regionservers trên tất cả các node của Hbase và thêm nội dung sau:
node1
node2
Trong đó nodex là hostname của tất cả các node trên Hbase.
3. Chạy Hbase
Để khởi động Hbase ta chạy lệnh sau:
/opt/hbase/bin/shServer.sh start 
Để tắt Hbase ta chạy lệnh sau:
/opt/hbase/bin/shServer.sh stop 

10 tháng 11, 2016

Cài đặt Hadoop trên môi trường multinode

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.

09 tháng 11, 2016

Cài đặt MySQL replication trên CentOS

Trong bài viết này tôi sẽ hướng dẫn các bạn cài đặt môi trường replica cho máy chủ MySQL.
Giả sử rằng:

  • Máy chủ chính có địa chỉ IP là: 123.456.789.1
  • Máy chủ thay thế có địa chỉ IP là: 123.456.789.2
1.Trên máy chủ chính
Cài đặt ứng dụng mysql:

yum install mysql-server mysql
 Khởi động dịch vụ của mysql:

systemctl start mysql
systemctl enable mysql
Sửa tập tin /etc/my.cnf, và thêm vào phần [mysqld] nội dung sau:
server-id = 1
binlog-do-db=database
relay-log = mysql-relay-bin
relay-log-index = mysql-relay-bin.index
log-bin = mysql-bin
Trong đó database là tên của database bạn muốn tạo replica.
Khởi động lại dịch vụ mysql bằng lệnh:
systemctl restart mysql
Đăng nhập vào mysql bằng lệnh:
mysql -u root -p
Chạy lần lượt các lệnh sau để tạo tài khoản cho máy chủ replica:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slaveuser'@'%' IDENTIFIED BY 'PASSWORD'
mysql> FLUSH PRIVILEGES;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      245 | database     |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

mysql> exit
Lưu ý nhớ thông tin trong cột File và Position để sử dụng trên máy chủ replica.
Sử dụng lệnh sau để xuất dữ liệu từ máy chủ chính và import vào máy chủ replica:
mysqldump -u root -p --master-data database > /root/database.sql
2.Trên máy chủ thay thế
Tiến hành cài đặt mysql và sử đổi tập tin cấu hình /etc/my.cnf để thêm nội dung sau vào phần [mysqld]:
server-id = 2
master-host=123.456.789.1
master-connect-retry=60
master-user=slaveuser
master-password=PASSWORD
replicate-do-db=database
relay-log = mysql-relay-bin
log-bin = mysql-bin
Khởi động lại dịch vụ của mysql:
systemctl restart mysql
Tiến hành import dữ liệu vào hệ thống:
mysql -u root -p < /root/database.sql
Đăng nhập vào dịch vụ:
mysql -u root -p
Cấu hình cho máy chủ slave:
mysql> slave stop;
mysql> CHANGE MASTER TO MASTER_HOST='123.456.789.1', MASTER_USER='slaveuser', MASTER_PASSWORD='PASSWORD', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=245;
mysql> slave start;
Kiểm tra trạng thái của máy chủ slave bằng lệnh sau:
mysql> show slave status;
Nếu thấy output hiện ra có dòng sau là thành công:
Slave_IO_State: Waiting for master to send event
Tham khảo tại đây