1、相關環境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 hbase1.2.4 本篇文章僅涉及hbase集群的搭建,關於hadoop與zookeeper的相關部署參見上篇文章http://www.cnblogs.com/learn21cn/p/6184490. ...
1、相關環境
centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 hbase1.2.4
本篇文章僅涉及hbase集群的搭建,關於hadoop與zookeeper的相關部署參見上篇文章http://www.cnblogs.com/learn21cn/p/6184490.html
目標如下:
master | 192.1.68.1.215 | HMaster |
data1 | 192.168.1.218 | HMaster備用 HRegionServer |
data2 | 192.168.1.219 | HRegionServer |
2、關於時間同步的問題
安裝hbase,需要伺服器之間的時間同步,10秒之內是可接受的範圍
1> 安裝與配置NTP
每個節點都要安裝,以master來作為時間伺服器
# 安裝NTP yum install ntp -y # 查看NTP狀態 service ntpd status # 配置文件 vim /etc/ntp.conf
以下是配置文件內容
#禁止所有機器來進行連接 restrict default ignore #允許內網其他機器同步時間 restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap #配置時間伺服器的地址為本機(註視掉server0~server3) server 127.127.1.0
之後個節點與master進行同步,並設置NTP開機自動啟動
# 終端執行命令同步時間 ntpdate 192.168.1.215 # 設置開機自動啟動 systemctl restart ntpd.service systemctl enable ntpd.service
以上為最初同步
2> 設置定時任務,使伺服器定時同步時間
執行以下命令 :
crontab -e
配置文件寫入以下內容:
0 1 * * * /usr/sbin/ntpdate 192.168.1.215 >> /data/ntpd.log
保存後執行以下命令查看定時任務,並重啟服務
crontab -l
# 重啟
systemctl restart crontab.service
3、設置linux系統最大進程數和最大文件打開數
使用root賬號
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
設置完重新登錄shell,執行以下命令查看結果
ulimit -a
4、調整linux內核參數
打開文件 /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_uses_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.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 268435456 # 提高系統支持的最大SYN半連接數,表示SYN隊列的長度,預設為1024,加大隊列長度為,可以容納最多等待連接的網路連接數 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 # 減少系統SYN連接重試次數(預設是5) # 為了打開對端的連接,內核需要發送一個SYN並附帶一個回應前面一個SYN的ACK,也就是所謂三次握手中的第二次握手。這個設置決定了內核放棄連接之前發送SYN+ACK包的數量。 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 # 以下兩參數可解決生產場景中大量連接的Web(cache)伺服器中TIME_WAIT過多問題 # 表示開啟重用。允許將TIME-WAIT的sockets重新用於新的TCP連接,預設為0表示關閉 net.ipv4.tcp_tw_reuse = 1 # 打開TIME-WAIT套接字重用及回收功能,表示開啟TCP連接中TIME-WAIT的sockets的快速收回功能,預設為0表示關閉。 net.ipv4.tcp_tw_recycle = 1 # 當keepalive起用的時候,TCP發送keepalive消息的頻度,預設是2小時,改為1200秒 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_syncookies= 1 # 減少處於FIN-WAIT-2連接狀態的時間,使系統可以處理更多的連接,預設值是60秒 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 # 網卡eno16777736 net.ipv4.conf.eno16777736.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 # 網卡eno16777736 net.ipv4.conf.eno16777736.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
之後,一定要執行以下命令進行檢查,防止出現錯誤,例如“沒有那個文件或目錄”之類
# 從指定的文件載入系統參數,如不指定即從/etc/sysctl.conf中載入
sysctl -p
5、配置文件
1> hbase-env.sh
# 配置JDK安裝路徑 export JAVA_HOME=/usr/java/jdk # 配置Hadoop安裝路徑 export HADOOP_HOME=/usr/Apache/hadoop # 設置HBase的日誌目錄 export HBASE_LOG_DIR=${HBASE_HOME}/logs # 設置HBase的pid目錄 export HBASE_PID_DIR=${HBASE_HOME}/pids # 使用獨立的ZooKeeper集群 export HBASE_MANAGES_ZK=false # 設置HBase記憶體堆的大小 export HBASE_HEAPSIZE=1024 # 設置HMaster最大可用記憶體 export HBASE_MASTER_OPTS="-Xmx512m" # 設置HRegionServer最大可用記憶體 export HBASE_REGIONSERVER_OPTS="-Xmx512m"
註意:
企業實際部署時,datanode一般設置16到20G左右,過小與過大都不合適;regionserver一般可以設置32到48,或者以上;hmaster一般4到8G足夠了。此外實際部署當中,hmaster與regionserver一般不在同一機器中。
2> hbase-site.xml參數說明見註釋
<configuration> <!-- 開啟分散式模式 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- 設置HRegionServers目錄 --> <property> <name>hbase.rootdir</name> <value>hdfs://nscluster/hbase</value> </property> <!-- 設置HMaster的rpc埠 --> <property> <name>hbase.master.port</name> <value>16000</value> </property> <!-- 設置HMaster的http埠 --> <property> <name>hbase.master.info.port</name> <value>16010</value> </property> <!-- 指定緩存文件存儲的路徑 --> <property> <name>hbase.tmp.dir</name> <value>/usr/Apache/hbase/data/tmp</value> </property> <!-- 指定ZooKeeper集群位置 --> <property> <name>hbase.zookeeper.quorum</name> <value>master,data1,data2</value> </property> <!-- 指定ZooKeeper集群埠 --> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <!--指定Zookeeper數據目錄,需要與ZooKeeper集群上配置相一致 --> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/usr/Apache/zookeeper/data</value> </property> <!-- ZooKeeper客戶端同時訪問的併發連接數,需要與ZooKeeper集群上配置相一致,可設置為2000 --> <property> <name>hbase.zookeeper.property.maxClientCnxns</name> <value>60</value> </property> <!-- 優化配置項 --> <!-- 關閉分散式日誌拆分 --> <property> <name>hbase.master.distributed.log.splitting</name> <value>false</value> </property> <!-- hbase客戶端rpc掃描一次獲取的行數,增大參數可以提高掃描次數,但同時會增加記憶體的使用 --> <property> <name>hbase.client.scanner.caching</name> <value>2000</value> </property> <!-- HRegion分裂前最大的文件大小(以下數字標識了10G)當HStoreFile 大於這個文件時,就會split 成兩個文件 --> <property> <name>hbase.hregion.max.filesize</name> <value>10737418240</value> </property> <!-- 一個HRegionServer中最大的region數量 --> <property> <name>hbase.regionserver.reginoSplitLimit</name> <value>2000</value> </property> <!-- 當某一個region的storefile個數達到該值則block寫入,等待compact,或者說定義storefile數量達到多少時block住update操作 預設7 --> <!-- 設置過小會使影響系統吞吐率,但也不應過大,經驗值是15到20左右。太大的話會在系統壓力很大時使storefile過多,compact一直無法完成,掃庫或者數據讀取的性能會受到影響。--> <!--同時,可以適當提高一些hbase.hstore.compactionThreshold,增加compact的處理線程數,加快compact的處理速度而避免block--> <property> <name>hbase.hstore.blockingStoreFiles</name> <value>14</value> </property> <!-- StoreFile的個數超過這個數就開始合併 預設值為3--> <property> <name>hbase.hstore.compactionThreshold</name> <value>6</value> </property> <!-- 超過memstore大小的倍數達到該值則block所有寫入請求,自我保護 --> <property> <name>hbase.hregion.memstore.block.multiplier</name> <value>20</value> </property> <!-- service工作的sleep間隔 預設10000--> <property> <name>hbase.server.thread.wakefrequency</name> <value>500</value> </property> <!-- 以下三項通常聯合起來調整 --> <!-- MemStore flush 順序是按照大小降序執行的,直到刷新到MemStore使用記憶體略小於該百分比 --> <property> <name>hbase.regionserver.global.memstore.lowerLimit</name> <value>0.3</value> </property> <!-- hbase.regionserver.global.memstore.upperLimit與hbase.block.cache.size這兩項合起來不能超過0.8,誰大誰小取決於業務偏向於讀還是寫,如果讀多一些就把讀緩存設置大一些 --> <!-- 預設0.4 當MemStore使用記憶體總量達到該值(總量的百分比)時,block所有更新,將會有多個MemStores flush到文件中--> <property> <name>hbase.regionserver.global.memstore.upperLimit</name> <value>0.39</value> </property> <!-- 讀緩存占堆的百分比,預設0.25 --> <property> <name>hbase.block.cache.size</name> <value>0.4</value> </property> <!-- RegionServer處理rpc線程數,預設10 --> <property> <name>hbase.reginoserver.handler.count</name> <value>300</value> </property> <!-- 客戶端最大重試次數,預設10 --> <property> <name>hbase.client.retries.number</name> <value>5</value> </property> <!-- 客戶端重試的休眠時間 --> <property> <name>hbase.client.pause</name> <value>100</value> </property> </configuration>
3> 配置regionservers文件
目錄:$HBASE_HOME/conf/,添加以下節點
data1 data2
4> 配置backup-masters文件
目錄:$HBASE_HOME/conf/,添加以下節點
data1
表示data1是一個備用的HMaster節點
6、創建配置文件中出現的文件夾
cd /usr/Apache/hbase # 創建hbase的緩存文件目錄 mkdir data/tmp # 創建hbase的日誌文件目錄 mkdir logs # 創建hbase的pid文件目錄 mkdir pids
7、環境變數設置
~/.bashrc 或 ~/.bash_profile
export HADOOP_HOME=/usr/Apache/hadoop export ZOOKEEPER_HOME=/usr/Apache/zookeeper export HBASE_HOME=/usr/Apache/hbase export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export CLASSPATH=.:$HADOOP_HOME/lib:$CLASSPATH export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin
8、啟動與關閉
start-hbase.sh stop-hbase.sh
master節點
訪問:192.168.1.215:16010/
data1節點會作為一個備用節點,如果master節點關閉,data1節點會成為主節點,這就是設置了backup-masters文件的作用,當然前提hbase使用了zookeeper集群。
訪問:192.168.1.218:16010/
,