HBase生產(chǎn)環(huán)境部署指南

最近集群要遷移嫩舟,本來想在網(wǎng)上找到個相對完整的HBase生產(chǎn)環(huán)境部署教程來參考一下贷痪,無奈城侧,網(wǎng)上基本上都是教你搭建測試環(huán)境的,一些常識性的問題都不曾提及咱筛。對于搭建生產(chǎn)環(huán)境的文章沒找到一個讓人滿意和省心的搓幌。算了,剛好最近在做HBase集群的跨IDC遷移迅箩,那就自己寫一個吧溉愁,里面也許不會將詳細(xì)的命令列出來,但是會將對應(yīng)的大致步驟饲趋,需要做的事情列出來拐揭。依照這個指南,只要你稍微有點(diǎn)學(xué)習(xí)能力奕塑,搭建出一個生產(chǎn)環(huán)境的HBase一點(diǎn)都不是問題堂污。因?yàn)榫褪莋oogle一把的事情。

一爵川、節(jié)點(diǎn)分布列表

備注:如果集群規(guī)模不大的敷鸦,以上的節(jié)點(diǎn)都可以混部署。

先申明一下:本文主要是用來部署生產(chǎn)環(huán)境,一般是幾十到幾百個節(jié)點(diǎn)不等扒披,部署步驟非常多值依,建議做成自動化腳本或者工具,推薦Asinble碟案,我們現(xiàn)在使用Asinble來進(jìn)行自動化部署和擴(kuò)容愿险,非常方便。

二价说、初始化

設(shè)備初始化主要包括如下幾項(xiàng):

(一)辆亏、基礎(chǔ)初始化

1、通用初始化

針對各個節(jié)點(diǎn)都做的初始化有哪些:

a鳖目、文件描述符數(shù)量

修改/etc/security/limits.conf文件扮叨,將限制調(diào)整為65535,如下圖:

b领迈、設(shè)置swappiness彻磁、dirty_background_ratio、dirty_ratio

echo "vm.swappiness=0" >> /etc/sysctl.conf

echo "vm.dirty_background_ratio=1" >> /etc/sysctl.conf

echo "vm.dirty_ratio=4" >> ?/etc/sysctl.conf

?sysctl -p

c狸捅、設(shè)置ntp

添加ntp自動同步時間衷蜓,一面各個節(jié)點(diǎn)時間不一致;

d尘喝、配置DNS

后面的ZK等建議配置成DNS的形式磁浇,因此DNS也最好提前配置好,統(tǒng)一修改/etc/resolv.conf 即可朽褪。

e置吓、配置主機(jī)名

主機(jī)名稱根據(jù)個人喜好配置即可;

f鞍匾、部署java環(huán)境

從官網(wǎng)下載jdk的安裝包交洗,以 jdk-8u102-linux-x64.tar.gz為例

tar xzvf jdk-8u102-linux-x64.tar.gz -C /data/hbaseadmin/hbaseenv/ ?

將如下內(nèi)容添加到/etc/profile ? ? ?

export JAVA_HOME=/data/hbaseadmin/hbaseenv/jdk1.8.0_102/

export JRE_HOME=${JAVA_HOME}/jre

export HADOOP_HOME=/data/hdfsadmin/hbaseenv/hadoop

export HBASE_HOME=/data/hbaseadmin/hbaseenv/hbase

export CLASSPATH=.:${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/jre/lib:${JRE_HOME}/lib:${HBASE_HOME}/lib:${HADOOP_HOME}/lib? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${HADOOP_HOME}/bin:${HBASE_HOME}/bin:${PATH}

export LANGUAGE=en_US

2、datanode節(jié)點(diǎn)的初始化

????一般datanode都會有多個數(shù)據(jù)盤橡淑,如果有SSD盤的話更好,我們使用SSD盤來專門存儲WAL日志咆爽;

a梁棠、開啟硬盤緩存【datanode節(jié)點(diǎn)專屬】

/sbin/hdparm -W 1? diskname

b、datanode的分區(qū)斗埂、格式化

????將本地SSD單獨(dú)分一個區(qū)出來符糊,專門用來存儲WAL日志【如果有的話】

????將數(shù)據(jù)盤進(jìn)行分區(qū)和格式化,并進(jìn)行掛載

c呛凶、將修改固化到/etc/fstab文件中? ?

(二)男娄、帳號初始化

帳號的初始化主要的操作有兩個,一個是創(chuàng)建帳號,一個是打通ssh免密登錄模闲。實(shí)現(xiàn)如下幾個功能:

1建瘫、使用hbaseadmin來管理hbase程序

a、在中控節(jié)點(diǎn)上創(chuàng)建hbaseadmin賬戶尸折,并設(shè)置好對應(yīng)的密碼

b啰脚、使用 ssh-keygen生成對應(yīng)的密鑰對

?c、通過 id_rsa.pub創(chuàng)建對應(yīng)的 authorized_keys

2实夹、通過hdfsadmin來管理hdfsadmin程序

a橄浓、在中控節(jié)點(diǎn)上創(chuàng)建hdfsadmin賬戶,并設(shè)置好對應(yīng)的密碼

b亮航、使用 ssh-keygen生成對應(yīng)的密鑰對

c荸实、通過 id_rsa.pub創(chuàng)建對應(yīng)的 authorized_keys

3、打通中控節(jié)點(diǎn)和2個master節(jié)點(diǎn)到其他各個節(jié)點(diǎn)的信任關(guān)系缴淋,實(shí)現(xiàn)免密登錄

a泪勒、在其他節(jié)點(diǎn)上創(chuàng)建hbaseadmin和hdfsadmin帳號

b、將hbaseadmin和hdfsadmin帳號對應(yīng)的authorized_keys傳輸?shù)礁鱾€機(jī)器的對應(yīng)用戶的.ssh目錄下宴猾,并設(shè)置屬主為對應(yīng)用戶

c圆存、將hbaseadmin和hdfsadmin帳號對應(yīng)的私鑰id_dsa傳輸?shù)綄?yīng)的.ssh目錄下,修改好屬主仇哆,并設(shè)置權(quán)限為600

4沦辙、測試免密登錄是否正常

備注:剛開始的時候第一次訪問對應(yīng)主機(jī),會顯示該主機(jī)的公鑰摘要讹剔,提示用戶是否信任該主機(jī)油讯,可以在.ssh/config添加StrictHostKeyChecking no來規(guī)避。

5延欠、設(shè)置好數(shù)據(jù)目錄的hdfsadmin屬主陌兑,不然,寫入會有問題由捎。

三兔综、ZK部署

1、ZK部署說明

ZK是用來做master的高可用狞玛、RegionServer的監(jiān)控软驰、元數(shù)據(jù)入口以及集群的配置維護(hù)等,而ZK的操作需要通過選舉產(chǎn)生心肪,至少需要超過一半的節(jié)點(diǎn)意見一致才有效锭亏,因此我們部署ZK的時候需要部署奇數(shù)個節(jié)點(diǎn),比如3個硬鞍、5個慧瘤、7個戴已。對于大的集群一般建議5個或者5個以上,而且這些ZK要跨交換機(jī)跨機(jī)架容災(zāi)锅减。

2糖儡、ZK安裝

a、從apache官網(wǎng)上下載ZK

wgethttps://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

tar xzvfzookeeper-3.4.9.tar.gz

ln -s zookeeper zookeeper-3.4.9

b上煤、配置ZK

ZK的配置項(xiàng)比較少休玩,大致如下:

cat java.env

#配置java環(huán)境即可

export JAVA_HOME=/data/hbaseadmin/hbaseenv/jdk1.8.0_102

export PATH=$PATH:$JAVA_HOME/bin

export JVMFLAGS=-Xmx2048m

cat zoo.cfg

tickTime=15000

# The number of ticks that the initial

# synchronization phase can take

initLimit=20

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=20

maxClientCnxns=200

# the directory where the snapshot is stored.

dataDir=/data/hbase/zookeeper/zookeeper-data/

dataLogDir=/data/hbase/zookeeper/zookeeper-log/

# the port at which the clients will connect

clientPort=2181

server.1=normal-db-lj-hbase-zk-1:2888:3888

server.2=normal-db-lj-hbase-zk-2:2888:3888

server.3=normal-db-lj-hbase-zk-3:2888:3888

server.4=normal-db-lj-hbase-zk-4:2888:3888

server.5=normal-db-lj-hbase-zk-5:2888:3888

備注:這里推薦用域名的方式,后面如果有機(jī)器變動直接修改域名對應(yīng)關(guān)系即可

c劫狠、創(chuàng)建對應(yīng)的目錄和配置muid

mkdir -p /data/hbase/zookeeper/zookeeper-data/ && mkdir -p /data/hbase/zookeeper/zookeeper-log/

echo "1" > /data/hbase/zookeeper/zookeeper-data/myid

備注:如果是server1就配置myid為1拴疤,如果是server2就配置myid為2,以此類推独泞。

d呐矾、ZK的啟動

在配置好ZK后,就可以開始啟動ZK了懦砂,啟動命令如下:

zookeeper/bin/zkServer.sh start

啟動后使用jps查看QuorumPeerMain進(jìn)程是否存在蜒犯,如下圖:

可以通過

zookeeper/bin/zkServer.sh ?status

查看對應(yīng)ZK的狀態(tài),如下圖:

四荞膘、HDFS部署

1罚随、namenode安裝和datanode安裝

namenode和datanode的安裝很假單,是同一個安裝包羽资,下載好后淘菩,解壓到對應(yīng)的路徑就OK

2、安裝snappy

由于壓縮使用的snappy屠升,因此需要安裝snappy潮改,安裝snappy的網(wǎng)上有很多教程,這里不再詳細(xì)介紹腹暖。

3汇在、namenode和datanode的配置

namenode的配置屬于比較重要的部分,主要是內(nèi)存的配置脏答。namenode和datanode共享配置

hadoop-env.sh的主要配置如下:

export HADOOP_OPTS="$HADOOP_OPTS -Dsun.net.inetaddr.ttl=3-Dsun.net.inetaddr.negative.ttl=1-Djava.net.preferIPv4Stack=true"

#這里之所以加上-Dsun.net.inetaddr.ttl=3-Dsun.net.inetaddr.negative.ttl=1糕殉,是為了解決DNS緩存的問題

export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote -server -Xmx90g -Xms90g -Xmn4g -XX:SurvivorRatio=2 -XX:+UseMembar -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:ParallelCMSThreads=4 -XX:+UseCMSCompactAtFullCollection -verbose:gc -Xloggc:/data/hdfsadmin/hbaseenv/hadoop/logs/gc.log.`date +%Y-%m-%d-%H-%M-%S` -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=85 -XX:CMSFullGCsBeforeCompaction=1 $HADOOP_NAMENODE_OPTS"

export HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote -server -Xmx3g -Xmn1g -XX:SurvivorRatio=2 -XX:+UseMembar -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:ParallelCMSThreads=4 -XX:+UseCMSCompactAtFullCollection -verbose:gc -Xloggc:/data/hdfsadmin/hbaseenv/hadoop/logs/gc.log.`date +%Y-%m-%d-%H-%M-%S` -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=85 -XX:CMSFullGCsBeforeCompaction=1 $HADOOP_DATANODE_OPTS"

hdfs-site.xml的主要配置如下:? ??

#由于我們的設(shè)備有12塊數(shù)據(jù)盤,因此配置了12個掛載點(diǎn)以蕴,另外本地有一個SSD的分區(qū)專門用來存儲WAL日志用的

#這里設(shè)置hdfs保留空間為200G糙麦,關(guān)于這個參數(shù)的坑已有文章介紹,鏈接為:http://www.reibang.com/p/508449d8f12c

由于配置太多丛肮,這里不一一給出,稍后把模版分享出來魄缚。

4宝与、HDFS啟動

a焚廊、在namenode節(jié)點(diǎn)上執(zhí)行如下命令格式化ZK

./hdfs zkfc -formatZK

b、啟動JournalNode

./hadoop-daemon.sh start journalnode

c习劫、格式化namenode

./hdfs namenode -format

d咆瘟、初始化JournalNode

./hdfs namenode -initializeSharedEdits

e、停止journalmode

./hadoop-daemon.sh stop journalnode

f诽里、初始化備NN

將主節(jié)點(diǎn)的dfsnamespace目錄直接拷貝到備節(jié)點(diǎn)的對應(yīng)目錄

g袒餐、啟動JournalNode

./hadoop-daemon.sh start journalnode

h、啟動namenode節(jié)點(diǎn)

./hadoop-daemon.sh start namenode

i谤狡、在namenode上啟動zkfc

./hadoop-daemon.sh start zkfc

j灸眼、啟動datanode

在master上配置好slaves文件(將全部的datanode填寫到slaves文件中)

在master是那個執(zhí)行

./hadoop-daemons.sh start datanode

k、檢查啟動是否正常

使用jps命令查看進(jìn)程是否正常

檢查端口是否監(jiān)聽

打開hadoop dfsadmin -report查看各個節(jié)點(diǎn)的容量是否正常

使用http://namenodeip:8081/dfshealth.html#tab-overview 查看各個節(jié)點(diǎn)的狀態(tài)和相關(guān)信息是否正常

使用hadoop相關(guān)的命令測試集群是否正常

測試namenode容災(zāi)是否正常

五墓懂、HBase

1焰宣、master安裝和RegionServer安裝

?HBsae的安裝非常簡單,在官網(wǎng)下載包后解壓到對應(yīng)的位置即可捕仔。

2匕积、master和RegionServer的配置

hbase-env.sh 的配置:

export HBASE_OPTS="-server -d64 -Dsun.net.inetaddr.ttl=3-Dsun.net.inetaddr.negative.ttl=1-Djava.net.preferIPv4Stack=true"

export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xms10g -Xmx10g -Xmn4g"

export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xms48g -Xmx48g -Xmn4g"

export HBASE_SHELL_OPTS="$HBASE_SHELL_OPTS -Xms1g -Xmx1g -Xmn256m"

# Garbage collection options

CMS_OPTS="-XX:+UseConcMarkSweepGC

?? ?-XX:+UseParNewGC

?? ?-XX:+CMSParallelRemarkEnabled

?? ?-XX:+UseCMSCompactAtFullCollection

?? ?-XX:+UseCMSInitiatingOccupancyOnly

?? ?-XX:SurvivorRatio=2

?? ?-XX:CMSInitiatingOccupancyFraction=65"

?? ??export SERVER_GC_OPTS="-verbose:gc

? ? ? ? ? ? ? ? -XX:+PrintGCDetails

? ? ? ? ? ? ? ? ?-XX:+PrintGCDateStamps

? ? ? ? ? ? ? ? ?-XX:+HeapDumpOnOutOfMemoryError

? ? ? ? ? ? ? ? ? -XX:HeapDumpPath=${HBASE_LOG_DIR}

? ? ? ? ? ? ? ? ? -XX:ErrorFile=${HBASE_LOG_DIR}/hs_err_%p.log

? ? ? ? ? ? ? ? ? -XX:+PrintTenuringDistribution

? ? ? ? ? ? ? ? ? -Xloggc:${HBASE_LOG_DIR}/gc-hbase.log.`date +%Y-%m-%d-%H-%M-%S`

? ? ? ? ? ? ? ? ? ?-XX:+UseGCLogFileRotation

? ? ? ? ? ? ? ? ? ?-XX:NumberOfGCLogFiles=10

? ? ? ? ? ? ? ? ? ?-XX:GCLogFileSize=128M

? ? ? ? ? ? ? ? ? ? $CMS_OPTS"

hbase-site.xml,由于升級到的配置單數(shù)太多榜跌,這里不再列出闪唆,將文件直接上傳到附件。

3钓葫、HBase啟動

a悄蕾、啟動hbase master

/hbase-daemon.sh start master

b、啟動RegionServer

在master上配置好regionservers文件(將regionserver的IP列表寫入regionservers文件)

在master上執(zhí)行

./hbase-daemons.sh start regionserver

c瓤逼、檢查啟動是否正常

使用jps查看進(jìn)程是否正常

查看端口是否監(jiān)聽

通過http://masterip:8080/master-status 查看各個regionserver的狀態(tài)和相關(guān)信息是否正常

通過hbase shell測試hbase各項(xiàng)功能是否正常

測試master的容災(zāi)是否正常

七笼吟、自動化

整個安裝過程步驟機(jī)器繁多,建議在測試環(huán)境部署好后霸旗,寫成自動化腳本或者工具贷帮,后續(xù)再做擴(kuò)容或者安裝的時候,可以直接使用腳本工具來進(jìn)行诱告。我們部署采用Ansible做自動化安裝和擴(kuò)容撵枢,非常方便。

八精居、監(jiān)控部署

在安裝完成整個集群并測試無異常后锄禽,就需要添加對應(yīng)的監(jiān)控,對于hbase的監(jiān)控相關(guān)靴姿,以后再寫問詳細(xì)闡述需要監(jiān)控的相關(guān)監(jiān)控項(xiàng)沃但。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市佛吓,隨后出現(xiàn)的幾起案子宵晚,更是在濱河造成了極大的恐慌垂攘,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淤刃,死亡現(xiàn)場離奇詭異晒他,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)逸贾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門陨仅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人铝侵,你說我怎么就攤上這事灼伤。” “怎么了哟沫?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵饺蔑,是天一觀的道長。 經(jīng)常有香客問我嗜诀,道長猾警,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任隆敢,我火速辦了婚禮发皿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拂蝎。我一直安慰自己穴墅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布温自。 她就那樣靜靜地躺著玄货,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悼泌。 梳的紋絲不亂的頭發(fā)上松捉,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機(jī)與錄音馆里,去河邊找鬼隘世。 笑死,一個胖子當(dāng)著我的面吹牛鸠踪,可吹牛的內(nèi)容都是我干的丙者。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼营密,長吁一口氣:“原來是場噩夢啊……” “哼械媒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起评汰,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤滥沫,失蹤者是張志新(化名)和其女友劉穎侣集,沒想到半個月后键俱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兰绣,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年编振,在試婚紗的時候發(fā)現(xiàn)自己被綠了缀辩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡踪央,死狀恐怖臀玄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情畅蹂,我是刑警寧澤健无,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站液斜,受9級特大地震影響累贤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜少漆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一臼膏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧示损,春花似錦渗磅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脆贵,卻和暖如春医清,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丹禀。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工状勤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人双泪。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓持搜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親焙矛。 傳聞我的和親對象是個殘疾皇子葫盼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 終極算法 關(guān)注微信號每天收聽我們的消息終極算法為您推送精品閱讀 前言 Hadoop 在大數(shù)據(jù)技術(shù)體系中的地位至關(guān)...
    Yespon閱讀 129,899評論 12 168
  • hadoop2集群搭建詳解------------------------天津九安醫(yī)療電子--吳偉 一、需要軟件 ...
    hogface閱讀 1,810評論 1 4
  • 我們總是相互虧欠 你總愧于缺席我的童年 我總愧于沒有留在你身邊 你有你的棗園村斟、葡萄藤贫导、蘋果樹 春天抛猫,你用塔里木河的...
    天生好果閱讀 196評論 0 1
  • perry: 晚安,美夢孩灯。見字如謀面~非常感謝緣分讓我們相識闺金,人潮人海中 有你有我相遇相識,想想這是一件多么美好的...
    approach余閱讀 175評論 0 0
  • 昨天兒子在家還是按時做完了作業(yè)峰档,晚上見到我回家很是興奮败匹,到外婆家吃飯還是問外婆要了考試的獎金,還想問我要讥巡,我說考試...
    輝_0495閱讀 164評論 0 0