您好,登錄后才能下訂單哦!
在之前的大數(shù)據(jù)學(xué)習(xí)系列中,搭建了Hadoop+Spark+HBase+Hive 環(huán)境以及一些測試。其實(shí)要說的話,我開始學(xué)習(xí)大數(shù)據(jù)的時候,搭建的就是集群,并不是單機(jī)模式和偽分布式。至于為什么先寫單機(jī)的搭建,是因?yàn)樽鳛閭€人學(xué)習(xí)的話,單機(jī)已足以,好吧,說實(shí)話是自己的電腦不行,使用虛擬機(jī)實(shí)在太卡了。。。
整個的集群搭建是在公司的測試服務(wù)搭建的,在搭建的時候遇到各種各樣的坑,當(dāng)然也收獲頗多。在成功搭建大數(shù)據(jù)集群之后,零零散散的做了寫筆記,然后重新將這些筆記整理了下來。于是就有了本篇博文。
其實(shí)我在搭建的時候,并不是按部就班的搭建,中間或多或少都更改過不少,試驗(yàn)出來了目前沒啥問題的集群搭建。在寫本文的時候,開始準(zhǔn)備將環(huán)境在一臺機(jī)器上搭建,然后全部傳輸?shù)狡渌麢C(jī)器上。但是想了想,這樣或許在搭建環(huán)境的時候快速,但是對于閱讀者來說,不太友好。于是便拆分出來了,單獨(dú)搭建一個也是可以的。好了,廢話就少說了,教程如下。
[TOC]
這次因?yàn)槭羌捍罱?,所以在環(huán)境配置方面,我使用一張表格來大致描述。集群使用了3臺機(jī)器,分別是master、slave1、slave2,通過名稱命名就可以知道主從關(guān)系了。使用的操作系統(tǒng)是CentOS6.8,具體各個機(jī)器安裝的配置如下表格:
具體每個機(jī)器的配置就如上圖了。需要補(bǔ)充的是,spark這塊我沒有使用官方自帶的spark,而是使用的已經(jīng)編譯好的spark和hive的版本。因?yàn)楹竺嬖谑褂胔ive查詢的時候,不想使用hive默認(rèn)的mr,在hive2.x之后,官方也不建議了。因?yàn)槭褂胢r效率實(shí)在太低,所以在后面我會將hive的引擎換成spark,而自己又不想重新編譯spark ,所以就用這個版本了。如果各位想自行編譯,或者出現(xiàn)更高的版本,就沒必要一定按照上面的來。還有存放路徑這塊,沒必要一定要使用上面的,可以先在機(jī)器上使用 df -h 查看相應(yīng)的磁盤空間,再來進(jìn)行部署。
官方地址:
Hadoop:
http://www.apache.org/dyn/closer.cgi/hadoop/common
Spark:
http://spark.apache.org/downloads.html
Spark Sql on Hive
http://mirror.bit.edu.cn/apache/spark
Scala:
http://www.scala-lang.org/download
JDK:
http://www.oracle.com/technetwork/java/javase/downloads
HBase
http://mirror.bit.edu.cn/apache/hbase/
Zookeeper
http://mirror.bit.edu.cn/apache/zookeeper/
Hive
http://mirror.bit.edu.cn/apache/hive/
百度云:
鏈接:https://pan.baidu.com/s/1kUYfDaf 密碼:o1ov
說明:更改主機(jī)名是為了方便集群管理,不然每個機(jī)器的名稱都叫l(wèi)ocalhost也不太好吧! 集群所有的機(jī)器都要做這個操作。
輸入
vim /etc/sysconfig/network
將localhost.localdomain修改為你要更改的名稱,每臺名稱都不一樣
例如:
HOSTNAME=master
注: 名稱更改了之后輸入reboot重啟才會生效。
修改hosts文件,做關(guān)系映射
說明:這個每臺機(jī)器都做這個配置,具體ip和主機(jī)名稱以自己的為準(zhǔn)。
輸入:
vim /etc/hosts
添加
192.169.0.23 master
192.169.0.24 slave1
192.169.0.25 slave2
說明:可以在一臺機(jī)器添加了之后可以使用scp 命令或使用ftp將這個文件copy到 其他機(jī)器中。
scp命令示例:
scp -r /etc/hosts root@192.169.0.24:/etc
設(shè)置ssh免密碼登錄是為了操作方便
生成秘鑰文件
在每臺機(jī)器上都執(zhí)行一遍
首先輸入:
ssh-keygen -t rsa -P ''
生成秘鑰之后,然后將每臺機(jī)器/root/.ssh 都存入內(nèi)容相同的文件,文件名稱叫authorized_keys,文件內(nèi)容是我們剛才為3臺機(jī)器生成的公鑰??梢栽谝慌_機(jī)器上生成,然后復(fù)制到其它的機(jī)器上。
新建authorized_keys文件
輸入 :
touch /root/.ssh/authorized_keys
編輯 authorized_keys 并將其他機(jī)器上的秘鑰拷貝過來
cat /root/.ssh/id_rsa.pub
vim /root/.ssh/authorized_keys
將其它機(jī)器上的 id_rsa.pub 的內(nèi)容拷貝到 authorized_keys這個文件中。
第一個機(jī)器:
第二個機(jī)器:
第三個機(jī)器:
最終authorized_keys文件的內(nèi)容
將這個最終的authorized_keys文件copy到其他機(jī)器的 /root/.ssh 目錄下。使用scp或者ftp都可以。
scp命令示例:
scp -r /root/.ssh/authorized_keys root@192.169.0.24:/root/.ssh
測試免密碼登錄
輸入:
ssh slave1
ssh slave2
輸入 exit 退出
說明:其實(shí)可以不關(guān)閉防火墻,進(jìn)行權(quán)限設(shè)置,但是為了方便訪問,于是便關(guān)閉了防火墻。每個機(jī)器都做?。?!
關(guān)閉防火墻的命令
停止防火墻:
service iptables stop
啟動防火墻:
service iptables start
重啟防火墻:
service iptables restart
永久關(guān)閉防火墻:
chkconfig iptables off
集群上的機(jī)器時間要同步,因?yàn)槲疫@邊的是虛擬機(jī),所以就不用了。
設(shè)置集群時間同步可以使用NTP服務(wù)。
具體可以參考: http://blog.csdn.net/to_baidu/article/details/52562574
說明:因?yàn)橐?jīng)常切換各個目錄之間,所以為了偷懶,就設(shè)置別名了。只需要在linux輸入別名,就可以執(zhí)行別名后面的命令,相當(dāng)?shù)姆奖恪?例如:我們常用的ll就是 ls -l 的別名。關(guān)于別名這塊各位可以自行摸索。
輸入:
vim ~/.bashrc
添加下面的內(nèi)容
# Some more ailases
alias chd='cd /opt/hadoop/hadoop2.8'
alias chb='cd /opt/hbase/hbase1.2'
alias chi='cd /opt/hive/hive2.1'
alias czk='cd /opt/zookeeper/zookeeper3.4'
alias csp='cd /opt/spark/spark2.0-hadoop2.4-hive'
alias fhadoop='/opt/hadoop/hadoop2.8/bin/hdfs namenode -format'
alias starthadoop='/opt/hadoop/hadoop2.8/sbin/start-all.sh'
alias stophadoop='/opt/hadoop/hadoop2.8/sbin/stop-all.sh'
alias starthbase='/opt/hbase/hbase1.2/bin/start-hbase.sh'
alias stophbase='/opt/hbase/hbase1.2/bin/stop-hbase.sh'
alias startzk='/opt/zookeeper/zookeeper3.4/bin/zkServer.sh start'
alias stopzk='/opt/zookeeper/zookeeper3.4/bin/zkServer.sh stop'
alias statuszk='/opt/zookeeper/zookeeper3.4/bin/zkServer.sh status'
alias startsp='/opt/spark/spark1.6-hadoop2.4-hive/sbin/start-all.sh'
alias stopsp='/opt/spark/spark1.6-hadoop2.4-hive/sbin/stop-all.sh'
成功添加之后輸入
source ~/.bashrc
然后輸入設(shè)置的別名就可以執(zhí)行你所設(shè)置的內(nèi)容了。別名的設(shè)置不一定非要按照上面的,如果有更好方式就請使用
在 /etc/profile 這個配置文件要添加很多的環(huán)境配置,這里就先將整體的環(huán)境配置列舉出來,各位在配置環(huán)境變量的以自己的為準(zhǔn)?。。?可以先配置好環(huán)境變量之后,在傳輸?shù)狡渌麢C(jī)器上去。
我這里先將這些配置都傳輸?shù)狡渌臋C(jī)器上了,并且都source了,所以下文中這個配置文件的操作實(shí)際是沒做的。具體情況以自己的為準(zhǔn)。
#Java Config
export JAVA_HOME=/opt/java/jdk1.8
export JRE_HOME=/opt/java/jdk1.8/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
# Scala Config
export SCALA_HOME=/opt/scala/scala2.12
# Spark Config
export SPARK_HOME=/opt/spark/spark1.6-hadoop2.4-hive
# Zookeeper Config
export ZK_HOME=/opt/zookeeper/zookeeper3.4
# HBase Config
export HBASE_HOME=/opt/hbase/hbase1.2
# Hadoop Config
export HADOOP_HOME=/opt/hadoop/hadoop2.8
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
# Hive Config
export HIVE_HOME=/opt/hive/hive2.1
export HIVE_CONF_DIR=${HIVE_HOME}/conf
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZK_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin:$PATH
事先說明,這些配置可以在一臺機(jī)器上配置,然后復(fù)制到其他機(jī)器上就行了。復(fù)制之后注意使這些配置文件生效。
說明: 一般CentOS自帶了openjdk,但是hadoop集群使用的是oracle官方的jdk,所以先行卸載CentOS的jdk,然后再安裝在oracle下載好的JDK。
首先輸入 java -version
查看是否安裝了JDK,如果安裝了,但版本不適合的話,就卸載
輸入
rpm -qa | grep java
查看信息
然后輸入:
rpm -e --nodeps “你要卸載JDK的信息”
如: rpm -e --nodeps java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
確認(rèn)沒有了之后,解壓下載下來的JDK
tar -xvf jdk-8u144-linux-x64.tar.gz
移動到opt/java文件夾中,沒有就新建,然后將文件夾重命名為jdk1.8。
mv jdk1.8.0_144 /opt/java
mv jdk1.8.0_144 jdk1.8
然后編輯 profile 文件,添加如下配置
輸入:
vim /etc/profile
添加:
export JAVA_HOME=/opt/java/jdk1.8
export JRE_HOME=/opt/java/jdk1.8/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=.:${JAVA_HOME}/bin:$PATH
添加成功之后,輸入
source /etc/profile
java -version
查看是否配置成功
將下載下來的Hadoop的配置文件進(jìn)行解壓
在linux上輸入:
tar -xvf hadoop-2.8.2.tar.gz
然后將解壓之后的文件夾移動到opt/hadoop文件夾下,沒有該文件夾就新建,然后將文件夾重命名為hadoop2.8。
在linux上輸入移動文件夾命令:
mv hadoop-2.8.2 /opt/hadoop
mv hadoop-2.8.2 hadoop2.8
編輯 /etc/profile 文件
輸入:
vim /etc/profile
添加:
export HADOOP_HOME=/opt/hadoop/hadoop2.8
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH
輸入:
source /etc/profile
使配置生效
修改 core-site.xml、hadoop-env.sh、hdfs-site.xml、mapred-site.xml 等這些配置文件
在linux輸入進(jìn)入該目錄的命令:
cd /opt/hadoop/hadoop2.8/etc/hadoop
hadoop的存放路徑可以自行更改。開始我以為這些文件夾需要手動創(chuàng)建,后來實(shí)踐了,如果不手動創(chuàng)建,會自動創(chuàng)建的,所以就去掉了手動創(chuàng)建目錄的步驟。
輸入:
vim core-site.xml
在<configuration>
節(jié)點(diǎn)內(nèi)加入配置:
<configuration>
<property>
<name>hadoop.temp.dir</name>
<value>file:/root/hadoop/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- eclipse連接hive 的配置-->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
說明: fs.defaultFS 是缺省文件的名稱, 最早使用的是 fs.default.name,后來在最新官方文檔中查到該方法已經(jīng)棄用了。于是邊改成這個了。ps:感覺也沒啥區(qū)別。
這個要做,不知道為什么相對路徑不識別,于是就使用絕對路徑。
將
export JAVA_HOME=${JAVA_HOME}
修改為:
export JAVA_HOME=/opt/java/jdk1.8
注:修改為自己JDK的路徑
下面的hdfs的存放路徑,可以根據(jù)自己機(jī)器更改。
在<configuration>
節(jié)點(diǎn)內(nèi)加入配置:
<property>
<name>dfs:replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/hadoop/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/hadoop/data</value>
</property>
執(zhí)行mapreduce的運(yùn)行框架配置。ps:感覺這個配置沒啥用,可能我沒用mr吧。
如果沒有 mapred-site.xml 該文件,就復(fù)制mapred-site.xml.template文件并重命名為mapred-site.xml。
修改這個新建的mapred-site.xml文件,在<configuration>
節(jié)點(diǎn)內(nèi)加入配置:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
yarn 資源調(diào)度的配置,集群的話這個配置是必須的。
修改/opt/hadoop/hadoop2.8/etc/hadoop/yarn-site.xml文件,
在<configuration>
節(jié)點(diǎn)內(nèi)加入配置
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<description>The address of the scheduler interface.</description>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<description>The http address of the RM web application.</description>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<description>The https adddress of the RM web application.</description>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<description>The address of the RM admin interface.</description>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8182</value>
<discription>每個節(jié)點(diǎn)可用內(nèi)存,單位MB,默認(rèn)8182MB</discription>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
說明:yarn.nodemanager.vmem-check-enabled這個的意思是忽略虛擬內(nèi)存的檢查,如果你是安裝在虛擬機(jī)上,這個配置很有用,配上去之后后續(xù)操作不容易出問題。如果是實(shí)體機(jī)上,并且內(nèi)存夠多,可以將這個配置去掉。
設(shè)置主從的配置。如果不設(shè)置這個,集群就無法得知主從了。如果是單機(jī)模式,就沒必要配置了。
修改/opt/hadoop/hadoop2.8/etc/hadoop/slaves文件
更改為
slave1
slave2
這些配置參考Hadoop官方文檔。
Hadoop官方配置文件具體說明: http://hadoop.apache.org/docs/r2.8.3/
在一臺機(jī)器上(最好是master)做完這些配置之后,我們使用scp命令將這些配置傳輸?shù)狡渌麢C(jī)器上。
輸入:
jdk環(huán)境傳輸
scp -r /opt/java root@slave1:/opt
scp -r /opt/java root@slave2:/opt
hadoop環(huán)境傳輸
scp -r /opt/hadoop root@slave1:/opt
scp -r /opt/hadoop root@slave2:/opt
傳輸之后,便在主節(jié)點(diǎn)啟動集群。
在啟動hadoop之前,需要初始化,這個只需要在master上初始化就可以了。
注:啟動hadoop之前確保防火墻關(guān)閉,各個機(jī)器時間通過,ssh免登錄都沒問題。
初始化hadoop
切換到/opt/hadoop/hadoop2.8/bin目錄下輸入
./hdfs namenode -format
初始化成功之后,切換到/opt/hadoop/hadoop2.8/sbin
啟動hadoop 的hdfs和yarn
輸入:
start-dfs.sh
start-yarn.sh
第一次登錄會詢問是否連接,輸入yes ,然后輸入密碼就可以了
啟動成功之后,可以使用jps命令在各個機(jī)器上查看是否成功
可以在瀏覽器輸入: ip+50070 和8088端口查看
若如圖顯示,則啟動成功。
若失敗,檢查jps是否成功啟動,防火墻是否都關(guān)閉。都確認(rèn)沒問題之后,還是無法打開界面,請查看日志,再來找原因。
說明:其實(shí)spark的相關(guān)配置,我在大數(shù)據(jù)學(xué)習(xí)系列之六 ----- Hadoop+Spark環(huán)境搭建 http://www.panchengming.com/2017/12/19/pancm63/ 應(yīng)該已經(jīng)說的很詳細(xì)了,雖然是單機(jī)環(huán)境。其實(shí)集群也就增加個slave配置,其他的暫時好像沒什么了。所以就簡單的貼下配置。
和JDK配置幾乎一樣
將下載好的Scala文件解壓
輸入
tar -xvf scala-2.12.2.tgz
然后移動到/opt/scala 里面
并且重命名為scala2.1
輸入
mv scala-2.12.2 /opt/scala
mv scala-2.12.2 scala2.12
編輯 /etc/profile 文件
輸入:
export SCALA_HOME=/opt/scala/scala2.12
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:$PATH
輸入:
source /etc/profile
使配置生效
輸入 scala -version 查看是否安裝成功
將下載好的Spark文件解壓
輸入
tar -xvf spark-1.6.3-bin-hadoop2.4-without-hive.tgz
然后移動到/opt/spark 里面,并重命名
輸入
mv spark-1.6.3-bin-hadoop2.4-without-hive /opt/spark
mv spark-1.6.3-bin-hadoop2.4-without-hive spark1.6-hadoop2.4-hive
編輯 /etc/profile 文件
輸入:
export SPARK_HOME=/opt/spark/spark1.6-hadoop2.4-hive
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:$PATH
輸入:
source /etc/profile
使配置生效
切換目錄
輸入:
cd /opt/spark/spark1.6-hadoop2.4-hive/conf
在conf目錄下,修改spark-env.sh文件,如果沒有 spark-env.sh 該文件,就復(fù)制spark-env.sh.template文件并重命名為spark-env.sh。
修改這個新建的spark-env.sh文件,加入配置:
export SCALA_HOME=/opt/scala/scala2.1
export JAVA_HOME=/opt/java/jdk1.8
export HADOOP_HOME=/opt/hadoop/hadoop2.8
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_HOME=/opt/spark/spark1.6-hadoop2.4-hive
export SPARK_MASTER_IP=master
export SPARK_EXECUTOR_MEMORY=4G
注:上面的路徑以自己的為準(zhǔn),SPARK_MASTER_IP為主機(jī),SPARK_EXECUTOR_MEMORY為設(shè)置的運(yùn)行內(nèi)存。
slaves 分布式文件
在conf目錄下,修改slaves文件,如果沒有 slaves 該文件,就復(fù)制slaves .template文件并重命名為slaves 。
修改這個新建的slaves 文件,加入配置:
slave1
slave2
在一臺機(jī)器上(最好是master)做完這些配置之后,我們使用scp命令將這些配置傳輸?shù)狡渌麢C(jī)器上。
輸入:
scala環(huán)境傳輸
scp -r /opt/scala root@slave1:/opt
scp -r /opt/scala root@slave2:/opt
spark環(huán)境傳輸
scp -r /opt/spark root@slave1:/opt
scp -r /opt/spark root@slave2:/opt
傳輸之后,便在主節(jié)點(diǎn)啟動集群。
說明:要先啟動Hadoop
切換到Spark目錄下
輸入:
cd /opt/spark/spark2.2/sbin
然后啟動Spark
輸入:
start-all.sh
啟動成功之后,可以使用jps命令在各個機(jī)器上查看是否成功。
可以在瀏覽器輸入: ip+8080 端口查看
若成功顯示這個界面,則表示Spark成功啟動。
因?yàn)镠Base做集群,所以就需要zookeeper了。
zookeeper 在很多環(huán)境搭建上,都會有他的身影,如kafka、storm等,這里就不多說了。
將下載下來的Zookeeper 的配置文件進(jìn)行解壓
在linux上輸入:
tar -xvf zookeeper-3.4.10.tar.gz
然后移動到/opt/zookeeper里面,沒有就新建,然后將文件夾重命名為zookeeper3.4
輸入
mv zookeeper-3.4.10 /opt/zookeeper
mv zookeeper-3.4.10 zookeeper3.4
編輯 /etc/profile 文件
輸入:
export ZK_HOME=/opt/zookeeper/zookeeper3.4
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${ZK_HOME}/bin:$PATH
輸入:
source /etc/profile
使配置生效
在集群的服務(wù)器上都創(chuàng)建這些目錄
mkdir /opt/zookeeper/data
mkdir /opt/zookeeper/dataLog
并且在/opt/zookeeper/data目錄下創(chuàng)建myid文件
輸入:
touch myid
創(chuàng)建成功之后,更改myid文件。
我這邊為了方便,將master、slave1、slave2的myid文件內(nèi)容改為1,2,3
切換到/opt/zookeeper/zookeeper3.4/conf 目錄下
如果沒有 zoo.cfg 該文件,就復(fù)制zoo_sample.cfg文件并重命名為zoo.cfg。
修改這個新建的zoo.cfg文件
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/dataLog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
說明:client port,顧名思義,就是客戶端連接zookeeper服務(wù)的端口。這是一個TCP port。dataLogDir里是放到的順序日志(WAL)。而dataDir里放的是內(nèi)存數(shù)據(jù)結(jié)構(gòu)的snapshot,便于快速恢復(fù)。為了達(dá)到性能最大化,一般建議把dataDir和dataLogDir分到不同的磁盤上,這樣就可以充分利用磁盤順序?qū)懙奶匦?。dataDir和dataLogDir需要自己創(chuàng)建,目錄可以自己制定,對應(yīng)即可。server.1中的這個1需要和master這個機(jī)器上的dataDir目錄中的myid文件中的數(shù)值對應(yīng)。server.2中的這個2需要和slave1這個機(jī)器上的dataDir目錄中的myid文件中的數(shù)值對應(yīng)。server.3中的這個3需要和slave2這個機(jī)器上的dataDir目錄中的myid文件中的數(shù)值對應(yīng)。當(dāng)然,數(shù)值你可以隨便用,只要對應(yīng)即可。2888和3888的端口號也可以隨便用,因?yàn)樵诓煌瑱C(jī)器上,用成一樣也無所謂。
1.tickTime:CS通信心跳數(shù)
Zookeeper 服務(wù)器之間或客戶端與服務(wù)器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發(fā)送一個心跳。tickTime以毫秒為單位。
tickTime=2000
2.initLimit:LF初始通信時限
集群中的follower服務(wù)器(F)與leader服務(wù)器(L)之間初始連接時能容忍的最多心跳數(shù)(tickTime的數(shù)量)。
initLimit=10
3.syncLimit:LF同步通信時限
集群中的follower服務(wù)器與leader服務(wù)器之間請求和應(yīng)答之間能容忍的最多心跳數(shù)(tickTime的數(shù)量)。
syncLimit=5
依舊將zookeeper傳輸?shù)狡渌臋C(jī)器上,記得更改 /opt/zookeeper/data 下的myid,這個不能一致。
輸入:
scp -r /opt/zookeeper root@slave1:/opt
scp -r /opt/zookeeper root@slave2:/opt
因?yàn)閦ookeeper是選舉制,它的主從關(guān)系并不是像hadoop那樣指定的,具體可以看官方的文檔說明。
成功配置zookeeper之后,在每臺機(jī)器上啟動zookeeper。
切換到zookeeper目錄下
cd /opt/zookeeper/zookeeper3.4/bin
輸入:
zkServer.sh start
成功啟動之后
查看狀態(tài)輸入:
zkServer.sh status
可以查看各個機(jī)器上zookeeper的leader和follower
將下載下來的HBase的配置文件進(jìn)行解壓
在linux上輸入:
tar -xvf hbase-1.2.6-bin.tar.gz
然后移動到/opt/hbase 文件夾里面,并重命名為 hbase1.2
輸入
mv hbase-1.2.6 /opt/hbase
mv hbase1.2 /opt/hbase
編輯 /etc/profile 文件
輸入:
export HBASE_HOME=/opt/hbase/hbase1.2
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:$PATH
輸入:
source /etc/profile
使配置生效
輸入
hbase version
查看版本
切換到 /opt/hbase/hbase-1.2.6/conf 下
編輯 hbase-env.sh 文件,添加以下配置
export JAVA_HOME=/opt/java/jdk1.8
export HADOOP_HOME=/opt/hadoop/hadoop2.8
export HBASE_HOME=/opt/hbase/hbase1.2
export HBASE_CLASSPATH=/opt/hadoop/hadoop2.8/etc/hadoop
export HBASE_PID_DIR=/root/hbase/pids
export HBASE_MANAGES_ZK=false
說明:配置的路徑以自己的為準(zhǔn)。HBASE_MANAGES_ZK=false 是不啟用HBase自帶的Zookeeper集群。
編輯hbase-site.xml 文件,在<configuration>
添加如下配置
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
<description>The directory shared byregion servers.</description>
</property>
<!-- hbase端口 -->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<!-- 超時時間 -->
<property>
<name>zookeeper.session.timeout</name>
<value>120000</value>
</property>
<!--防止服務(wù)器時間不同步出錯 -->
<property>
<name>hbase.master.maxclockskew</name>
<value>150000</value>
</property>
<!-- 集群主機(jī)配置 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<!-- 路徑存放 -->
<property>
<name>hbase.tmp.dir</name>
<value>/root/hbase/tmp</value>
</property>
<!-- true表示分布式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定master -->
<property>
<name>hbase.master</name>
<value>master:60000</value>
</property>
</configuration>
說明:hbase.rootdir:這個目錄是region server的共享目錄,用來持久化Hbase 。hbase.cluster.distributed :Hbase的運(yùn)行模式。false是單機(jī)模式,true是分布式模式。若為false,Hbase和Zookeeper會運(yùn)行在同一個JVM里面。
指定hbase的主從,和hadoop的slaves文件配置一樣
將文件修改為
slave1
slave2
注:上面的為集群的主機(jī)名稱
在一臺機(jī)器上(最好是master)做完這些配置之后,我們使用scp命令將這些配置傳輸?shù)狡渌麢C(jī)器上。
輸入:
hbase環(huán)境傳輸
scp -r /opt/hbaseroot@slave1:/opt
scp -r /opt/hbase root@slave2:/opt
傳輸之后,便在主節(jié)點(diǎn)啟動集群。
在成功啟動Hadoop、zookeeper之后
切換到HBase目錄下
cd /opt/hbase/hbase1.2/bin
輸入:
start-hbase.sh
啟動成功之后,可以使用jps命令在各個機(jī)器上查看是否成功
可以在瀏覽器輸入: ip+16010 端口查看
若成功顯示該界面,則啟動成功。
因?yàn)閔ive安裝使用不需要集群,只需在一臺機(jī)器上安裝使用就可以了,之前在我的
大數(shù)據(jù)學(xué)習(xí)系列之四 ----- Hadoop+Hive環(huán)境搭建圖文詳解(單機(jī)) http://www.panchengming.com/2017/12/16/pancm61/ 里面已經(jīng)講解的很詳細(xì),所以本文就不在描述了。
環(huán)境搭建參考: http://blog.csdn.net/pucao_cug/article/details/72773564
環(huán)境配置參考的官方文檔。
到此,本教程就結(jié)束了,謝謝閱讀!
版權(quán)聲明:
作者:虛無境
博客園出處:http://www.cnblogs.com/xuwujing
CSDN出處:http://blog.csdn.net/qazwsxpcm
個人博客出處:http://www.panchengming.com
原創(chuàng)不易,轉(zhuǎn)載請標(biāo)明出處,謝謝!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。