文章目錄
軟件版本
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 安裝完成。