由于三台集群的IP为静态IP,192.168.23.***。假如更换windows电脑的时候,本机ip已经改变,ping不同的情况下,virtualBox上不能再以桥接模式,要改为仅主机,这样的话虚拟机就连不上网,但是本机可以ping通,利用ftp来上传所需文件。
在管理—>主机网络管理器。
若要虚拟机联网,则要把虚拟机上的静态ip改成dhcp,再注释掉你的ip设置
再将网络改为桥接模式
centos查看ip
ip addr
ping通baidu
ping www.baidu.com
成功!!
kafka
1.0的话将目录改成1.0的目录即可
阅读顺序,理解kafka以及作用
1、http://orchome.com/3
2、http://orchome.com/5
下载以及配置文件和使用
https://blog.csdn.net/Poppy_Evan/article/details/79415460
或者
https://www.cnblogs.com/toov5/p/10293917.html
最终如下,其他配置不变 我的是kafka1.0
Master 主机
broker.id=0
host.name=Master
listeners=PLAINTEXT://192.168.23.200:9092
delete.topic.enable=true
log.dirs=/user/kafka-1.0/kafka-logs #事先创建好
Slave1主机
broker.id=1
host.name=Slave1
listeners=PLAINTEXT://192.168.23.201:9092
delete.topic.enable=true
log.dirs=/user/kafka-1.0/kafka-logs #事先创建好
Slave2主机
broker.id=2
host.name=Slave2
listeners=PLAINTEXT://192.168.23.202:9092
delete.topic.enable=true
log.dirs=/user/kafka-1.0/kafka-logs #事先创建好
先启动zookeeper
三台集群一shell启动
vi zookeeper_start.sh
-----------------------------------------------------
#!/bin/bash
ZOOKEEPER_HOME=/user/zookeeper-3.4.5 #你自己的安装目录
if [ $ZOOKEEPER_HOME != "" ]; then
ZOOCFG=$ZOOKEEPER_HOME/conf/zoo.cfg
SLAVES=$(cat "$ZOOCFG" | sed '/^server/!d;s/^.*=//;s/:.*$//g;/^$/d')
for s in $SLAVES
do
echo "INFO:starting zookeeper on ${s}"
ssh $s "source /etc/profile;$ZOOKEEPER_HOME/bin/zkServer.sh start" #这里为start
if [ $? != 0 ];
then
echo "Can not starting zookeeper server on host $s}"
exit 1
fi
done
fi
三台集群一shell关闭
vi zookeeper_stop.sh
------------------------------------------------------------
#!/bin/bash
ZOOKEEPER_HOME=/user/zookeeper-3.4.5
if [ $ZOOKEEPER_HOME != "" ]; then
ZOOCFG=$ZOOKEEPER_HOME/conf/zoo.cfg
SLAVES=$(cat "$ZOOCFG" | sed '/^server/!d;s/^.*=//;s/:.*$//g;/^$/d')
for s in $SLAVES
do
echo "INFO:starting zookeeper on ${s}"
ssh $s "source /etc/profile;$ZOOKEEPER_HOME/bin/zkServer.sh stop" #这里为stop
if [ $? != 0 ];
then
echo "Can not starting zookeeper server on host $s}"
exit 1
fi
done
fi
运行 sh zookeeper_start.sh
启动,用户组都为hadoop
bin/kafka-server-start.sh config/server.properties &
三台集群一shell启动
在/user/kafka_2.11-2.2.0/bin/下创建slave文件,输入集群的hostname
vi kafka_start.sh
-----------------------------------------------------
#!/bin/bash
cat /user/kafka_2.11-2.2.0/bin/slave | while read line
do
{
echo $line
ssh $line "source /etc/profile; /user/kafka_2.11-2.2.0/bin/kafka-server-start.sh /user/kafka_2.11-2.2.0/config/server.properties >/dev/null 2>&1 &"
}&
wait
done
三台集群一shell关闭
vi kafka_stop.sh
---------------------------------------------------------
#!/bin/bash
cat /user/kafka_2.11-2.2.0/bin/slave | while read line
do
{
echo $line
ssh $line "source /etc/profile; jps |grep Kafka |cut -c 1-4 |xargs kill -s 9 "
}&
wait
done
使用
kafka中有一个被称为优先副本(preferred replicas)的概念。如果一个分区有3个副本,且这3个副本的优先级别分别为0,1,2,根据优先副本的概念,0会作为leader 。当0节点的broker挂掉时,会启动1这个节点broker当做leader。当0节点的broker再次启动后,会自动恢复为此partition的leader。不会导致负载不均衡和资源浪费,这就是leader的均衡机制。
在配置文件conf/ server.properties中配置开启(默认就是开启):auto.leader.rebalance.enable true
- 创建一个名为“test”的Topic,只有一个分区和一个备份,在分区 注意,创建主题时 主题名不建议使用".“和”_"字符。
bin/kafka-topics.sh --create --zookeeper Master:2181 --replication-factor 1 --partitions 1 --topic test
- 查看已创建的topic信息,一开始就有一个帮你创建好的了,topic2:
bin/kafka-topics.sh --list --zookeeper Master:2181
3. 发送消息,这里的不能用localhost,在Master主机上
bin/kafka-console-producer.sh --broker-list Master:9092 --topic test
4. 消费消息,可在Slave1和Slave2上
bin/kafka-console-consumer.sh --bootstrap-server Slave1:9092 --topic test --from-beginning
- xshell可能会出现按退格键出现^H ^H ^H ^H的问题
解决办法:
文件→属性→终端→键盘,
把delete和backspace序列改为 ASCII 127即可。
- 同是一个集群。互通的 ,只是消息存放的地方有别而已。
继续创建topic,存放到三个broker:
bin/kafka-topics.sh --create --zookeeper Master:2181 --replication-factor 1 --partitions 3 --topic my-test-topic
- 查看主题?运行命令“describe topics”,看所有主题
bin/kafka-topics.sh --describe --zookeeper Master:2181
- 查看物理路径
ll kafka-logs/ | grep my-test-topic
出现Bug,之前的是2.2出现的bug,假如1.0出现了也一样
Exiting Kafka. (kafka.server.KafkaServerStartable)
解决办法
vi /user/kafka_2.11-2.2.0/config/server.properties
将对应的log.dir 的目录创建好,集群中的每个log.dir 目录改成不同的目录
Master
Slave1
Salve2