五、kafka_2.9.2-0.8.1集群搭建

半腔热情 提交于 2020-01-23 23:26:44

①为什么要搭建kafka集群

主要是在项目后期,要做一个实时计算的模块,实时数据都是从kafka集群里面读取,kafka就是一个分布式的消息队列,kafka搭建的底层基于zookeeper,zookeeper在四、zookeeper-3.4.5-cdh5.3.6集群搭建已经搭建好了。

②安装scala2.11.4

1、利用WinSCP软件将scala-2.11.4.tgz文件拷贝到虚拟机sparkproject1的/usr/local/路径。

2、对scala-2.11.4.tgz进行解压缩,在虚拟机sparkproject1的local目录下输入:tar -zxvf scala-2.11.4.tgz

     然后在local目录下输入:ll

     删除scala-2.11.4.tgz文件,在local目录下输入:rm -rf scala-2.11.4.tgz

     再输入:ll,发现只有scala-2.11.4文件夹,文件scala-2.11.4.tgz已经删除。

3、对scala目录进行重命名,在虚拟机sparkproject1的local目录下输入:mv scala-2.11.4 scala

     然后输入:ll,进行检查。

4、配置scala相关环境变量

在虚拟机sparkproject1的local目录,输入:vi ~/.bashrc

输入键盘 i 键 ,插入内容:

export SCALA_HOME=/usr/local/scala

export PATH=$PATH:.......:$SCALA_HOME/bin

然后按Esc,输入:wq,保存退出。

最后在local目录下输入:cat ~/.bashrc

里面的内容为:

export JAVA_HOME=/usr/java/latest

export HADOOP_HOME=/usr/local/hadoop

export HIVE_HOME=/usr/local/hive

export ZOOKEEPER_HOME=/usr/local/zk

export SCALA_HOME=/usr/local/scala

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin:$SCALA_HOME/bin

就是对的

然后需要source一下,在local目录下输入:source ~/.bashrc

5、查看scala是否安装成功,在sparkproject1虚拟机的/usr/local/目录下输入:scala -version,出现版本号,则安装正确。

6、按照上述步骤在sparkproject2和sparkproject3机器上都安装好scala。如何安装呢?使用scp将scala和.bashrc拷贝到另外两台机器上即可。

在sparkproject1虚拟机的local目录下输入:scp -r scala root@sparkproject2:/usr/local/

在sparkproject1虚拟机的local目录下输入:scp ~/.bashrc root@sparkproject2:~/

再在sparkproject2虚拟机检查一下,在sparkproject2虚拟机上的/usr/local/目录下输入:ll,有scala文件夹,就对了。

在sparkproject2虚拟机的local目录下输入:cat ~/.bashrc

里面有内容为:

export JAVA_HOME=/usr/java/latest

export HADOOP_HOME=/usr/local/hadoop

export HIVE_HOME=/usr/local/hive

export ZOOKEEPER_HOME=/usr/local/zk

export SCALA_HOME=/usr/local/scala

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin:$SCALA_HOME/bin

则正确

然后需要source一下,在sparkproject2虚拟机的local目录下输入:source ~/.bashrc

然后在sparkproject2虚拟机的local目录输入:scala -version,出现scala版本号,则安装完毕。

7、对sparkproject3虚拟机按照同样步骤执行。

在sparkproject1虚拟机的local目录下输入:scp -r scala root@sparkproject3:/usr/local/

在sparkproject1虚拟机的local目录下输入:scp ~/.bashrc root@sparkproject3:~/

再在sparkproject3虚拟机检查一下,在sparkproject3虚拟机上的/usr/local/目录下输入:ll,有scala文件夹,就对了。

在sparkproject3虚拟机的local目录下输入:cat ~/.bashrc

里面有内容为:

export JAVA_HOME=/usr/java/latest

export HADOOP_HOME=/usr/local/hadoop

export HIVE_HOME=/usr/local/hive

export ZOOKEEPER_HOME=/usr/local/zk

export SCALA_HOME=/usr/local/scala

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin:$SCALA_HOME/bin

则正确

然后需要source一下,在sparkproject3虚拟机的local目录下输入:source ~/.bashrc

然后在sparkproject3虚拟机的local目录输入:scala -version,出现scala版本号,则安装完毕。

③安装Kafka包

1、利用WinSCP软件将kafka_2.9.2-0.8.1.tgz文件拷贝到虚拟机sparkproject1的/usr/local/路径。

2、对kafka_2.9.2-0.8.1.tgz进行解压缩,在sparkproject1虚拟机的local目录下输入:tar -zxvf kafka_2.9.2-0.8.1.tgz

     然后在local目录下输入:ll

     删除kafka_2.9.2-0.8.1.tgz文件,在local目录下输入:rm -rf kafka_2.9.2-0.8.1.tgz

     再输入:ll,发现只有kafka_2.9.2-0.8.1文件夹,文件kafka_2.9.2-0.8.1.tgz已经删除。

3、对kafka目录进行改名,在虚拟机sparkproject1的local目录下输入:mv kafka_2.9.2-0.8.1 kafka

4、配置kafka

在虚拟机sparkproject1的/usr/local/目录下输入:vi kafka/config/server.properties

输入键盘 i 键,插入内容:

broker.id=0

修改zookeeper.connect=localhost:2181为:

zookeeper.connect=192.168.0.118:2181,192.168.0.122:2181,192.168.0.123:2181

④安装 slf4j

首先在Windows系统主机上,将slf4j-1.7.6.zip解压在主机上,然后得到文件夹:slf4j-1.7.6,双击打开, 找到slf4j-nop-1.7.6.jar这个jar包,将这个jar包用WinSCP软件拷贝到虚拟机sparkproject1的 kafka的libs目录下即/usr/local/kafka/libs/目录下面。如何拷贝呢?先将Windows系统主机上的slf4j-nop-1.7.6.jar利用WinSCP软件拷贝到sparkproject1的/usr/local/目录下面。

然后在sparkproject1虚拟机的local目录输入:mv slf4j-nop-1.7.6.jar kafka/libs

到此为止kafka的安装完成

⑤搭建kafka集群

按照上述步骤在另外两台机器分别安装kafka。用scp把kafka拷贝到sparkproject2和sparkproject3即可。 唯一区别的,就是server.properties中的broker.id,要设置为1和2。

1、在虚拟机sparkproject1的/usr/local/目录下面输入:scp -r kafka root@sparkproject2:/usr/local

      再在虚拟机sparkproject2上检查一下,在虚拟机sparkproject2的/usr/local/目录下输入:ll,有kafka文件夹,即正确。

      然后在虚拟机sparkproject2的local目录输入:cd kafka/config/

      在虚拟机sparkproject2的config目录输入:vi server.properties

      输入键盘 i 键,插入内容:

      broker.id=1

      然后zookeeper.connect的值仍旧为:zookeeper.connect=192.168.0.118:2181,192.168.0.122:2181,192.168.0.123:2181

      即分别是三台虚拟机的ip地址。  

     再按Esc键,输入:wq,保存退出。

2、在虚拟机sparkproject1的/usr/local/目录下面输入:scp -r kafka root@sparkproject3:/usr/local

      再在虚拟机sparkproject3上检查一下,在虚拟机sparkproject3的/usr/local/目录下输入:ll,有kafka文件夹,即正确。

      然后在虚拟机sparkproject3的local目录输入:cd kafka/config/

      在虚拟机sparkproject3的config目录输入:vi server.properties

      输入键盘 i 键,插入内容:

      broker.id=2

      然后zookeeper.connect的值仍旧为:zookeeper.connect=192.168.0.118:2181,192.168.0.122:2181,192.168.0.123:2181

      即分别是三台虚拟机的ip地址。

     再按Esc键,输入:wq,保存退出。

 

⑥启动kafka集群

1、在启动kafka集群以前,我们的jdk版本和kafka可能会有一些冲突,这个冲突会产生一个错误:

Unrecognized VM option 'UseCompressedOops’

首先要解决一下这个冲突:

在虚拟机sparkproject1和2和3上输入: vi /usr/local/kafka/bin/kafka-run-class.sh然后输入键盘 i 键,修改内容:

# JVM performance options下面,更改内容:

原内容为: if [ -z "$KAFKA_JVM_PERFORMANCE_OPTS" ]; then

 KAFKA_JVM_PERFORMANCE_OPTS="-server  -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true"

fi

去掉-XX:+UseCompressedOops即可,我们这个版本的虚拟机不支持这个参数,注意:server后面和-XX之间有一个空格。

按Esc,再输入:wq,保存退出。

另外两台虚拟机一样操作。

2、在三台机器上,分别启动kafka。在三台机器的/usr/local/kafka/目录下面分别输入:

nohup bin/kafka-server-start.sh config/server.properties &

启动后在/usr/local/kafka/目录下多了一个文件nohub.out,在kafka目录下输入:cat nohub.out,可以查看内容。

另外两台虚拟机同理执行:nohup bin/kafka-server-start.sh config/server.properties &

3、分别在三台虚拟机的/usr/local/kafka/目录输入:jps

看Kafka进程有没有启动

⑦测试kafka集群, 使用基本命令检查kafka是否搭建成功

1、在sparkproject1虚拟机的/usr/local/kafka/目录下输入:

bin/kafka-topics.sh --zookeeper 192.168.0.118:2181,192.168.0.122:2181,192.168.0.123:2181 --topic TestTopic --replication-factor 1 --partitions 1 --create

即生产一条数据。

再在kafka目录下输入:

bin/kafka-console-producer.sh --broker-list 192.168.0.118:9092,192.168.0.122:9092,192.168.0.123:9092 --topic TestTopic

即创建一个生产者。

再在SecureCRT软件在sparkproject1标签上,右键,再点击:Clone Session,出现sparkproject1(1)标签。

在sparkproject1(1)标签里输入:cd /usr/local/kafka/

然后在sparkproject1(1)标签的kafka目录输入:

bin/kafka-console-consumer.sh --zookeeper 192.168.0.118:2181,192.168.0.122:2181,192.168.0.123:2181 --topic TestTopic --from-beginning

即创建一个消费者。

然后在生产者下面输入hello world 

即:标签sparkproject1的bin/kafka-console-producer.sh --broker-list 192.168.0.118:9092,192.168.0.122:9092,192.168.0.123:9092 --topic TestTopic

下面写:hello world 

消费者能接收到。即在标签sparkproject1(1)下面有hello world,可以消费者可以接收到生产者的信息。

然后sparkproject1标签和sparkproject1(1)标签全部输入:ctrl+c,退出即可。

 

⑧如何让Centos6.4一次性打开多个命令行窗口,有很多方法,这里采用将命令行界面图像化显示的方法。

登录虚拟机,输入:cd ~

再输入:yum groupinstall "X Window System"

再输入:yum groupinstall "Desktop"

再输入:yum groupinstall "Chinese Support"

这三个安装完毕后,再输入:startx,可进入图像化界面。

分别在sparkproject1、sparkproject2和sparkproject3执行以上操作。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!