关于 E-MapReduce 上引导操作的概念和使用方式请参考。
在 E-MapReduce 中编写安装 Kafka 组件脚本主要有以下几步:
以下是安装 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 个引导操作步骤。集群创建好后,通过集群详情页的引导 / 软件配置: 无异常来确定引导操作执行成功
来源: