大數據學習系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 圖文詳解

来源:https://www.cnblogs.com/xuwujing/archive/2017/12/30/8150109.html
-Advertisement-
Play Games

引言 在之前的大數據學習系列中,搭建了Hadoop+Spark+HBase+Hive 環境以及一些測試。其實要說的話,我開始學習大數據的時候,搭建的就是集群,並不是單機模式和偽分散式。至於為什麼先寫單機的搭建,是因為作為個人學習的話,單機已足以,好吧,說實話是自己的電腦不行,使用虛擬機實在太卡了。。 ...


引言

    在之前的大數據學習系列中,搭建了Hadoop+Spark+HBase+Hive 環境以及一些測試。其實要說的話,我開始學習大數據的時候,搭建的就是集群,並不是單機模式和偽分散式。至於為什麼先寫單機的搭建,是因為作為個人學習的話,單機已足以,好吧,說實話是自己的電腦不行,使用虛擬機實在太卡了。。。 
    整個的集群搭建是在公司的測試服務搭建的,在搭建的時候遇到各種各樣的坑,當然也收穫頗多。在成功搭建大數據集群之後,零零散散的做了寫筆記,然後重新將這些筆記整理了下來。於是就有了本篇博文。
    其實我在搭建的時候,並不是按部就班的搭建,中間或多或少都更改過不少,試驗出來了目前沒啥問題的集群搭建。在寫本文的時候,開始準備將環境在一臺機器上搭建,然後全部傳輸到其他機器上。但是想了想,這樣或許在搭建環境的時候快速,但是對於閱讀者來說,不太友好。於是便拆分出來了,單獨搭建一個也是可以的。好了,廢話就少說了,教程如下。

目錄

[TOC]

一、環境選擇

1,集群機器安裝圖

這次因為是集群搭建,所以在環境配置方面,我使用一張表格來大致描述。集群使用了3台機器,分別是master、slave1、slave2,通過名稱命名就可以知道主從關係了。使用的操作系統是CentOS6.8,具體各個機器安裝的配置如下表格:
這裡寫圖片描述

具體每個機器的配置就如上圖了。需要補充的是,spark這塊我沒有使用官方自帶的spark,而是使用的已經編譯好的spark和hive的版本。因為後面在使用hive查詢的時候,不想使用hive預設的mr,在hive2.x之後,官方也不建議了。因為使用mr效率實在太低,所以在後面我會將hive的引擎換成spark,而自己又不想重新編譯spark ,所以就用這個版本了。如果各位想自行編譯,或者出現更高的版本,就沒必要一定按照上面的來。還有存放路徑這塊,沒必要一定要使用上面的,可以先在機器上使用 df -h 查看相應的磁碟空間,再來進行部署。

2,配置說明

  • JDK :Hadoop和Spark 依賴的配置,官方建議JDK版本在1.7以上!!!
  • Scala:Spark依賴的配置,建議版本不低於spark的版本。
  • Hadoop: 是一個分散式系統基礎架構。
  • Spark: 分散式存儲的大數據進行處理的工具。
  • zookeeper:分散式應用程式協調服務,HBase集群需要。
  • HBase: 一個結構化數據的分散式存儲系統。
  • Hive: 基於Hadoop的一個數據倉庫工具,目前的預設元資料庫是mysql。

3,下載地址

官方地址:
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

二、集群的相關配置

1,主機名更改以及主機和IP做相關映射

1. 更改主機名

說明:更改主機名是為了方便集群管理,不然每個機器的名稱都叫localhost也不太好吧! 集群所有的機器都要做這個操作。

輸入

 vim /etc/sysconfig/network 

將localhost.localdomain修改為你要更改的名稱,每台名稱都不一樣
例如:

HOSTNAME=master
註: 名稱更改了之後輸入reboot重啟才會生效。

2.做主機和IP的關係映射

修改hosts文件,做關係映射
說明:這個每台機器都做這個配置,具體ip和主機名稱以自己的為準。
輸入:

vim /etc/hosts

添加

192.169.0.23 master
192.169.0.24 slave1
192.169.0.25 slave2

這裡寫圖片描述
說明:可以在一臺機器添加了之後可以使用scp 命令或使用ftp將這個文件copy到 其他機器中。
scp命令示例:

scp -r /etc/hosts [email protected]:/etc

2,ssh免登錄

設置ssh免密碼登錄是為了操作方便
生成秘鑰文件
在每台機器上都執行一遍
首先輸入:

ssh-keygen -t rsa -P ''

生成秘鑰之後,然後將每台機器/root/.ssh 都存入內容相同的文件,文件名稱叫authorized_keys,文件內容是我們剛纔為3台機器生成的公鑰。可以在一臺機器上生成,然後複製到其它的機器上。

新建authorized_keys文件
輸入 :

 touch  /root/.ssh/authorized_keys

編輯 authorized_keys 並將其他機器上的秘鑰拷貝過來

cat /root/.ssh/id_rsa.pub
vim /root/.ssh/authorized_keys

將其它機器上的 id_rsa.pub 的內容拷貝到 authorized_keys這個文件中。
第一個機器:
這裡寫圖片描述

第二個機器:
這裡寫圖片描述

第三個機器:
這裡寫圖片描述

最終authorized_keys文件的內容
這裡寫圖片描述

將這個最終的authorized_keys文件copy到其他機器的 /root/.ssh 目錄下。使用scp或者ftp都可以。
scp命令示例:

scp -r /root/.ssh/authorized_keys [email protected]:/root/.ssh

測試免密碼登錄
輸入:

ssh slave1
ssh slave2

輸入 exit 退出
這裡寫圖片描述

3,防火牆關閉

說明:其實可以不關閉防火牆,進行許可權設置,但是為了方便訪問,於是便關閉了防火牆。每個機器都做!!!

關閉防火牆的命令
停止防火牆:
service iptables stop
啟動防火牆:
service iptables start
重啟防火牆:
service iptables restart
永久關閉防火牆:
chkconfig iptables off

4,時間配置

集群上的機器時間要同步,因為我這邊的是虛擬機,所以就不用了。
設置集群時間同步可以使用NTP服務。
具體可以參考: http://blog.csdn.net/to_baidu/article/details/52562574

5,快捷鍵設置(可選)

說明:因為要經常切換各個目錄之間,所以為了偷懶,就設置別名了。只需要在linux輸入別名,就可以執行別名後面的命令,相當的方便。 例如:我們常用的ll就是 ls -l 的別名。關於別名這塊各位可以自行摸索。
輸入:

vim ~/.bashrc

添加下麵的內容

# 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

然後輸入設置的別名就可以執行你所設置的內容了。別名的設置不一定非要按照上面的,如果有更好方式就請使用

6,整體環境變數設置

在 /etc/profile 這個配置文件要添加很多的環境配置,這裡就先將整體的環境配置列舉出來,各位在配置環境變數的以自己的為準!!! 可以先配置好環境變數之後,在傳輸到其他機器上去。
我這裡先將這些配置都傳輸到其他的機器上了,並且都source了,所以下文中這個配置文件的操作實際是沒做的。具體情況以自己的為準。

#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

二、Hadoop的環境搭建

事先說明,這些配置可以在一臺機器上配置,然後複製到其他機器上就行了。複製之後註意使這些配置文件生效。

1,JDK配置

說明: 一般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
這裡寫圖片描述

確認沒有了之後,解壓下載下來的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 

查看是否配置成功

2,hadoop配置

3.2.1 文件準備

將下載下來的Hadoop的配置文件進行解壓
在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

3.2.2 環境配置

編輯 /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

使配置生效

3.2.3 修改配置文件

修改 core-site.xml、hadoop-env.sh、hdfs-site.xml、mapred-site.xml 等這些配置文件
在linux輸入進入該目錄的命令:

cd /opt/hadoop/hadoop2.8/etc/hadoop
3.2.3.1 修改 core-site.xml

hadoop的存放路徑可以自行更改。開始我以為這些文件夾需要手動創建,後來實踐了,如果不手動創建,會自動創建的,所以就去掉了手動創建目錄的步驟。
輸入:

vim core-site.xml

<configuration>節點內加入配置:

 <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,後來在最新官方文檔中查到該方法已經棄用了。於是邊改成這個了。ps:感覺也沒啥區別。

3.2.3.2 修改 hadoop-env.sh

這個要做,不知道為什麼相對路徑不識別,於是就使用絕對路徑。

export   JAVA_HOME=${JAVA_HOME}

修改為:

export   JAVA_HOME=/opt/java/jdk1.8

註:修改為自己JDK的路徑
這裡寫圖片描述

3.2.2.3 修改 hdfs-site.xml

下麵的hdfs的存放路徑,可以根據自己機器更改。
<configuration>節點內加入配置:

 <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>    

這裡寫圖片描述

3.5.2.4 修改mapred-site.xml

執行mapreduce的運行框架配置。ps:感覺這個配置沒啥用,可能我沒用mr吧。
如果沒有 mapred-site.xml 該文件,就複製mapred-site.xml.template文件並重命名為mapred-site.xml。
修改這個新建的mapred-site.xml文件,在<configuration>節點內加入配置:

<property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>
3.5.2.5 修改yarn-site.xml文件

yarn 資源調度的配置,集群的話這個配置是必須的。
修改/opt/hadoop/hadoop2.8/etc/hadoop/yarn-site.xml文件,
<configuration>節點內加入配置

<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>每個節點可用記憶體,單位MB,預設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這個的意思是忽略虛擬記憶體的檢查,如果你是安裝在虛擬機上,這個配置很有用,配上去之後後續操作不容易出問題。如果是實體機上,並且記憶體夠多,可以將這個配置去掉。

3.5.2.6 修改slaves

設置主從的配置。如果不設置這個,集群就無法得知主從了。如果是單機模式,就沒必要配置了。
修改/opt/hadoop/hadoop2.8/etc/hadoop/slaves文件
更改為

slave1 
slave2

這些配置參考Hadoop官方文檔。
Hadoop官方配置文件具體說明: http://hadoop.apache.org/docs/r2.8.3/

在一臺機器上(最好是master)做完這些配置之後,我們使用scp命令將這些配置傳輸到其他機器上。
輸入:
jdk環境傳輸

scp -r /opt/java root@slave1:/opt
scp -r /opt/java root@slave2:/opt

hadoop環境傳輸

scp -r /opt/hadoop root@slave1:/opt
scp -r /opt/hadoop root@slave2:/opt

傳輸之後,便在主節點啟動集群。
在啟動hadoop之前,需要初始化,這個只需要在master上初始化就可以了。

3,hadoop啟動

:啟動hadoop之前確保防火牆關閉,各個機器時間通過,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命令在各個機器上查看是否成功
可以在瀏覽器輸入: ip+50070 和8088埠查看
這裡寫圖片描述

這裡寫圖片描述

若如圖顯示,則啟動成功。
若失敗,檢查jps是否成功啟動,防火牆是否都關閉。都確認沒問題之後,還是無法打開界面,請查看日誌,再來找原因。

四、Spark的環境配置

說明:其實spark的相關配置,我在大數據學習系列之六 ----- Hadoop+Spark環境搭建 http://www.panchengming.com/2017/12/19/pancm63/ 應該已經說的很詳細了,雖然是單機環境。其實集群也就增加個slave配置,其他的暫時好像沒什麼了。所以就簡單的貼下配置。

1,Scala配置

和JDK配置幾乎一樣

4.1.1 文件準備

將下載好的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

4.1.2 環境配置

編輯 /etc/profile 文件
輸入:

export SCALA_HOME=/opt/scala/scala2.12
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:$PATH

輸入:

source  /etc/profile

使配置生效
輸入 scala -version 查看是否安裝成功

2,Spark配置

4.2.1,文件準備

將下載好的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

4.2.2,環境配置

編輯 /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

使配置生效

4.2.3,更改配置文件

切換目錄
輸入:

cd /opt/spark/spark1.6-hadoop2.4-hive/conf
4.2.3.1 修改 spark-env.sh

在conf目錄下,修改spark-env.sh文件,如果沒有 spark-env.sh 該文件,就複製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

:上面的路徑以自己的為準,SPARK_MASTER_IP為主機,SPARK_EXECUTOR_MEMORY為設置的運行記憶體。

4.2.3.2 修改slaves

slaves 分散式文件
在conf目錄下,修改slaves文件,如果沒有 slaves 該文件,就複製slaves .template文件並重命名為slaves 。
修改這個新建的slaves 文件,加入配置:

slave1 
slave2

在一臺機器上(最好是master)做完這些配置之後,我們使用scp命令將這些配置傳輸到其他機器上。
輸入:
scala環境傳輸

scp -r /opt/scala root@slave1:/opt
scp -r /opt/scala root@slave2:/opt

spark環境傳輸

scp -r /opt/spark root@slave1:/opt
scp -r /opt/spark root@slave2:/opt

傳輸之後,便在主節點啟動集群。

3,spark啟動

說明:要先啟動Hadoop
切換到Spark目錄下
輸入:

cd /opt/spark/spark2.2/sbin

然後啟動Spark
輸入:

 start-all.sh

啟動成功之後,可以使用jps命令在各個機器上查看是否成功。
可以在瀏覽器輸入: ip+8080 埠查看

這裡寫圖片描述
若成功顯示這個界面,則表示Spark成功啟動。

五、Zookeeper的環境配置

因為HBase做集群,所以就需要zookeeper了。
zookeeper 在很多環境搭建上,都會有他的身影,如kafka、storm等,這裡就不多說了。

1,文件準備

將下載下來的Zookeeper 的配置文件進行解壓
在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

2,環境配置

編輯 /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

使配置生效

3,修改配置文件

5.3.1 創建文件和目錄

在集群的伺服器上都創建這些目錄

mkdir   /opt/zookeeper/data  
mkdir   /opt/zookeeper/dataLog

並且在/opt/zookeeper/data目錄下創建myid文件
輸入:

touch  myid

創建成功之後,更改myid文件。
我這邊為了方便,將master、slave1、slave2的myid文件內容改為1,2,3
這裡寫圖片描述

5.3.2 新建zoo.cfg

切換到/opt/zookeeper/zookeeper3.4/conf 目錄下
如果沒有 zoo.cfg 該文件,就複製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服務的埠。這是一個TCP port。dataLogDir里是放到的順序日誌(WAL)。而dataDir里放的是記憶體數據結構的snapshot,便於快速恢復。為了達到性能最大化,一般建議把dataDir和dataLogDir分到不同的磁碟上,這樣就可以充分利用磁碟順序寫的特性。dataDir和dataLogDir需要自己創建,目錄可以自己制定,對應即可。server.1中的這個1需要和master這個機器上的dataDir目錄中的myid文件中的數值對應。server.2中的這個2需要和slave1這個機器上的dataDir目錄中的myid文件中的數值對應。server.3中的這個3需要和slave2這個機器上的dataDir目錄中的myid文件中的數值對應。當然,數值你可以隨便用,只要對應即可。2888和3888的埠號也可以隨便用,因為在不同機器上,用成一樣也無所謂。
1.tickTime:CS通信心跳數
Zookeeper 伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。tickTime以毫秒為單位。
tickTime=2000
2.initLimit:LF初始通信時限
集群中的follower伺服器(F)與leader伺服器(L)之間初始連接時能容忍的最多心跳數(tickTime的數量)。
initLimit=10
3.syncLimit:LF同步通信時限
集群中的follower伺服器與leader伺服器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)。
syncLimit=5

依舊將zookeeper傳輸到其他的機器上,記得更改 /opt/zookeeper/data 下的myid,這個不能一致。
輸入:

scp -r /opt/zookeeper root@slave1:/opt
scp -r /opt/zookeeper root@slave2:/opt

4,啟動zookeeper

因為zookeeper是選舉制,它的主從關係並不是像hadoop那樣指定的,具體可以看官方的文檔說明。
成功配置zookeeper之後,在每台機器上啟動zookeeper。
切換到zookeeper目錄下

cd /opt/zookeeper/zookeeper3.4/bin

輸入:

zkServer.sh start

成功啟動之後
查看狀態輸入:

 zkServer.sh status

可以查看各個機器上zookeeper的leader和follower
這裡寫圖片描述

六、HBase的環境配置

1,文件準備

將下載下來的HBase的配置文件進行解壓
在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

2,環境配置

編輯 /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
查看版本
這裡寫圖片描述

3,修改配置文件

切換到 /opt/hbase/hbase-1.2.6/conf 下

6.3.1 修改hbase-env.sh

編輯 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

這裡寫圖片描述
說明:配置的路徑以自己的為準。HBASE_MANAGES_ZK=false 是不啟用HBase自帶的Zookeeper集群。

6.3.2 修改 hbase-site.xml

編輯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>
<!--防止伺服器時間不同步出錯 -->
<property>
<name>hbase.master.maxclockskew</name>
<value>150000</value>
</property>
<!-- 集群主機配置 -->
<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的運行模式。false是單機模式,true是分散式模式。若為false,Hbase和Zookeeper會運行在同一個JVM裡面。

6.3.3 修改regionservers

指定hbase的主從,和hadoop的slaves文件配置一樣
將文件修改為

slave1 
slave2

這裡寫圖片描述
:上面的為集群的主機名稱

在一臺機器上(最好是master)做完這些配置之後,我們使用scp命令將這些配置傳輸到其他機器上。
輸入:
hbase環境傳輸

scp -r /opt/hbaseroot@slave1:/opt
scp -r /opt/hbase root@slave2:/opt

傳輸之後,便在主節點啟動集群。

4,啟動hbase

在成功啟動Hadoop、zookeeper之後
切換到HBase目錄下

cd /opt/hbase/hbase1.2/bin

輸入:

start-hbase.sh

啟動成功之後,可以使用jps命令在各個機器上查看是否成功
可以在瀏覽器輸入: ip+16010 埠查看
這裡寫圖片描述

若成功顯示該界面,則啟動成功。

七、Hive的環境安裝配置

因為hive安裝使用不需要集群,只需在一臺機器上安裝使用就可以了,之前在我的
大數據學習系列之四 ----- Hadoop+Hive環境搭建圖文詳解(單機) http://www.panchengming.com/2017/12/16/pancm61/ 裡面已經講解的很詳細,所以本文就不在描述了。

八、其他

環境搭建參考: http://blog.csdn.net/pucao_cug/article/details/72773564
環境配置參考的官方文檔。

到此,本教程就結束了,謝謝閱讀!

版權聲明:
作者:虛無境
博客園出處:http://www.cnblogs.com/xuwujing
CSDN出處:http://blog.csdn.net/qazwsxpcm    
個人博客出處:http://www.panchengming.com
原創不易,轉載請標明出處,謝謝!


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

-Advertisement-
Play Games
更多相關文章
  • 一.ROS架構 ROS架構上分為三個層級: 計算圖級(Computation Graph level):體現進程與系統的關係,描述系統怎麼運行。 文件系統級(Filesystem level):組織構建程式文件。 社區級(Community level):開源社區,共用知識、演算法和代碼等。 1.1 ...
  • 參考地址:https://help.aliyun.com/knowledge_detail/41817.html PS:目前恢復只支持 Linux 下進行。Linux下恢復的數據文件,無論 Windows、Linux 操作系統,MySQL 都可以正常使用 1、概述和軟體說明 1.1 概述 RDS M ...
  • VMware相關服務 啟動腳本: VMwareStart.bat 關閉相關服務腳本: VMwareStop.bat ...
  • 一、下載安裝 Notepad++ 1、下載 Notepad++ : https://pan.baidu.com/s/1o7VrS4y 密碼 : ck8a 2、安裝 Notepad++ 2.1、勾選所有 2.2勾選所有 二、下載安裝 NppFTP 插件 1、下載 NppFTP github 下載 : ...
  • pstack命令可顯示每個進程的棧跟蹤,pstack $pid即可,pstack命令須由$pid進程的屬主或者root運行。 這次出現cpu占比100%的情況,但看memory占比,並無異常,懷疑是某個地方死迴圈了。經同事提醒,用pstack命令查看相關進程,通過運行多次pstack,發現代碼棧總是 ...
  • 關於HSQLDB資料庫的創建,本文不做過多描述,可以在百度上搜索一下,有許多。 對於訪問已存在的庫文件,網上找了半天,沒有整理的很清楚的參考資料,現將自己的操作過程整理如下,以供參考。 1、先下載一個HSQLDB客戶端,如HsqlManager,解壓在某一個路徑下,如下圖所示: 2、將hsqldb. ...
  • 參考 http://hbase.apache.org/book.html#_architecture Architecture 65. Overview 65.1. NoSQL? HBase是一種"NoSQL"資料庫。“NoSQL”一般指的是非關係型資料庫,我們知道,關係型資料庫支持SQL,也就是說 ...
  • 🎉新年賀詞🎉 2017年即將過去,新年的鐘聲即將敲響。在這辭舊迎新的美好時刻,我向全國各族人民,向香港特別行政區同胞、澳門特別行政區同胞,向臺灣同胞和海外僑胞,向工作在一線的運維工程師們,向為開源事業做出貢獻的朋友們,向世界各國各地區的朋友們,致以新年的祝福! 今天是2017的最後一天,在這樣一 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...