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. Java 工厂方法模式

    在工厂对象上调用创建方法,生成接口的某个实现的对象 通过这种方式,接口与实现分离 方法接口 /** * 方法接口 */ public interface Service { void method1( ...

  2. python updata与深拷贝

    当使用updata更新字典时候 被动更新和主动更新的效果是一样的 意思是说 里面会添加值 而不是保持不变 当将一个字典每次新增到列表时候 要用深拷贝 因为直接append的话 会修改将最新的变量的值同 ...

  3. Eclipse 的控制台console乱码

    乱码!Eclipse 的控制台console必须用GBK编码. Eclipse 的控制台必须用GBK编码.所以条件1和条件4必须同时满足否则运行的还是乱码.才能保证不是乱码. 条件1,Window   ...

  4. (转)Maven学习总结(九)——使用Nexus搭建Maven私服

    孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(九)——使用Nexus搭建Maven私服 一.搭建nexus私服的目的 为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目 ...

  5. easyui form 提交问题,纠结了很久,有点诡异

    http://www.iteye.com/problems/131602 form 提交,后台运行有时慢,页面就不等后台数据的响应,直接alert("服务器维护中,请稍后再试!") ...

  6. 关于ehcache配置中timeToLiveSeconds和timeToIdleSeconds的区别

    在使用ehcache框架时,timeToLiveSeconds和timeToIdleSeconds这两个属性容易混淆,今天有空就记录一下,以防之后又忘记了. 首先来说明一下这两个属性分别有什么作用:( ...

  7. css3背景颜色渐变属性 兼容性测试基础环境为:windows系统;IE6.0+, Firefox4.0+, Chrome4.0+, Safari4.0+, Opera15.0+

    css3背景颜色渐变属性 兼容性测试基础环境为:windows系统:IE6.0+, Firefox4.0+, Chrome4.0+, Safari4.0+, Opera15.0+ 语法: <li ...

  8. Oracle之xml的增删改查操作

    工作之余,总结一下xml操作的一些方法和心得! tip: xmltype函数是将clob字段转成xmltype类型的函数,若字段本身为xmltype类型则不需要引用xmltype()函数 同名标签用数 ...

  9. Java中多个异常的捕获顺序(多个catch)

    import java.io.IOException; public class ExceptionTryCatchTest { public void doSomething() throws IO ...

  10. AngularJs -- 指令简介

    整理书籍内容(QQ:283125476 发布者:M [重在分享,有建议请联系->QQ号]) HTML文档 HTML文档是一个纯文本文件,包含了页面的结构以及由CSS定义的样式,或者可以操作样式的 ...