zookeeper安裝筆記

軟件版本
CentOS 7.2
jdk 1.8
zookeeper 3.4.12

查看CentOS版本

cat /etc/os-release
rpm -q centos-release

1 安裝JDK

1.1 檢測系統中的JDK版本

java -version

返回

openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)

1.2 檢測JDK安裝包

rpm -qa | grep java

返回

tzdata-java-2015g-1.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64

1.3 卸載openjdk

rpm -e --nodeps tzdata-java-2015g-1.el7.noarch
rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarch
rpm -e --nodeps javapackages-tools-3.4.1-11.el7.noarch
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64

或者

yum remove *openjdk*

1.4 安裝官方JDK

在官網下載頁找到相應包的下載鏈接,執行下載

wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz?AuthParam=1539075881_cfb11a2b6b70013104eaf21f8b293c27

解壓到安裝目錄

tar -zxvf /mnt/softs/jdk-8u181-linux-x64.tar.gz

配置JDK
新建文件 /etc/profile.d/java.sh,添加如下內容:

# jdk 1.8 configuration
export JAVA_HOME=/mnt/softwares/jdk1.8.0_181
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin

加載配置文件 /etc/profile.d/java.sh

source /etc/profile.d/java.sh

1.5 檢測 JDK 安裝

java -version

顯示返回

java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

至此,JDK安裝完成。

2 SSH免密登錄

查看服務器所有用戶

cat /etc/passwd

Linux系統中的每個用戶都在/etc/passwd文件中有一個對應的記錄行,它記錄了這個用戶的一些基本屬性,被冒號(:)分隔爲7個字段,其格式和具體含義如下:

用戶名:口令:用戶標識號:組標識號:註釋性描述:主目錄:登錄Shell

2.1 創建 hadoop 用戶

useradd hadoop

給 hadoop 用戶設置密碼爲 hadoop

passwd hadoop

2.2 創建 SSH 密鑰(切換到 hadoop 用戶)

如需修改主機名,請參照 修改Linux主機名

2.2.1 在第一臺服務器上執行

產生公鑰

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

回顯

Generating public/private rsa key pair.
Created directory '/home/hadoop/.ssh'.
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
36:37:f0:70:c0:57:07:7a:87:34:5e:b8:06:cb:53:75 hadoop@im-test-hadoop01
The key's randomart image is:
+--[ RSA 2048]----+
|       ..  .=++ E|
|        ..o+o= . |
|        ooo++..  |
|         =+.o.   |
|        S +o     |
|       . o .     |
|                 |
|                 |
|                 |
+-----------------+

拷貝公鑰到授權文件中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

修改 ~/.ssh 的權限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

修改 /etc/hosts 文件,添加集羣所有節點的映射

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

192.168.3.198   im-test-hadoop01 hadoop3198
192.168.3.199   im-test-hadoop02 hadoop3199
192.168.3.200   im-test-hadoop03 hadoop3200

2.2.2 在第二臺服務器上執行

[hadoop@im-test-hadoop02 ~]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Created directory '/home/hadoop/.ssh'.
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
f7:1e:18:43:5e:94:f5:8b:7c:62:e2:c6:f6:0f:c0:de hadoop@im-test-hadoop02
The key's randomart image is:
+--[ RSA 2048]----+
|            .o.  |
|           ..  . |
|          . .   .|
|         o... . .|
|        S =+ = o |
|         .+== o  |
|          .*oE   |
|          o....  |
|            .... |
+-----------------+

從第一臺機器上拷貝授權文件 ~/.ssh/authorized_keys 到本地

[hadoop@im-test-hadoop02 ~]$ scp im-test-hadoop01:~/.ssh/authorized_keys ~/.ssh/
The authenticity of host 'im-test-hadoop01 (192.168.3.198)' can't be established.
ECDSA key fingerprint is 8d:32:c9:14:b2:f8:b4:21:9a:ed:ec:2e:00:75:d0:6f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'im-test-hadoop01,192.168.3.198' (ECDSA) to the list of known hosts.
hadoop@im-test-hadoop01's password: 
authorized_keys

此時,第二臺機器 ~/.ssh/ 目錄下已經有了文件 authorized_keys 和 known_hosts

[hadoop@im-test-hadoop02 ~]$ ll .ssh/
總用量 16
-rw-------. 1 hadoop hadoop  405 10月 10 10:47 authorized_keys
-rw-------. 1 hadoop hadoop 1679 10月 10 10:43 id_rsa
-rw-r--r--. 1 hadoop hadoop  405 10月 10 10:43 id_rsa.pub
-rw-r--r--. 1 hadoop hadoop  192 10月 10 10:45 known_hosts

複製公鑰到授權文件 authorized_keys

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

2.2.3 同理在第三、四、… 臺機器上重複執行上面的操作

每在一臺新服務器上執行時,要先將上一臺服務器上的授權文件 authorized_keys 複製到本地,以確保最後一臺服務器的授權文件包含之前所有服務器的公鑰,在最後一臺服務器上執行完成後,將授權文件同步到之前所有服務器上。

scp ~/.ssh/authorized_keys im-test-hadoop01:~/.ssh/
scp ~/.ssh/authorized_keys im-test-hadoop02:~/.ssh/

2.3 在服務器間執行首次SSH登錄

在沒有進行SSH登錄的服務器間進行首次SSH登錄,之後就可以進行服務器間SSH免密登錄了。

3 安裝 zookeeper

3.1 下載解壓安裝包

從官方下載網址下載安裝包

wget -O /mnt/softs/zookeeper-3.4.12.tar.gz http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz

解壓安裝包

tar zxf zookeeper-3.4.12.tar.gz -C /mnt/softwares/

3.2 配置文件

複製 conf/zoo_sample.cfg 爲 conf/zoo.cfg

[root@im-test-hadoop01 zookeeper-3.4.12]# cp conf/zoo_sample.cfg conf/zoo.cfg

修改配置爲

tickTime=2000
dataDir=/mnt/data/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=im-test-hadoop01:2888:3888
server.2=im-test-hadoop02:2888:3888
server.3=im-test-hadoop03:2888:3888
配置 描述
tickTime 每個tick的時長,單位毫秒
dataDir snapshot 數據存放目錄
clientPort 監聽客戶端連接的端口
initLimit 允許follower連接和同步到leader時間數,計數單位 tick。如果zookeeper管理的數據比較多,根據需要調大該值
syncLimit 允許 followers 與 ZooKeeper 同步的時間數,單位 tick。如果 followers 落後於 leader 太多,將被捨棄
server.x 組成zookeeper集羣的服務器。當一個服務器啓動時,它通過在data目錄中查找文件myid來確定是自己哪個服務器,myid文件包含服務器編號,該編號匹配server.x中的x。由客戶端使用的組成zookeeper集羣的服務器列表必須和每個zookeeper服務器擁有的服務器列表相匹配。配置中有兩個端口號,第一個是 followers 連接 leader 時用,第二個是 leader選擇時用。

zookeeper集羣的每臺機器需要知道該集羣中所有其他的機器。我們通過多行這種形式 server.id=host:port:port 的配置來實現。我們通過爲每個 server 創建一個 myid 文件來設定 server id,myid 文件創建在服務的 data 目錄,該目錄由配置文件配置項 dataDir指定。

在目錄 /mnt/data/zookeeper 下創建文件 myid

touch /mnt/data/zookeeper/myid

文件內容只有一行內容標識 server id,除此之外不含任何其他內容。

1

或者

echo 1 > /mnt/data/zookeeper/myid

該 id 必須是 1 到 255 之間的值,且在整個集羣中唯一

3.3 在集羣其他機器上安裝 zookeeper

將 3.1 和 3.2 步驟中的 zookeeper 安裝成果複製到需要安裝的其他機器上,並修改相應的 myid 中的 server id。

第一步,創建目錄 /mnt/data, /mnt/softwares,並給hadoop用戶賦予這些目錄的寫權限。

mkdir -p /mnt/softwares /mnt/data/zookeeper
chmod -R 775 /mnt/data /mnt/softwares

第二步,複製已安裝的 zookeeper 文件

scp -r /mnt/softwares/zookeeper-3.4.12 im-test-hadoop02:/mnt/softwares/

或則複製安裝包,解壓之後再覆蓋配置文件

scp /mnt/softs/zookeeper-3.4.12.tar.gz im-test-hadoop03:/mnt/softwares/

解壓

[root@im-test-hadoop03 softwares]# tar zxf zookeeper-3.4.12.tar.gz

覆蓋配置文件

scp /mnt/softwares/zookeeper-3.4.12/conf/zoo.cfg im-test-hadoop03:/mnt/softwares/zookeeper-3.4.12/conf/

創建 myid 文件並寫入 server id


可能用到的操作命令

# 修改文件所屬用戶和用戶組
chown -R hadoop:adminuser /mnt/data
# 修改文件權限
chmod -R 775 /mnt/data /mnt/softwares
# 替換文件內容
echo 3 > /mnt/data/zookeeper/myid

4 啓動 zookeeper

4.1 配置 PATH 環境變量

將 zookeeper的bin目錄添加到 PATH 環境變量中
創建文件 /etc/profile.d/zookeeper.path.sh

export PATH=$PATH:/mnt/softwares/zookeeper-3.4.12/bin

使上面的文件生效

source /etc/profile.d/zookeeper.path.sh

4.2 啓動 zookeeper 服務

在集羣所有節點上執行自動命令

# 前臺啓動
zkServer.sh start-foreground
# 後臺啓動
zkServer.sh start

後天啓動日誌默認在 ./zookeeper.out.

查看啓動狀態

[root@im-test-hadoop01 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /mnt/softwares/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
[root@im-test-hadoop02 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /mnt/softwares/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
[root@im-test-hadoop03 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /mnt/softwares/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: leader

至此,zookeeper 安裝完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章