大数据统计分析平台之一、Kafka单机搭建
1、zookeeper搭建
Kafka集群依赖zookeeper,需要提前搭建好zookeeper
Step1:
- cd /usr/local/software
- jdk-8u161-linux-x64.rpm
链接:https://pan.baidu.com/s/1i6iHIDJ 密码:bgcc- rpm -ivh jdk-8u161-linux-x64.rpm
- vi /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_161
JRE_HOME=/usr/java/jdk1.8.0_161/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
source /etc/profile
echo $PATH
Step2:
# 下载zookeeper
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
# 如果下载不到,可以使用迅雷,或者使用百度云盘
链接:https://pan.baidu.com/s/1MXYd4UlKWvqB6EcVLyF8cg 密码:an6t
# 解压
tar -zxvf zookeeper-3.4.11.tar.gz
# 移动一下
mv zookeeper-3.4.11 /usr/local/zookeeper-3.4.11
Step3:重命名 zoo_sample.cfg文件
- mv /usr/local/zookeeper-3.4.11/conf/zoo_sample.cfg /usr/local/zookeeper-3.4.11/conf/zoo.cfg
Step4:vi /usr/local/zookeeper-3.4.11/conf/zoo.cfg,修改
- dataDir=/usr/local/zookeeper-3.4.11/data
Step5:创建数据目录
mkdir /usr/local/zookeeper-3.4.11/data
Step6:启动zookeeper:执行
- /usr/local/zookeeper-3.4.11/bin/zkServer.sh start
Step7:检测是否成功启动:执行
- /usr/local/zookeeper-3.4.11/bin/zkCli.sh
或者
yum install nc -y
echo stat| nc localhost 2181
================================================================================================================
2、下载Kafka
- # mkdir -p /usr/local/software
# cd /usr/local/software
# wget http://mirror.bit.edu.cn/apache/kafka/1.0.0/kafka_2.12-1.0.0.tgz- # 百度云下载地址:
链接:https://pan.baidu.com/s/1Kp0uD_5YjGKOLkbW_igm2g 密码:v1q7
- # tar zxf kafka_2.12-1.0.0.tgz -C /usr/local/
- # cd /usr/local/
- # mv kafka_2.12-1.0.0/ kafka/

- # vi /usr/local/kafka/config/server.properties
- # broker的ID,集群中每个broker ID不可相同
broker.id=0
# 监听器,端口号和port一致即可
listeners=PLAINTEXT:/10.10.6.225/:9092
# Broker的监听端口
port=9092- # 必须填写当前服务器IP地址
host.name=10.10.6.225- # 必须填写当前服务器IP地址
advertised.host.name=10.10.6.225
# 暂未配置集群
zookeeper.connect=10.10.6.225:2181- # 消息持久化目录
log.dirs=/usr/local/kafka/kafkaLogs- # 可以删除主题
delete.topic.enable=true- # 关闭自动创建topic
auto.create.topics.enable=false

- # vi /etc/profile
- export KAFKA_HOME=/usr/local/kafka
- export PATH=$PATH:$KAFKA_HOME/bin
- # source /etc/profile
- # vi /etc/hosts
- # es为主机名 ,这里一定要注意,是主机名!!!!重要的话说三次!!!!!!!!
127.0.0.1 es
10.10.6.225 es
- # kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
- # /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &
但这种方式退出shell后会自动断开
停止:
- kafka-server-stop.sh
- # jps
- 2608 Kafka
2236 QuorumPeerMain
2687 Jps
- # kafka-topics.sh --create --zookeeper 10.10.6.225:2181 --partitions 1 --replication-factor 1 --topic test
- # kafka-topics.sh --describe --zookeeper 10.10.6.225:2181 --topic test
- Topic:test PartitionCount:1 ReplicationFactor:1 Configs:
Topic: test Partition: 0 Leader: 0 Replicas: 0 Isr: 0
- # kafka-topics.sh --delete --zookeeper 10.10.6.225:2181 --topic test
- # kafka-console-producer.sh --broker-list 10.10.6.225:9092 --topic test
- 输入以下信息:
- This is a message
- This is another message
- # kafka-console-consumer.sh --bootstrap-server 10.10.6.225:9092 --topic test --from-beginning
- # http://kafka-python.readthedocs.io/en/master/
- # 安装办法:
- # C:\Users\Administrator>pip install kafka-python
- # Collecting kafka-python
- # Downloading kafka_python-1.4.-py2.py3-none-any.whl (235kB)
- # % |████████████████████████████████| 235kB 150kB/s
- # Installing collected packages: kafka-python
- # Successfully installed kafka-python-1.4.
- # http://blog.csdn.net/evankaka/article/details/52421314
- from kafka import KafkaProducer
from Util.MySQLHelper import *
import json- producer = KafkaProducer(bootstrap_servers='10.10.6.225:9092', value_serializer=lambda v: json.dumps(v).encode('utf-8'))
db = MySQLHelper()
sql = "select ID,RESOURCE_ID_INT,RESOURCE_ID_CHAR,RESOURCE_TITLE,RESOURCE_TYPE_NAME,RESOURCE_FORMAT,RESOURCE_PAGE,CAST(CREATE_TIME AS CHAR) AS CREATE_TIME,DOWN_COUNT,FILE_ID,RESOURCE_TYPE,STRUCTURE_ID,PERSON_ID,PERSON_NAME,IDENTITY_ID from t_resource_info limit 100"
dt = db.query(sql)- print(len(dt))
- for row in dt:
producer.send('t_resource_info', row)- producer.flush()
- print('恭喜,完成!')
不依赖于MYSQL的数据提交:
- import json
- from kafka import KafkaProducer
- import datetime
- # kafka的服务器位置
- kafka_servers = '10.10.6.194:9092'
- # 日期的转换器
- class DateEncoder(json.JSONEncoder):
- def default(self, obj):
- if isinstance(obj, datetime.datetime):
- return obj.strftime('%Y-%m-%d %H:%M:%S')
- elif isinstance(obj, datetime.date):
- return obj.strftime("%Y-%m-%d")
- else:
- return json.JSONEncoder.default(self, obj)
- # 黄海定义的输出信息的办法,带当前时间
- def logInfo(msg):
- i = datetime.datetime.now()
- print(" %s %s" % (i, msg))
- # 统一的topic名称
- topicName = 'test'
- dt=[{"id":1,"name":"刘备"},{"id":2,"name":"关羽"},{"id":3,"name":"张飞"}]
- # kafka的生产者
- producer = KafkaProducer(bootstrap_servers=kafka_servers)
- # # 将字段大写转为小写
- for row in dt:
- new_dics = {}
- for k, v in row.items():
- new_dics[k.lower()] = v
- jstr = json.dumps(new_dics, cls=DateEncoder)
- producer.send(topic=topicName, partition=0, value=jstr.encode('utf-8'))
- # 提交一下
- producer.flush()
- print('恭喜,完成!')
KafkaConsumer.py
- from kafka import KafkaConsumer
- import time
- def log(str):
- t = time.strftime(r"%Y-%m-%d_%H-%M-%S", time.localtime())
- print("[%s]%s" % (t, str))
- log('start consumer')
- # 消费192.168.120.:9092上的world 这个Topic,指定consumer group是consumer-
- consumer = KafkaConsumer('foobar', bootstrap_servers=['localhost:9092'])
- for msg in consumer:
- recv = "%s:%d:%d: key=%s value=%s" % (msg.topic, msg.partition, msg.offset, msg.key, msg.value)
- log(recv)
如果是想读取kafka记得的所有消费记录:
- from kafka import KafkaConsumer
- import time
- # kafka的服务器位置
- kafka_servers = '10.10.6.194:9092'
- # 统一的topic名称
- topicName = 'test'
- def log(str):
- t = time.strftime(r"%Y-%m-%d_%H-%M-%S", time.localtime())
- print("[%s]%s" % (t, str))
- log('启动消费者...')
- # auto_offset_reset='earliest' 这个参数很重要,如果加上了,就是kafka记录的最后一条位置,如果不加,就是以后要插入的数据了。
- #consumer = KafkaConsumer(topicName, auto_offset_reset='earliest', bootstrap_servers=kafka_servers)
- consumer = KafkaConsumer(topicName, bootstrap_servers=kafka_servers)
- for msg in consumer:
- recv = "%s:%d:%d: key=%s value=%s" % (msg.topic, msg.partition, msg.offset, msg.key, msg.value)
- log(recv)
大数据统计分析平台之一、Kafka单机搭建的更多相关文章
- 大数据统计分析平台之二、ElasticSearch 6.2.1的安装与使用
# 下载文件cd /usr/local/software wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch ...
- 大数据统计分析平台之三、Kibana安装和使用
kibana安装 1.到官网下载kibana: cd /usr/local/software wget https://artifacts.elastic.co/downloads/kibana/ki ...
- 大数据计算平台Spark内核全面解读
1.Spark介绍 Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的顶级项目.随着Spark在大数据计算领域的暂露头角,越来越多的 ...
- 国内物联网平台(7):Ablecloud物联网自助开发和大数据云平台
国内物联网平台(7)——Ablecloud物联网自助开发和大数据云平台 马智 平台定位 面向IoT硬件厂商,提供设备联网与管理.远程查看控制.定制化云端功能开发.海量硬件数据存储与分析等基础设施,加速 ...
- 王坚十年前的坚持,才有了今天世界顶级大数据计算平台MaxCompute
如果说十年前,王坚创立阿里云让云计算在国内得到了普及,那么王坚带领团队自主研发的大数据计算平台MaxCompute则推动大数据技术向前跨越了一大步. 数据是企业的核心资产,但十年前阿里巴巴的算力已经无 ...
- 联童科技基于incubator-dolphinscheduler从0到1构建大数据调度平台之路
联童科技是一家智能化母婴童产业平台,从事母婴童行业以及互联网技术多年,拥有丰富的母婴门店运营和系统开发经验,在会员经营和商品经营方面,能够围绕会员需求,深入场景,更贴近合作伙伴和消费者,提供最优服务产 ...
- 从 Airflow 到 Apache DolphinScheduler,有赞大数据开发平台的调度系统演进
点击上方 蓝字关注我们 作者 | 宋哲琦 ✎ 编 者 按 在不久前的 Apache DolphinScheduler Meetup 2021 上,有赞大数据开发平台负责人 宋哲琦 带来了平台调度系统 ...
- 大数据计算平台Spark内核解读
1.Spark介绍 Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的顶级项目.随着 Spark在大数据计算领域的暂露头角,越来越多 ...
- 大数据竞赛平台——Kaggle 入门
Reference: http://blog.csdn.net/witnessai1/article/details/52612012 Kaggle是一个数据分析的竞赛平台,网址:https://ww ...
随机推荐
- Jenkins发送邮件中文乱码问题解决
在环境变量中添加: JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF8 配置好后,重启Jenkins即可
- Java NIO Socket编程实例
各I/O模型优缺点 BIO通信模型 BIO主要的问题在于每当有一个新的客户端请求接入时,服务端必须创建一个新的线程处理新接入的客户端链路,一个线程只能处理一个客户端连接 线程池I/O编程 假如所有可用 ...
- Luogu5162 WD与积木(生成函数+多项式求逆)
显然的做法是求出斯特林数,但没有什么优化空间. 考虑一种暴力dp,即设f[i]为i块积木的所有方案层数之和,g[i]为i块积木的方案数.转移时枚举第一层是哪些积木,于是有f[i]=g[i]+ΣC(i, ...
- BZOJ2741 FOTILE模拟赛L(分块+可持久化trie)
显然做个前缀和之后变成询问区间内两个数异或最大值. 一种暴力做法是建好可持久化trie后直接枚举其中一个数查询,复杂度O(nmlogv). 观察到数据范围很微妙.考虑瞎分块. 设f[i][j]为第i个 ...
- Codeforces Round #374 (Div. 2) C(DAG上的DP)
C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard input ou ...
- 沉迷AC自动机无法自拔之:[UVA 11468] Substring
图片加载可能有点慢,请跳过题面先看题解,谢谢 这个鬼题目,上一波套路好了 先用题目给的模板串建\(AC\)自动机,把单词结尾标记为 \(val=1\),然后在建好的\(AC\)自动机上跑 \(dp\) ...
- 【BZOJ1432】[ZJOI2009]Function(找规律)
[BZOJ1432][ZJOI2009]Function(找规律) 题面 BZOJ 洛谷 题解 这...找找规律吧. #include<iostream> using namespace ...
- VBA:Excel使用SQL进行查询
Sub Query() Dim Conn As Object, Rst As Object Dim strConn As String, strSQL As String Dim i As Integ ...
- Spring Boot 源码分析 数据源 + Mybatis 配置
公司今年开始使用 Spring Boot 开发,当然使用 Spring Boot 也是大势所趋,尤其是现在微服务的趋向,当然是选择基于Spring Boot 的 Spring Cloud.(所谓的 S ...
- AngularJs -- 指令中使用子作用域
下面将要介绍的指令会以父级作用域为原型生成子作用域.这种继承的机制可以创建一个隔离层,用来将需要协同工作的方法和数据模型对象放置在一起. ng-app和ng-controller是特殊的指令,因为它们 ...