如何在E-MapReduce上使用引導操作安裝kafka元件

魚跟貓發表於2016-12-21

1. 什麼是引導操作

關於E-MapReduce上引導操作的概念和使用方式請參考文件

2. 編寫安裝Kafka元件的指令碼

在E-MapReduce中編寫安裝Kafka元件指令碼主要有以下幾步:

  1. 下載Kafka-0.10.0.0安裝包
  2. 修改Kafka配置檔案
  3. 建立Kafka Log目錄
  4. 啟動Kafka daemon程式

以下是安裝Kafka元件的指令碼簡單示例:

#!/bin/bash
isMaster=`hostname --fqdn | grep emr-header`

if [ -n "$isMaster" ] ;then
    echo "Master Node does not need to start kafka!"
else
    echo "=> Download kafka package"
    wget http://emr-agent-pack.oss-cn-hangzhou-internal.aliyuncs.com/bootstrap/kafka/0-10-0-0/kafka_2.10-0.10.0.0.tgz
    tar xvf ./kafka_2.10-0.10.0.0.tgz -C /opt/apps/

    echo "=> Modify Kafka Configuration"
    echo "===> Replace broker id"
    WORKER_ID=`hostname | cut -d `-` -f 3 | cut -d `.` -f 1`
    sed -i "s/broker_id/$WORKER_ID/g" /opt/apps/kafka_2.10-0.10.0.0/config/server.properties
        
    echo "===> Replace zookeeper address"
    ZK_ADDR="emr-header-1:2181,emr-header-2:2181,emr-header-3:2181/kafka-0.10.0.0"
    sed -i "s/zookeeper_address/$ZK_ADDR/g" /opt/apps/kafka_2.10-0.10.0.0/config/server.properties

    echo "===> Create kafka log dir"
    mkdir -p "/mnt/disk1/log/kafka-0.10.0.0"
    mkdir -p "/mnt/disk2/log/kafka-0.10.0.0"
    mkdir -p "/mnt/disk3/log/kafka-0.10.0.0"
    mkdir -p "/mnt/disk4/log/kafka-0.10.0.0"

    echo "===> Replace log dirs"
    KAFKA_LOG_DIR_STRING="/mnt/disk1/log/kafka-0.10.0.0,/mnt/disk2/log/kafka-0.10.0.0,/mnt/disk3/log/kafka-0.10.0.0,/mnt/disk4/log/kafka-0.10.0.0"
    sed -i "s/log_dirs/$KAFKA_LOG_DIR_STRING/g" /opt/apps/kafka_2.10-0.10.0.0/config/server.properties

    echo "===> Replace listeners"
    WORKER_HOSTNAME=`hostname`
    echo "listeners=PLAINTEXT://$WORKER_HOSTNAME:9092" >> /opt/apps/kafka_2.10-0.10.0.0/config/server.properties

    echo "===> Replace advertised listeners"
    echo "advertised.listeners=PLAINTEXT://$WORKER_HOSTNAME:9092" >> /opt/apps/kafka_2.10-0.10.0.0/config/server.properties

    echo "=> Start kafka daemon"
    /opt/apps/kafka_2.10-0.10.0.0/bin/kafka-server-start.sh -daemon /opt/apps/kafka_2.10-0.10.0.0/config/server.properties &
     
    echo "=> Clean" 
    rm -f ./kafka_2.10-0.10.0.0.tgz
fi 

上述指令碼可以直接使用,安裝的軟體也是由E-MapReduce提供的。當然你可以基於這個指令碼再修改,也可以使用自己的Kafka安裝包,安裝任意版本。

另外需要注意的是,這個指令碼中只修改了幾個必要的引數,自定義的調優引數需要你額外補充到指令碼中,或者直接在安裝包裡預先修改好。

上傳指令碼

將上面的指令碼上傳到你自己的OSS中,可以通過OSS控制檯上傳,這裡我們命名這個指令碼為install_kafka.sh(任意你喜歡的名字都可以)。

安裝

參照幫助文件,建立叢集時點選新增引導操作,分別選擇剛才上傳的install_kafka.sh指令碼,建立1個引導操作步驟。叢集建立好後,通過叢集詳情頁的引導/軟體配置:無異常來確定引導操作執行成功


相關文章