作者:櫰木
環(huán)境準備
本次使用到的二進制軟件包目錄為:系統(tǒng)初始化前提是操作系統(tǒng)已完成安裝、各個主機之間網(wǎng)絡互通,系統(tǒng)常用命令已安裝,本默認這些前提條件已具備,不在闡述。
1 主機環(huán)境初始化
安裝centos系統(tǒng)完成后需要對主機進行初始化配置和驗證工作,在所有主機上(hd1.dtstack.com-hd3)均要進行操作,并按照對應hosts修改主機名:
(主機名必須為xxx.xxx.com 匹配freeipa安裝需求)
(1) 主機配置映射(操作權限r(nóng)oot)
$ cat>>/etc/hosts <<EOF
172.16.104.226 hd1.dtstack.com
172.16.106.252 hd2.dtstack.com
172.16.107.127 hd3.dtstack.com
172.16.106.165 hd.dtstack.com
EOF
(2)關閉防火墻&selinux(操作權限r(nóng)oot)
$ systemctl stop firewalld
$ systemctl disable firewalld
$ setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
(3) 創(chuàng)建集群系統(tǒng)用戶(操作權限r(nóng)oot)
系統(tǒng)用戶 | 屬組 | 用途 |
---|---|---|
hadoop | hadoop | hadoop集群用戶 |
mysql | hadoop | mysql數(shù)據(jù)庫用戶 |
hdfs | hadoop | hadoop集群用戶 |
trino | hadoop | presto集群用戶 |
prometheus | prometheus | 監(jiān)控平臺用戶 |
grafana | grafana | 監(jiān)控平臺用戶 |
zookeeper | zookeeper | zk集群用戶 |
hive | hadoop | hive組件用戶 |
yarn | hadoop | hadoop集群用戶 |
創(chuàng)建hadoop集群所需用的的用戶和用戶組
創(chuàng)建示例如下:
[root@hd1.dtstack.com ~]$ remote_op.sh "groupadd hadoo p"
[root@hd1.dtstack.com ~]$ remote_op.sh "useradd hive -G hadoop"
[root@hd1.dtstack.com ~]$ remote_op.sh "echo hive | passwd --stdin hive"
(4)安裝java環(huán)境(操作權限r(nóng)oot)
本次中java軟件包安裝目錄在/root/bigdata
$ cd /opt/bigdata
$ tar -zvxf zulu11.60.19-ca-jdk11.0.17-linux_x64.tar.gz -C /opt
tar -zxvf jdk-8u281-linux-x64.tar.gz
ln -s /opt/jdk1.8.0_281 /opt/java
2 配置ssh互信
ssh互信配置(操作權限hadoop)
在集群系統(tǒng) hd1.dtstack.com-hd3.dtstack.com共3臺設備上執(zhí)行如下命令:
$ cd $HOME #在hadoop當前目錄下創(chuàng)建ssh互信
$ ssh-keygen -t rsa #一路回車,不需要輸入任何信息
將hd1.dtstack.com公鑰添加到認證文件中,在hd1.dtstack.com主機root用戶當前家目錄下執(zhí)行如下命令:
生產(chǎn)各自的keytab文件
ssh-keygen -t rsa
用ssh-copy-id 把公鑰復制到遠程主機上,命令也要(以下命令ip需要填寫所有節(jié)點ip并在每個節(jié)點均執(zhí)行)
ssh-copy-id -i .ssh/id_rsa.pub root@xxx.xxx.xxx
以上命令在三個階段均要執(zhí)行
ssh互信驗證
hd1.dtstack.com-hd3.dtstack.com主機上互相執(zhí)行ssh登錄命令驗證,如下:
[hadoop@hd1.dtstack.com ~]$ ssh hd2.dtstack.com
驗證截圖如下:
ssh命令執(zhí)行過去,無報錯表示ssh互信配置成功。
root和hdfs以及yarn權限ssh互信
同理操作,配置主機root權限和hdfs以及yarn權限全主機互信。
3 統(tǒng)一環(huán)境變量配置
環(huán)境變量分兩個文件:/etc/profile和各用戶下.bashrc(bash),建議/etc/profile根據(jù)規(guī)劃好的目錄結構,統(tǒng)一設置環(huán)境變量。本次設置將hadoop,zookeeper,hive,java環(huán)境變量整體設置完成
[root@hd1.dtstack.com ~]# cat >>/etc/profile.d/bigdata.sh<<EOF
#!/bin/bash
export HADOOP_HOME=/opt/hadoop
export HBASE_HOME=/opt/hbase
export SPARK_HOME=/opt/spark
export SPARK_CONF_DIR=/opt/spark/conf
export HBASE_CONF_DIR=/opt/hbase/conf
export HBASE_LIB=/opt/hbase/lib
export TEZ_HOME=/opt/tez
export TEZ_CONF_DIR=/opt/tez/conf
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/*:$TEZ_HOME/lib/*
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
export HIVE_HOME=/opt/hive
export HIVE_CONF_DIR=/opt/hive/conf
export PATH=$PATH:$HIVE_HOME/bin
export ZK_HOME=/opt/zookeeper
#export YARN_CONF_DIR=/opt/hadoop/etc/hadoop
export JAVA_HOME="/opt/java"
export PATH=$HADOOP_HOME/bin:$JAVA_HOME/bin:$ZK_HOME/bin:/opt/mysql/bin:$PATH
export HADOOP_CLASSPATH=`hadoop classpath`
EOF
4 系統(tǒng)調優(yōu)
hd1.dtstack.com-hd3.dtstack.com所有機器上都要執(zhí)行,且以root權限執(zhí)行
調整swap、內存分配、網(wǎng)絡連接參數(shù)
$ cat>>/etc/sysctl.conf <<EOF
#避免使用swap
vm.swappiness = 1
#修改內存分配策略
vm.overcommit_memory=2
vm.overcommit_ratio=90
#網(wǎng)絡連接上限
net.core.somaxcomm=32768
EOF
增大同時打開文件描述符
$ cat>>/etc/security/limits.conf <<EOF
hadoop soft nofile 32768
hadoop hard nofile 65536
hadoop soft nproc 32768
hadoop hard nproc 65536
EOF
關閉THP
$ cat>>/etc/rc.local <<EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
5 NTP服務配置
安裝
在hd1.dtstack.com-hd3.dtstack.com各個主機上root權限下執(zhí)行:
$ yum install -y ntp
配置時間同步服務端
在hd1.dtstack.com主機root權限下執(zhí)行
ntp配置
$ cat /etc/ntp.conf|grep -v '#'|grep -v ^$
driftfile /var/lib/ntp/drift #存放記錄時間誤差
restrict default nomodify notrap nopeer noquery #默認拒絕所有來源訪問
restrict 127.0.0.1 #開放本機的任何訪問
restrict ::1
restrict 172.16.104.0 mask 255.255.255.0 nomodify notrap #允許104網(wǎng)段機器參與ntp同步
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
server 172.16.104.226 #時間同步服務器
server 127.127.1.0 #當上面時間不可用時,以本地時間作為時間服務
fudge 127.0.0.1 stratum 10
disable monitor
說明:
- server 172.16.104.226表示內網(wǎng)時間同步服務器,其余機器都從這臺同步時間
- server 172.16.104.226可以替換成其他時間服務中心IP(看生產(chǎn)環(huán)境配置)
ntp服務啟動和驗證
啟動
service ntpd start
驗證
service ntpd status
Active狀態(tài)為running表示服務啟動成功
配置時間同步客戶端
在hd2.dtstack.com主機root權限下執(zhí)行
配置時間同步服務源
[root@hd2.dtstack.com ~]# cp /etc/ntp.conf /etc/ntp.conf.bak
[root@hd2.dtstack.com ~]# cat >/etc/ntp.conf<<EOF
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict ::1
server 172.16.104.226
restrict 172.16.104.226 nomodify notrap noquery
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
EOF
手動同步時間(建議第一次手動同步)
$ ntpdate -u 172.16.104.226
拉起同步服務
service ntpd start
檢查方法同上
同步到其他節(jié)點(hd3.dtstack.com、hd2.dtstack.com)
[root@hd2.dtstack.com ~]# scp /etc/ntp.conf root@hd2.dtstack.com:/etc/
啟動其余主機(hd3.dtstack.com)上ntpd服務
[root@hd2.dtstack.com ~]# ssh hd3.dtstack.com 'service ntpd start'
[root@hd2.dtstack.com ~]# ssh hd2.dtstack.com'service ntpd start'
檢查其余機器(hd3.dtstack.com)上ntpd服務啟動狀態(tài)
[root@hd2.dtstack.com ~]# ssh hd3.dtstack.com 'service ntpd status'
[root@hd2.dtstack.com ~]#ssh hd2.dtstack.com'service ntpd start''
檢查連接情況
[root@hd2.dtstack.com ~]# ntpq -p
6 自動化同步腳本
配置文件同步腳本【1】remote_scp.sh
[root@hd1.dtstack.com software]# cat /root/bin/remote_scp.sh
#!/bin/bash
for i in hd{2..3}
do
#echo $i
if [ -d $1 ]
then
echo -e '\033[33m 當前主機為'$i',傳輸文件為'$1'\033[0m'
scp -rp $1 $i:$2
else
#echo "當前節(jié)點為$,傳輸文件為$1"
echo -e '\033[33m 當前主機為'$i',傳輸文件為'$1'\033[0m'
scp $1 $i:$2
fi
done
status=`echo $?`
if [ $status -eq 0 ]
then
echo -e "$1文件傳輸完成"
else
echo -e "請檢查傳入?yún)?shù)"
fi
使用案例:
格式:remote_scp.sh 源目錄 目標目錄
說明:將test.log 分發(fā)到hd1.dtstack.com-hd3.dtstack.com/root目錄下
配置文件同步腳本【2】remote_op.sh
[root@hd1.dtstack.com ~]# cat /root/bin/remote_op.sh
#!/bin/bash
for i in hd2.dtstack.com hd3.dtstack.com
do
echo -e '\033[33m 當前主機為'$i'\033[0m'
ssh $i $1
done
使用案例:
格式:remote_op.sh “執(zhí)行命令內容”
7 軟件包倉庫
建議在安裝hadoop集群前,提前將所需安裝的二進制軟件包,統(tǒng)一存放軟件包倉庫中。
本次使用的軟件包都在主機hd1.dtstack.com上/root/bigdata下
8 keytab生成腳本
在所有節(jié)點均需執(zhí)行此操作
/root/bigdata
vi getkeytabs.sh文章來源:http://www.zghlxwxcb.cn/news/detail-779912.html
set -x
CMKEYTAB="/data/kerberos/apache-user.keytab"
CMUSER="apache-user"
REALM="DTSTACK.COM"
IPASERVER="hd.dtstack.com"
hosts=`hostname`
DEST="$1"
FULLPRINC="$2"/${hosts}@${REALM}
USER=$2
# Passwd based kinit
#echo PASSWORD | kinit $CMUSER@$REALM
# Or per keytab (keytab needs to be generated before)
kinit -k -t $CMKEYTAB $CMUSER@$REALM
PRINC=$( echo $FULLPRINC | sed "s/\@$( echo $REALM )//" )
echo $PRINC
echo Retrieving keytab for $FULLPRINC for $DEST
echo Checking for existing service principle
if ipa service-find $FULLPRINC; then
echo Service principle found
else
echo Service principle not created, creating
ipa service-add $FULLPRINC --pac-type=NONE
fi
echo Ensuring service allows
ipa service-allow-create-keytab --users=$CMUSER $FULLPRINC
ipa service-allow-retrieve-keytab --users=$CMUSER $FULLPRINC
if ipa service-show $FULLPRINC | grep 'Keytab' | grep 'False'; then
echo Creating keytab for $FULLPRINC for $DEST
ipa-getkeytab -s $IPASERVER -p $PRINC -k $DEST -e rc4-hmac,aes256-cts,aes128-cts
else
echo Retrieving keytab for $FULLPRINC for $DEST
ipa-getkeytab -r -s $IPASERVER -p $PRINC -k $DEST
fi
chmod 644 $DEST
chown $USER:$USER $DEST
kdestroy
exit 0;
備注
上文中$ 表示系統(tǒng)命令解釋器開始符號,且表示所有機器都要執(zhí)行,如出現(xiàn)[hadoop@hd1.dtstack.com ~]$表示,只在hd1.dtstack.com主機hadoop用戶下執(zhí)行文章來源地址http://www.zghlxwxcb.cn/news/detail-779912.html
到了這里,關于開源大數(shù)據(jù)集群部署(二)集群基礎環(huán)境實施準備的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!