1、zookeeper搭建

  Kafka集群依赖zookeeper,需要提前搭建好zookeeper

  单机模式(7步)(集群模式进阶请移步:http://blog.51cto.com/nileader/795230)

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
   kafka_2.12-1.0.0.tgz    //其中2.12-1.0.0为Scala的版本,kafka-1.0.0-src.tgz为kafka版本
 
3、解压
# tar zxf kafka_2.12-1.0.0.tgz -C /usr/local/
# cd /usr/local/
# mv kafka_2.12-1.0.0/ kafka/
4、配置
mkdir -p /usr/local/kafka/kafkaLogs
# 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
5、配置Kafka的环境变量
# 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
6、启动与停止Kafka
# 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 
7、验证
# jps
2608 Kafka
2236 QuorumPeerMain
2687 Jps
看到Kafka的进程,说明Kafka已经启动
 
8、创建topic
    创建名为test,partitions为3,replication为3的topic
# kafka-topics.sh --create --zookeeper 10.10.6.225:2181 --partitions 1 --replication-factor 1 --topic test
    查看topic状态
# 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
 
    删除topic
    执行如下命令
# kafka-topics.sh --delete --zookeeper 10.10.6.225:2181 --topic test
9、测试使用Kafka
    发送消息
# 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 
    若看到上输入的信息说明已经搭建成功。
 
更复杂配置参考:
 
黄海添加于2018-02-11 夜
链接:https://pan.baidu.com/s/1i6HnIzr 密码:1soq
 
KafkaProducer.py
# 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单机搭建的更多相关文章

  1. 大数据统计分析平台之二、ElasticSearch 6.2.1的安装与使用

    # 下载文件cd /usr/local/software wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch ...

  2. 大数据统计分析平台之三、Kibana安装和使用

    kibana安装 1.到官网下载kibana: cd /usr/local/software wget https://artifacts.elastic.co/downloads/kibana/ki ...

  3. 大数据计算平台Spark内核全面解读

    1.Spark介绍 Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的顶级项目.随着Spark在大数据计算领域的暂露头角,越来越多的 ...

  4. 国内物联网平台(7):Ablecloud物联网自助开发和大数据云平台

    国内物联网平台(7)——Ablecloud物联网自助开发和大数据云平台 马智 平台定位 面向IoT硬件厂商,提供设备联网与管理.远程查看控制.定制化云端功能开发.海量硬件数据存储与分析等基础设施,加速 ...

  5. 王坚十年前的坚持,才有了今天世界顶级大数据计算平台MaxCompute

    如果说十年前,王坚创立阿里云让云计算在国内得到了普及,那么王坚带领团队自主研发的大数据计算平台MaxCompute则推动大数据技术向前跨越了一大步. 数据是企业的核心资产,但十年前阿里巴巴的算力已经无 ...

  6. 联童科技基于incubator-dolphinscheduler从0到1构建大数据调度平台之路

    联童科技是一家智能化母婴童产业平台,从事母婴童行业以及互联网技术多年,拥有丰富的母婴门店运营和系统开发经验,在会员经营和商品经营方面,能够围绕会员需求,深入场景,更贴近合作伙伴和消费者,提供最优服务产 ...

  7. 从 Airflow 到 Apache DolphinScheduler,有赞大数据开发平台的调度系统演进

    点击上方 蓝字关注我们 作者 | 宋哲琦 ✎ 编 者 按 在不久前的 Apache  DolphinScheduler Meetup 2021 上,有赞大数据开发平台负责人 宋哲琦 带来了平台调度系统 ...

  8. 大数据计算平台Spark内核解读

    1.Spark介绍 Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的顶级项目.随着 Spark在大数据计算领域的暂露头角,越来越多 ...

  9. 大数据竞赛平台——Kaggle 入门

    Reference: http://blog.csdn.net/witnessai1/article/details/52612012 Kaggle是一个数据分析的竞赛平台,网址:https://ww ...

随机推荐

  1. 【BOM】浏览器对象模型

    1.navigator :保存浏览器配置信息的对象 常用 navigator.plugins: 显示浏览器中所有插件信息的集合 navigator.cookieEnabled: 判断是否开启cooki ...

  2. 【bzoj4596】[Shoi2016]黑暗前的幻想乡 容斥原理+矩阵树定理

    题目描述 给出 $n$ 个点和 $n-1$ 种颜色,每种颜色有若干条边.求这张图多少棵每种颜色的边都出现过的生成树,答案对 $10^9+7$ 取模. 输入 第一行包含一个正整数 N(N<=17) ...

  3. BZOJ2423 HAOI2010最长公共子序列(动态规划)

    大讨论.注意去重. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib& ...

  4. BZOJ2753 SCOI2012滑雪与时间胶囊(最小生成树)

    首先显然可以把所有能到的点拎出来建个新图,这样第一问也就做好了. 剩下的部分似乎是一个裸的最小树形图.但显然这个东西是没什么学的必要的并且不太能跑过去. 考虑建出来的图有什么性质.可以发现如果没有高度 ...

  5. 【刷题】LOJ 2818 「eJOI2018」循环排序

    题目描述 本题译自 eJOI2018 Problem F「Cycle Sort」 给定一个长为 \(n\) 的数列 \(\{a_i\}\) ,你可以多次进行如下操作: 选定 \(k\) 个不同的下标 ...

  6. BZOJ 4361 isn | DP 树状数组

    链接 BZOJ 4361 题面 给出一个长度为n的序列A(A1,A2...AN).如果序列A不是非降的,你必须从中删去一个数, 这一操作,直到A非降为止.求有多少种不同的操作方案,答案模10^9+7. ...

  7. 循环取月的三位英语名 Jan Feb

    CultureInfo ci = new CultureInfo("en-US"); DateTime now = DateTime.Now; for (int i = 0; i ...

  8. 【BZOJ4444】国旗计划

    Description 题目链接 Solution 磕了3个半小时没做出来的题,就是全场崩. 首先对于一个人的答案是很好求的,显然是选择左端点在此人区间中,右端点最远(最靠右)的人作为下一个接棒人.因 ...

  9. IOI2018题解

    只有部分题解 练习赛 T2 自然还是要简单考虑了 0~n-1的排列,考虑相对的大小 我们先考虑对于前三个:a,b,c 询问a,b,询问b,c,再询问a,b,c 发现,如果三个知道两个,那么第三个可以唯 ...

  10. Hadoop基础-MapReduce的工作原理第二弹

    Hadoop基础-MapReduce的工作原理第二弹 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Split(切片)  1>.MapReduce处理的单位(切片) 想必 ...