日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

开源大数据集群部署(二)集群基础环境实施准备

發布時間:2024/1/11 windows 37 coder
生活随笔 收集整理的這篇文章主要介紹了 开源大数据集群部署(二)集群基础环境实施准备 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:櫰木

環境準備

本次使用到的二進制軟件包目錄為:系統初始化前提是操作系統已完成安裝、各個主機之間網絡互通,系統常用命令已安裝,本默認這些前提條件已具備,不在闡述。

1 主機環境初始化

安裝centos系統完成后需要對主機進行初始化配置和驗證工作,在所有主機上(hd1.dtstack.com-hd3)均要進行操作,并按照對應hosts修改主機名:
(主機名必須為xxx.xxx.com 匹配freeipa安裝需求)
(1) 主機配置映射(操作權限root)

$ 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(操作權限root)

$ systemctl stop firewalld
$ systemctl disable firewalld
$ setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

(3) 創建集群系統用戶(操作權限root)

系統用戶 屬組 用途
hadoop hadoop hadoop集群用戶
mysql hadoop mysql數據庫用戶
hdfs hadoop hadoop集群用戶
trino hadoop presto集群用戶
prometheus prometheus 監控平臺用戶
grafana grafana 監控平臺用戶
zookeeper zookeeper zk集群用戶
hive hadoop hive組件用戶
yarn hadoop hadoop集群用戶

創建hadoop集群所需用的的用戶和用戶組
創建示例如下:

[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環境(操作權限root)
本次中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)
在集群系統 hd1.dtstack.com-hd3.dtstack.com共3臺設備上執行如下命令:

$ cd $HOME  #在hadoop當前目錄下創建ssh互信
$ ssh-keygen -t rsa   #一路回車,不需要輸入任何信息

將hd1.dtstack.com公鑰添加到認證文件中,在hd1.dtstack.com主機root用戶當前家目錄下執行如下命令:
生產各自的keytab文件

ssh-keygen -t rsa

用ssh-copy-id 把公鑰復制到遠程主機上,命令也要(以下命令ip需要填寫所有節點ip并在每個節點均執行)

ssh-copy-id -i  .ssh/id_rsa.pub root@xxx.xxx.xxx

以上命令在三個階段均要執行

ssh互信驗證
hd1.dtstack.com-hd3.dtstack.com主機上互相執行ssh登錄命令驗證,如下:

[hadoop@hd1.dtstack.com ~]$ ssh hd2.dtstack.com

驗證截圖如下:

ssh命令執行過去,無報錯表示ssh互信配置成功。
root和hdfs以及yarn權限ssh互信
同理操作,配置主機root權限和hdfs以及yarn權限全主機互信。

3 統一環境變量配置

環境變量分兩個文件:/etc/profile和各用戶下.bashrc(bash),建議/etc/profile根據規劃好的目錄結構,統一設置環境變量。本次設置將hadoop,zookeeper,hive,java環境變量整體設置完成

[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 系統調優

hd1.dtstack.com-hd3.dtstack.com所有機器上都要執行,且以root權限執行
調整swap、內存分配、網絡連接參數

$ cat>>/etc/sysctl.conf <<EOF
#避免使用swap
vm.swappiness = 1
#修改內存分配策略
vm.overcommit_memory=2
vm.overcommit_ratio=90
#網絡連接上限
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權限下執行:

$ yum install -y ntp

配置時間同步服務端
在hd1.dtstack.com主機root權限下執行

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網段機器參與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表示內網時間同步服務器,其余機器都從這臺同步時間
  • server 172.16.104.226可以替換成其他時間服務中心IP(看生產環境配置)

ntp服務啟動和驗證
啟動

service ntpd start

驗證

service ntpd status


Active狀態為running表示服務啟動成功

配置時間同步客戶端
在hd2.dtstack.com主機root權限下執行

配置時間同步服務源

[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

檢查方法同上
同步到其他節點(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服務啟動狀態

[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 "當前節點為$,傳輸文件為$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 "請檢查傳入參數"
fi

使用案例:
格式:remote_scp.sh 源目錄 目標目錄

說明:將test.log 分發到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 “執行命令內容”

7 軟件包倉庫

建議在安裝hadoop集群前,提前將所需安裝的二進制軟件包,統一存放軟件包倉庫中。
本次使用的軟件包都在主機hd1.dtstack.com上/root/bigdata下

8 keytab生成腳本

在所有節點均需執行此操作
/root/bigdata
vi getkeytabs.sh

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;

備注

上文中$ 表示系統命令解釋器開始符號,且表示所有機器都要執行,如出現[hadoop@hd1.dtstack.com ~]$表示,只在hd1.dtstack.com主機hadoop用戶下執行

總結

以上是生活随笔為你收集整理的开源大数据集群部署(二)集群基础环境实施准备的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。