①为什么要搭建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执行以上操作。
来源:CSDN
作者:详见附件
链接:https://blog.csdn.net/lbh19630726/article/details/95612470