本文共 2408 字,大约阅读时间需要 8 分钟。
按照搭建完hadoop集群后,发现hadoop完全分布式集群自带了HDFS,MapReduce,Yarn等基本的服务,一些其他的服务组件需要自己重新安装,比如Hive,Hbase,sqoop,zookeeper,spark等,这些组件集群模式都在前面相关博文中有介绍,今天我们需要安装另外一个组件,它就是分布式消息系统Kafka。
Kafka是由LinkedIn开发的一个分布式基于发布/订阅的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。
Kafka是什么?举个例子,生产者消费者,生产者生产鸡蛋,消费者消费鸡蛋,生产者生产一个鸡蛋,消费者就消费一个鸡蛋,假设消费者消费鸡蛋的时候噎住了(系统宕机了),生产者还在生产鸡蛋,那新生产的鸡蛋就丢失了。再比如生产者很强劲(大交易量的情况),生产者1秒钟生产100个鸡蛋,消费者1秒钟只能吃50个鸡蛋,那要不了一会,消费者就吃不消了(消息堵塞,最终导致系统超时),消费者拒绝再吃了,”鸡蛋“又丢失了,这个时候我们放个篮子在它们中间,生产出来的鸡蛋都放到篮子里,消费者去篮子里拿鸡蛋,这样鸡蛋就不会丢失了,都在篮子里,而这个篮子就是”kafka“。鸡蛋其实就是“数据流”,系统之间的交互都是通过“数据流”来传输的(就是tcp、http什么的),也称为报文,也叫“消息”。消息队列满了,其实就是篮子满了,”鸡蛋“放不下了,那赶紧多放几个篮子,其实就是kafka的扩容。 就类似微博,有人发布消息,有人消费消息,这就是一个Kafka的场景。
请
,下载完毕后,上传到主节点的/opt目录下
# cd /opt # tar -xzvf kafka_2.11-0.10.2.1.tgz # mv kafka_2.11-0.10.2.1 kafka2.11 # chmod 777 -R /opt/kafka2.11 #为kafka目录进行授权
# vim /etc/profileexport KAFKA_HOME=/opt/kafka2.11export PATH=$PATH:$KAFKA_HOME/bin #在最后添加这两行Kafka的配置 # source /etc/profile #使配置生效
# cd /opt/kafka2.11/config # vim server.properties修改如下:broker.id=1 #每台服务器的broker.id都不能相同message.max.byte=5242880 #在log.retention.hours=168属性下加上如下三行配置default.replication.factor=3replica.fetch.max.bytes=5242880zookeeper.connect=192.168.210.70:2181,192.168.210.71:2181,192.168.210.72:2181 #修改zookeeper引用外部的zookeeper
# cd /opt # scp -r kafka2.11 root@hadoop1:/opt/ # scp -r kafka2.11 root@hadoop2:/opt/注意:修改环境变量,修改配置文件的broker.id
#从后台启动Kafka集群(3台都需要启动) # cd /opt/kafka2.11/bin #进入到kafka的bin目录 # ./kafka-server-start.sh -daemon ../config/server.properties
主节点:
两个从节点: