搭建企業級HBase

主要內容:node

1. 集羣規劃linux

2. 企業級系統參數配置shell

3. Hadoop動態替換節點數據庫

4. HBase動態替換節點vim

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------cookie

1. 集羣規劃架構

    HBase企業級使用常見場景:tcp

    (1)大數據量(100TB級數據)且有快速隨機訪問的需求。oop

    (2)容量擴展容易便捷,動態擴展系統容量是必須的。大數據

    (3)業務場景簡單,不須要關係數據庫中不少特性。

    (4)合理設計rowkey。由於hbase的查詢用rowkey是最高效的,也幾乎是生產環境下惟一可行的方式。

    在搭建HBase高可用集羣時,將HBase的RegionServer部署在HDFS的3個DataNode節點上,HBase的HMaster服務部署在HDFS的2個NameNode(Active和Standby)節點上,部署2個HMaster保證集羣的高可用性,防止單點問題。這裏使用了獨立的ZooKeeper集羣,未使用HBase自帶的ZooKeeper。下面給出HBase的集羣搭建架構圖:

    搭建HBase HA集羣須要首先搭建Hadoop HA集羣,其方法可參考Hadoop2 HA這篇博客。在其基礎上加入HBase HA,規劃整個集羣由5臺主機組成。

2. 企業級系統參數配置

  $ ulimit -a   // 查看linux系統最大進程數和最大文件打開數

  // 設置linux系統最大進程數和最大文件打開數(設置完從新登陸shell)

$ suroot
# vim/etc/security/limits.conf
root    soft   nproc   50000
root    hard   nproc   50000
root    soft   nofile  25535
root    hard   nofile  25535
hadoop    soft   nproc   50000
hadoop    hard   nproc   50000
hadoop    soft   nofile  25535
hadoop    hard   nofile  25535
// 調整linux內核參數
# vim/etc/sysctl.conf
net.ipv4.ip_forward= 0
net.ipv4.conf.default.rp_filter= 1
net.ipv4.conf.default.accept_source_route= 0
kernel.core_users_pid= 1
net.ipv4.tcp_syncookies= 1
net.bridge.bridge-nf-call-ip6tables= 0
net.bridge.bridge-nf-call-iptables= 0
net.bridge.bridge-nf-call-arptables= 0
kernel.mggmnb= 65536
kernel.mggmax= 65536
kernel.shmmax= 68719476736
kernel.shmall= 268435456
net.ipv4.tcp_max_syn_backlog= 65000
net.core.netdev_max_backlog= 32768
net.core.somaxconn= 32768
fs.file-max= 65000
net.core.wmem_default= 8388608
net.core.rmem_default= 8388608
net.core.rmem_max= 16777216
net.core.wmem_max= 16777216
net.ipv4.tcp_timestamps= 1
net.ipv4.tcp_synack_retries= 2
net.ipv4.tcp_syn_retries= 2
net.ipv4.tcp_mem= 94500000 915000000 927000000
net.ipv4.tcp_max_orphans= 3276800
net.ipv4.tcp_tw_reuse= 1
net.ipv4.tcp_tw_recycle= 1
net.ipv4.tcp_keepalive_time= 1200
net.ipv4.tcp_syncookies= 1
net.ipv4.tcp_fin_timeout= 10
net.ipv4.tcp_keepalive_intvl= 15
net.ipv4.tcp_keepalive_probes= 3
net.ipv4.ip_local_port_range= 1024 65535
net.ipv4.conf.eml.send_redirects= 0
net.ipv4.conf.lo.send_redirects= 0
net.ipv4.conf.default.send_redirects= 0
net.ipv4.conf.all.send_redirects= 0
net.ipv4.icmp_echo_ignore_broadcasts= 1
net.ipv4.conf.eml.accept_source_route= 0
net.ipv4.conf.lo.accept_source_route= 0
net.ipv4.conf.default.accept_source_route= 0
net.ipv4.conf.all.accept_source_route= 0
net.ipv4.icmp_ignore_bogus_error_responses= 1
kernel.core_pattern= /tmp/core
vm.overcommit_memory= 1
#sysctl -p

3. Hadoop動態替換節點

  (1)添加節點

    添加節點有兩種方式:一種是靜態添加,關閉hadoop集羣,配置相應配置,重啓集羣;另外一種是動態添加,在不重啓集羣的狀況下添加節點。

        a. 設置新datanode與namenode的SSH無密碼登錄

        b. 在hosts添加主機名稱,而且把該文件複製到集羣中的其餘節點上。

        c. 修改namenode節點上的slaves文件(主要用於下次重啓的時候使用)

        d. 在datanode中啓動進程:

            sbin/hadoop-daemon.sh start datanode 

            sbin/yarn-daemon.sh start nodemanager

        e. 在datanode中啓動:start-balancer.sh均衡當前的hdfs塊

  (2)刪除節點

        a. 須要在hdfs-site.xml配置文件中配置:

         <property>

                <name>dfs.hosts.exclude</name>

                <value>/usr/local/cluster/hadoop-2.2.0/etc/hadoop/exclude</value>

        </property>

    在hadoop 2.2.0的文檔中說經過配置dfs.namenode.hosts.exclude,發現沒有效果,使用早期版本的配置項dfs.hosts.exclude纔有效果

        b. 在exclude文件中添加須要刪除的節點。

    而後執行刷新命令:hdfs dfsadmin -refreshNodes

    根據hdfs dfsadmin -report能夠查看該節點的情況

4. HBase動態替換節點

  (1)添加HBase節點

    在HMaster的regionserver配置文件中添加新節點的host。

    在新節點中經過下面命令啓動HRegionServer:

    hbase-daemon.sh start regionserver

    能夠經過hbase shell和status進行確認。 

  (2)刪除HBase節點

    hbase-daemon.sh stop regionserver

    在下線節點前要中止Load Balancer

    要下線一臺RegionServer能夠這樣作,當執行graceful_stop腳本的時候,要將Region Load Balancer關掉,不然balancer和下線腳本會在region部署的問題上存在衝突。

    graceful_stop.sh HOSTNAME

相關文章
相關標籤/搜索