hbase集群安裝與部署

来源:http://www.cnblogs.com/learn21cn/archive/2016/12/19/6196179.html
-Advertisement-
Play Games

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/

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、先引入jquery.js 2、接著引入luhmCheck.js //銀行卡號Luhm校驗 3、看下麵的案例: 下麵是js 測試卡號: 1、6222600810010710887 2、6225881414207430 ...
  • 引言 提到前端往往很多人的映像就是入門簡單,HTML、CSS加一起一個星期基本上就能大概上手,JS難一點但也能很快寫一些簡單的小效果,在網上隨便一搜索各種特效代碼隨意用,一個新手前端也能在很短的時間里寫出炫酷的頁面效果,然而入門簡單並不意味著前端這碗飯很好吃,做慣了切圖、佈局、扣特效的前端新同學在向 ...
  • 直接插入排序演算法(Straight Insertion Sort),是排序演算法中簡單的一種演算法,基本思想如下: 將一個記錄插入到已排序好的有序表中,從而得到一個新,記錄數增1的有序表。即:先將序列的第1個記錄看成是一個有序的子序列,然後從第2個記錄逐個進行插入,直至整個序列有序為止。 要點:設立哨兵 ...
  • 本案例來自React.js中文官網對應內容。 一. 運行環境 二. 組件架構 App下有兩個子組件 (評論列表)和 (評論區),其中 下又有一個子組件 (評論) Comment包括一個h2的評論人名稱,一個span的評論內容,獲取數據之後,Comment組件以數組的形式傳入CommentList。 ...
  • 1.html 2.app.js ...
  • 1.定義變數:Sass中定義變數的關鍵字是'$'(畢竟程式員缺錢),並使用冒號(:)進行賦值,例如: $width:200px;//定義了一個名為width的變數,值為200px 2.普通變數和預設變數: 普通變數便是我們在大括弧外用上面的方式聲明的變數,可全局使用。 預設變數需要在聲明的變數後加上 ...
  • 關於排序,其實不管是哪種語言,都有它內置的排序函數,我們要用的時候調用就行了,既然如此,我們為什麼還要講這個東西呢?我想,其實,我們講排序更多是在於排序中包含的思想演算法,因為,演算法對於電腦來說相當重要,一個好的演算法能夠讓電腦的效率達到事半功倍的效果,所以,演算法是電腦語言中一門相當熱門的課程,它 ...
  • var http = require( 'http' ) var handlePaths = [] /** * 初始化路由配置數組 */ function initRotute() { handlePaths.push( '/' ) handlePaths.push( '/login' ) hand... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...