数据仓库 — 07_Kafka的安装与部署(Kafka命令行操作指令、Kafka集群群起脚本、压力测试、节点数量计算、hadoop_zookeeper_flume_kafka群起脚本、默认端口总结)


欢迎访问笔者个人技术博客: http://rukihuang.xyz/
学习视频来源于尚硅谷,视频链接: 尚硅谷大数据项目数据仓库,电商数仓V1.2新版,Respect!

1 Kafka的安装与配置

  1. kafka_2.11-0.11.0.2.tgz上传至102机器/opt/software目录下,并解压安装至/opt/module,重命名为kafka
tar -zxvf kafka_2.11-0.11.0.0.tgz -C /opt/module/
mv kafka_2.11-0.11.0.0/ kafka
  1. /opt/module/kafka创建logs文件夹
mkdir logs
  1. 修改配置文件/opt/module/kafka/config/server.properties
    1. 集群3个节点的broker.id必须不一样,hadoop102的为0,103的为1,104的为2
    2. 修改log.dirs=/opt/module/kafka/logs
    3. 放开delete.topic.enable=true,使topic可以被删除
#broker 的全局唯一编号,不能重复
broker.id=0
#删除topic 功能使能
delete.topic.enable=true
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘IO 的现成数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#kafka 运行日志存放的路径
log.dirs=/opt/module/kafka/logs
#topic 在当前broker 上的分区个数
num.partitions=1
#用来恢复和清理data 下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment 文件保留的最长时间,超时将被删除
log.retention.hours=168
#配置连接Zookeeper 集群地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181
  1. 分发至其他机器,/opt/module/kafka/config/server.properties的broker.id必须得改
xsync /opt/module/kafka
  1. 配置环境变量,新增kafka环境变量(另外2个节点的也要手动修改)
vim /etc/profile.d/env.sh
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
#使配置文件生效
source /etc/profile.d/env.sh
  1. 单节点启动脚本(群起的话,在3个节点挨个执行)(/opt/module/kafka)
bin/kafka-server-start.sh config/server.properties &
  1. 单节点停止脚本(群停的话,在3个节点挨个之心)(同上)
bin/kafka-server-stop.sh stop

2 Kafka命令行操作

  • 均在/opt/module/kafka目录下执行

2.1 查看当前服务器中的所有topic

bin/kafka-topics.sh --zookeeper hadoop102:2181 --list

2.2 创建topic

#创建topic_start
bin/kafka-topics.sh --zookeeper hadoop102:2181,hadoop103:2181,hadoop104:2181 --create --replication-factor 1 --partitions 1 --topic topic_start
#创建topic_event
bin/kafka-topics.sh --zookeeper hadoop102:2181,hadoop103:2181,hadoop104:2181 --create --replication-factor 1 --partitions 1 --topic topic_event
  • 选项说明:
    • --topic 定义topic 名
    • --replication-factor定义副本数
    • --partitions 定义分区数

2.3 删除topic

bin/kafka-topics.sh --delete --zookeeper hadoop102:2181,hadoop103:2181,hadoop104:2181 --topic topic_stop
  • 需要server.properties中设置delete.topic.enable=true,否则只是标记删除或者直接重启。

2.4 发送消息

bin/kafka-console-producer.sh --broker-list hadoop102:9092 --topic topic_start

2.5 消费消息

bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic topic_start
  • --from-beginning:会把该topic中以往所有的数据都读取出来。根据业务场景选择是否增加该配置。

2.6 查看某个topic的详情

bin/kafka-topics.sh --zookeeper hadoop102:2181 --describe --topic topic_start

3 Kafka群起脚本

  1. ~/bin目录下创建kf.sh
#!/bin/bash

case $1 in
"start"){
	for i in hadoop102 hadoop103 hadoop104
		do
			echo --------$i 启动kafka---------
			ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
		done
};;
"stop"){
	for i in hadoop102 hadoop103 hadoop104
		do
			echo --------$i 停止kafka---------
			ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh stop"
		done
};;
esac
  1. 增加脚本执行权限
chmod 777 kf.sh
  1. kafka集群启动
kf.sh start
  1. kafka集群停止
kf.sh stop

4 项目经验——Kafka压力测试

4.1 Kafka压测

  • 用Kafka 官方自带的脚本,对Kafka 进行压测。Kafka 压测时,可以查看到哪个地方出现了瓶颈(CPU,内存,网络IO)。一般都是网络IO 达到瓶颈。生产和消费的脚本分别为:
    • kafka-consumer-perf-test.sh
    • kafka-producer-perf-test.sh

4.2 生产者压测 producer

  • /opt/module/kafka
bin/kafka-producer-perf-test.sh --topic test --record-size 100 --num-records 100000 --throughput -1 --producer-props bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092
  • 说明
    • record-size是一条信息有多大,单位是字节。
    • num-records 是总共发送多少条信息。
    • throughput 是每秒多少条信息,设成-1,表示不限流,可测出生产者最大吞吐量。
  • 结果

在这里插入图片描述

4.3 消费者压测 consumer

  • /opt/module/kafka
bin/kafka-consumer-perf-test.sh --zookeeper hadoop102:2181 --topic test --fetch-size 10000 --messages 10000000 --threads 1
  • 说明
    • --zookeeper 指定zookeeper 的链接信息
    • --topic 指定topic 的名称
    • --fetch-size 指定每次fetch 的数据的大小
    • --messages总共要消费的消息个数
  • 结果

在这里插入图片描述

5 项目经验——Kafka机器数量计算

Kafka 机器数量(经验公式)=2* (峰值生产速度 * 副本数/100)+1
先拿到峰值生产速度,再根据设定的副本数,就能预估出需要部署Kafka 的数量。
比如我们的峰值生产速度是50M/s。副本数为2。
Kafka 机器数量=2* (50*2/100)+ 1=3 台

6 Hadoop、zookeeper、flume、kafka群起群停脚本

case $1 in
"start"){
	echo " -------- 启动集群-------"
	echo " -------- 启动hadoop 集群-------"
	/opt/module/hadoop-2.7.2/sbin/start-dfs.sh
	ssh hadoop103 "/opt/module/hadoop-2.7.2/sbin/start-yarn.sh"
	#启动Zookeeper 集群
	zk.sh start
	sleep 4s;
	#启动Flume 采集集群
	f1.sh start
	#启动Kafka 采集集群
	kf.sh start
	sleep 6s;
	#启动Flume 消费集群
	f2.sh start
};;
"stop"){
	echo " -------- 停止集群-------"
	#停止Flume 消费集群
	f2.sh stop
	#停止Kafka 采集集群
	kf.sh stop
	sleep 6s;
	#停止Flume 采集集群
	f1.sh stop
	#停止Zookeeper 集群
	zk.sh stop
	echo " -------- 停止hadoop 集群-------"
	ssh hadoop103 "/opt/module/hadoop-2.7.2/sbin/stop-yarn.sh" 
	/opt/module/hadoop-2.7.2/sbin/stop-dfs.sh
};;
esac
  • 注意点:
    • 其中 kafka依赖zk,zk一挂,kafka就再也关不了了,需要手动Kill,或者加延时,flume之前也要加延时,避免提前消费导致消费不到数据
    • 使用kafka-server-stop脚本无法关闭kafka,解决方式参考https://blog.csdn.net/KingAnne/article/details/101034794

7 hadoop部署相关的默认端口

7.1 系统

  • 808080 :用于tomcat和apache的端口。

  • 22 :ssh的端口

7.2 Web UI

用于访问和监控Hadoop系统运行状态

Daemon缺省端口配置参数
HDFSNamenode50070dfs.http.address
Datanodes50075dfs.datanode.http.address
Secondarynamenode50090dfs.secondary.http.address
Backup/Checkpoint node*50105dfs.backup.http.address
MRJobracker50030mapred.job.tracker.http.address
Tasktrackers50060mapred.task.tracker.http.address
HBaseHMaster60010hbase.master.info.port
HRegionServer60030hbase.regionserver.info.port
** hadoop 0.21以后代替secondarynamenode*

7.3 内部端口

Daemon缺省端口配置参数协议用于
Namenode9000fs.default.nameIPC: ClientProtocolFilesystem metadata operations.
Datanode50010dfs.datanode.addressCustom Hadoop Xceiver: DataNodeand DFSClientDFS data transfer
Datanode50020dfs.datanode.ipc.addressIPC:InterDatanodeProtocol,ClientDatanodeProtocol ClientProtocolBlock metadata operations and recovery
Backupnode50100dfs.backup.address同 namenodeHDFS Metadata Operations
Jobtracker9001mapred.job.trackerIPC:JobSubmissionProtocol,InterTrackerProtocolJob submission, task tracker heartbeats.
Tasktracker127.0.0.1:0*mapred.task.tracker.report.addressIPC:TaskUmbilicalProtocol和 child job 通信
** 绑定到未用本地端口*

7.4 相关产品端口

产品服务缺省端口参数范围协议说明
HBaseMaster60000hbase.master.portExternalTCPIPC
Master60010hbase.master.info.portExternalTCPHTTP
RegionServer60020hbase.regionserver.portExternalTCPIPC
RegionServer60030hbase.regionserver.info.portExternalTCPHTTP
HQuorumPeer2181hbase.zookeeper.property.clientPortTCPHBase-managed ZK mode
HQuorumPeer2888hbase.zookeeper.peerportTCPHBase-managed ZK mode
HQuorumPeer3888hbase.zookeeper.leaderportTCPHBase-managed ZK mode
REST Service8080hbase.rest.portExternalTCP
ThriftServer9090Pass -p<port> on CLIExternalTCP
Avro server9090Pass –port <port> on CLIExternalTCP
HiveMetastore9083ExternalTCP
HiveServer10000ExternalTCP
SqoopMetastore16000sqoop.metastore.server.portExternalTCP
ZooKeeperServer2181clientPortExternalTCPClient port
Server2888X in server.N=host:X:YInternalTCPPeer
Server3888Y in server.N=host:X:YInternalTCPPeer
Server3181X in server.N=host:X:YInternalTCPPeer
Server4181Y in server.N=host:X:YInternalTCPPeer
HueServer8888ExternalTCP
Beeswax Server8002Internal
Beeswax Metastore8003Internal
OozieOozie Server11000OOZIE_HTTP_PORT in oozie-env.shExternalTCPHTTP
Oozie Server11001OOZIE_ADMIN_PORT in oozie-env.shlocalhostTCPShutdown port

7.5 YARN(Hadoop 2.0)缺省端口

产品服务缺省端口配置参数协议
Hadoop YARNResourceManager8032yarn.resourcemanager.addressTCP
ResourceManager8030yarn.resourcemanager.scheduler.addressTCP
ResourceManager8031yarn.resourcemanager.resource-tracker.addressTCP
ResourceManager8033yarn.resourcemanager.admin.addressTCP
ResourceManager8088yarn.resourcemanager.webapp.addressTCP
NodeManager8040yarn.nodemanager.localizer.addressTCP
NodeManager8042yarn.nodemanager.webapp.addressTCP
NodeManager8041yarn.nodemanager.addressTCP
MapReduce JobHistory Server10020mapreduce.jobhistory.addressTCP
MapReduce JobHistory Server19888mapreduce.jobhistory.webapp.addressTCP

7.6 第三方产品端口

ganglia用于监控HadoopHbase运行情况。kerberos是一种网络认证协议,相应软件由麻省理工开发。

产品服务安全缺省端口协议访问配置
Gangliaganglia-gmond8649UDP/TCPInternal
ganglia-web80TCPExternal通过 Apache httpd
KerberosKRB5 KDC ServerSecure88UDP*/TCPExternal[kdcdefaults] 或 [realms]段下的kdc_ports 和 kdc_tcp_ports
KRB5 Admin ServerSecure749TCPInternalKdc.conf 文件:[realms]段kadmind_
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值