第53课:蘑菇云Spark大数据项目之Zookeeper+Kafka+Flume实战讲解

本节课主要是讲通过Spark Streaming来读取Kafka中的数据,在进行代码实战之前,先在集群中安装Zookeeper、Kafka、Flume等必要的软件

Flume安装比较简单,这里就不讲,主要是说下Zookeeper和Kafka的安装与配置


1、安装和配置Zookeeper Kafka集群模式需要提前安装好Zookeeper。
- 提示:Kafka单例模式不需要安装额外的Zookeeper,可以使用内置的Zookeeper。
- Kafka集群模式需要至少3台服务器。本课实战用到的服务器Hostname:Master,Work1,Work2。 - 本课中用到的Zookeeper版本是Zookeeper-3.4.6。
1) 下载Zookeeper 进入http://www.apache.org/dyn/closer.cgi/zookeeper/,下载zookeeper-3.4.6.tar.gz。
2) 安装Zookeeper 提示:下面的步骤发生在Master服务器。 以ubuntu14.04举例,把下载好的文件放到/root目录,用下面的命令解压: cd /root tar -zxvf zookeeper-3.4.6.tar.gz 解压后在/root目录会多出一个zookeeper-3.4.6的新目录,用下面的命令把它剪切到指定目录即安装好Zookeeper了: cd /root mv zookeeper-3.4.6 /usr/local/spark 之后在/usr/local/spark目录会多出一个zookeeper-3.4.6的新目录。下面我们讲如何配置安装好的Zookeeper。
3) 配置Zookeeper 提示:下面的步骤发生在Master服务器。 a. 配置.bashrc - 打开文件:vi /root/.bashrc - 在PATH配置行前添加: export ZOOKEEPER_HOME=/usr/local/spark/zookeeper-3.4.6 - 最后修改PATH: export PATH=${JAVA_HOME}/bin:${ZOOKEEPER_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${SPARK_HOME}/sbin:${HIVE_HOME}/bin:${KAFKA_HOME}/bin:$PATH - 使配置的环境变量立即生效:source /root/.bashrc b. 创建data目录 - cd $ZOOKEEPER_HOME - mkdir data c. 创建并打开zoo.cfg文件 - cd $ZOOKEEPER_HOME/conf - cp zoo_sample.cfg zoo.cfg - vi zoo.cfg d. 配置zoo.cfg # 配置Zookeeper的日志和服务器身份证号等数据存放的目录。 # 千万不要用默认的/tmp/zookeeper目录,因为/tmp目录的数据容易被意外删除。 dataDir=$ZOOKEEPER_HOME/data # Zookeeper与客户端连接的端口 clientPort=2181 # 在文件最后新增3行配置每个服务器的2个重要端口:Leader端口和选举端口 # server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器; # B 是这个服务器的hostname或ip地址; # C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口; # D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举, # 选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。 # 如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信 # 端口号不能一样,所以要给它们分配不同的端口号。 server.1=Master:2888:3888 server.2=Work1:2888:3888 server.3=Work2:2888:3888 e. 创建并打开myid文件 - cd $ZOOKEEPER_HOME/data - touch myid - vi myid f. 配置myid 按照zoo.cfg的配置,myid的内容就是1。//这个1要和server.1相同
4) 同步Master的安装和配置到Work1和Work2 - 在Master服务器上运行下面的命令 cd /root scp ./.bashrc root@Work1:/root scp ./.bashrc root@Work2:/root cd /usr/local/spark scp -r ./zookeeper-3.4.6 root@Work1:/usr/local/spark scp -r ./zookeeper-3.4.6 root@Work2:/usr/local/spark - 在Work1服务器上运行下面的命令 vi $ZOOKEEPER_HOME/data/myid 按照zoo.cfg的配置,myid的内容就是2。 - 在Work2服务器上运行下面的命令 vi $ZOOKEEPER_HOME/data/myid 按照zoo.cfg的配置,myid的内容就是3。
5) 启动Zookeeper服务 - 在Master服务器上运行下面的命令 zkServer.sh start - 在Work1服务器上运行下面的命令 source /root/.bashrc zkServer.sh start - 在Work2服务器上运行下面的命令 source /root/.bashrc zkServer.sh start
6) 验证Zookeeper是否安装和启动成功,需先启动全部的zookeeper节点 - 在Master服务器上运行命令:jps和zkServer.sh status root@Master:/usr/local/spark/zookeeper-3.4.6/bin# jps 3844 QuorumPeerMain 4790 Jps zkServer.sh status root@Master:/usr/local/spark/zookeeper-3.4.6/bin# zkServer.sh status JMX enabled by default Using config: /usr/local/spark/zookeeper-3.4.6/bin/../conf/zoo.cfg Mode: follower - 在Work1服务器上运行命令:jps和zkServer.sh status source /root/.bashrc root@Work1:/usr/local/spark/zookeeper-3.4.6/bin# jps 3462 QuorumPeerMain 4313 Jps root@Work1:/usr/local/spark/zookeeper-3.4.6/bin# zkServer.sh status JMX enabled by default Using config: /usr/local/spark/zookeeper-3.4.6/bin/../conf/zoo.cfg Mode: follower
- 在Work2服务器上运行命令:jps和zkServer.sh status root@Work2:/usr/local/spark/zookeeper-3.4.6/bin# jps 4073 Jps 3277 QuorumPeerMain root@Work2:/usr/local/spark/zookeeper-3.4.6/bin# zkServer.sh status JMX enabled by default Using config: /usr/local/spark/zookeeper-3.4.6/bin/../conf/zoo.cfg Mode: leader 至此,代表Zookeeper已经安装和配置成功。

1、安装和配置Kafka

本课中用到的Kafka版本是Kafka-2.10-0.9.0.1。

1) 下载Kafka

进入http://kafka.apache.org/downloads.html,直接点击kafka_2.10-0.9.0.1.tgz进行下载。


2) 安装Kafka

提示:下面的步骤发生在Master服务器。

以ubuntu14.04举例,把下载好的文件放到/root目录,用下面的命令解压:

cd /root

tar -zxvf kafka_2.10-0.9.0.1.tgz

解压后在/root目录会多出一个kafka_2.10-0.9.0.1的新目录,用下面的命令把它剪切到指定目录即安装好Kafka了:

cd /root

mv kafka_2.10-0.9.0.1 /usr/local

之后在/usr/local目录会多出一个kafka_2.10-0.9.0.1的新目录。下面我们讲如何配置安装好的Kafka。


3) 配置Kafka

提示:下面的步骤发生在Master服务器。

a. 配置.bashrc

- 打开文件:vim /root/.bashrc

- 在PATH配置行前添加:

export KAFKA_HOME=/usr/local/kafka_2.10-0.9.0.1

- 最后修改PATH:

export PATH=${JAVA_HOME}/bin:${ZOOKEEPER_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${SPARK_HOME}/sbin:${HIVE_HOME}/bin:${KAFKA_HOME}/bin:$PATH

- 使配置的环境变量立即生效:source /root/.bashrc

b. 打开server.properties

- cd $KAFKA_HOME/config

- vim server.properties

c. 配置server.properties

broker.id=0

port=9092

zookeeper.connect=Master:2181,Work1:2181,Work2:2181


4) 同步Master的安装和配置到Work1和Work2

- 在Master服务器上运行下面的命令

cd /root

scp ./.bashrc root@Work1:/root

scp ./.bashrc root@Work2:/root

cd /usr/local

scp -r ./kafka_2.10-0.9.0.1 root@Work1:/usr/local

scp -r ./kafka_2.10-0.9.0.1 root@Work2:/usr/local

- 在Work1服务器上运行下面的命令

vim $KAFKA_HOME/config/server.properties

修改broker.id=1。

- 在Work2服务器上运行下面的命令

vi $KAFKA_HOME/config/server.properties

修改broker.id=2。


5) 启动Kafka服务

- 在Master服务器上运行下面的命令

cd $KAFKA_HOME/bin

--运行以下命令

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

- 在Work1服务器上运行下面的命令

source /root/.bashrc

cd $KAFKA_HOME/bin

--运行以下命令

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

- 在Work2服务器上运行下面的命令

source /root/.bashrc

cd $KAFKA_HOME/bin

--运行以下命令

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


6) 验证Kafka是否安装和启动成功

- 在任意服务器上运行命令创建Topic“HelloKafka”:

./kafka-topics.sh --create --zookeeper Master:2181,Work1:2181,Work2:2181 --replication-factor 3 --partitions 1 --topic HelloKafka


- 在任意服务器上运行命令为创建的Topic“HelloKafka”生产一些消息:

kafka-console-producer.sh --broker-list Master:9092,Work1:9092,Work2:9092 --topic HelloKafka

输入下面的消息内容:

Hello Spark Hello Kafka

Life is short, you need Spark!


- 在任意服务器上运行命令从指定的Topic“HelloKafka”上消费(拉取)消息:

./kafka-console-consumer.sh --zookeeper Master:2181,Work1:2181,Work2:2181 --from-beginning --topic HelloKafka

过一会儿,你会看到打印的消息内容:

Hello Spark Hello Kafka

Life is short, you need Spark!


- 在任意服务器上运行命令查看所有的Topic名字:

./kafka-topics.sh --list --zookeeper Master:2181,Work1:2181,Work2:2181


- 在任意服务器上运行命令查看指定Topic的概况:

./kafka-topics.sh --describe --zookeeper Master:2181,Work1:2181,Work2:2181 --topic HelloKafka

至此,代表Kafka已经安装和配置成功。

必要的软件已成功安装,代码实战后续再进一步更新


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部