1. 程式人生 > >【大數據】關於Kafka的進一步理解

【大數據】關於Kafka的進一步理解

prope per ash init code star 一個 start d+

前置:

文件host

192.168.11.13
192.168.11.14
192.168.11.30

腳本init_kafka.sh

#!/bin/bash
source /etc/profile
if [ `whoami` != "root" ];then
    echo " only root can run me"
    exit 1
fi 
basepath=$(cd `dirname $0`; pwd)
cd $basepath

for host in `cat $basepath/host`;
do 
    sshp $host "useradd kafka"
    sshp $host "chown -R kafka:kafka /opt/kafka_2.11-0.8.2.2"
    sshp $host "mkdir  /data/kafka-log"
    sshp $host "mkdir  /data1/kafka-log"
    
    sshp $host "chown -R kafka:kafka /data/kafka-log"
    sshp $host "chown -R kafka:kafka /data1/kafka-log"
    echo "$host done"
done 
echo "done"

獲取新增服務器host文件,叠代循環每個host服務器,分別新增一個kafka用戶,然後將該服務器上的kafka安裝文件夾修改所屬權限為kafka用戶,然後創建kafka-log的日誌文件,分別放在/data和/data1下,然後修改kafka-log日誌文件的所屬權限為kafka用戶。

總結起來就幹了2個事:在新增的服務器節點上新增kafka用戶並將kafka安裝文件夾和日誌文件夾的權限改為kafka用戶。

腳本install_kafka.sh

#!/bin/bash
source /etc/profile
if [ `whoami` != "root" ];then
    echo " only root can run me"
    exit 1
fi 
basepath=$(cd `dirname $0`; pwd)
cd $basepath
kafka_tar=/opt/kafka_2.11-0.8.2.2.tgz
kafka_conf_dir=/opt/kafka_2.11-0.8.2.2/config
brokerid=101
for host in `cat $basepath/host`;
do
    echo $brokerid
    scpp $kafka_tar $host:/opt
    sshp $host "cd /opt;tar -zxf kafka_2.11-0.8.2.2.tgz"
    # 發送配置文件
    scpp $kafka_conf_dir/* $host:$kafka_conf_dir/
    # 修改broker.id
    sshp $host "sed -i ‘s/broker.id=87/broker.id=$brokerid/g‘ /opt/kafka_2.11-0.8.2.2/config/server.properties"
    # 修改 hostname
    sshp $host "sed -i ‘s/host.name=192.168.11.87/host.name=$host/g‘ /opt/kafka_2.11-0.8.2.2/config/server.properties"
    brokerid=$(($brokerid+1))
    echo "$host done"
done
echo ‘done‘

將該服務器下的kafka安裝文件tar包復制到新增服務器的/opt下並解壓,將kafka配置文件復制到服務器的配置文件夾下,修改101為host裏面第一個ip的kafka的brokerid,並隨著循環host而將brokerid數值+1,修改host的第一個ip為hostname,並隨著循環host而將其他host的ip改為hostname。

總結起來就幹了3個事:在新增的服務器節點上新增配置文件,並修改其中的brokerid和hostname為指定值

腳本remote_start_kafka.sh

#!/bin/bash
source /etc/profile
basepath=$(cd `dirname $0`; pwd)
cd $basepath

host=$1

scpp start_kafka.sh $host:/tmp/
scpp start.sh $host:/tmp/
sshp $host "sh /tmp/start.sh"

將start_kafka.sh和start.sh這個2個腳本復制到新增服務器的臨時文件夾裏,然後執行新增服務器上的start.sh腳本

總結起來就幹了2個事:復制執行腳本到新增服務器上並執行其中的start.sh腳本

腳本start_all.sh

#!/bin/bash

source /etc/profile
basepath=$(cd `dirname $0`; pwd)
cd $basepath
for host in `cat $basepath/host`
do
    echo $host
    sh remote_start_kafka.sh $host
    echo "$host done"
done

循環執行,在host新增服務器裏執行腳本remote_start_kafka.sh,並傳遞循環host列表的ip

總結起來就1個事:執行start_all.sh,啟動全部的新增服務器的kafka服務

1.JMX的作用

【大數據】關於Kafka的進一步理解