概述
Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。
主要应用场景是:日志收集系统和消息系统。
Kafka主要设计目标如下:
以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。
高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。
支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。
同时支持离线数据处理和实时数据处理。
Scale out:支持在线水平扩展
系统更新
1 2 3
| sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk
|
安装 zookeeper
1 2 3 4 5 6 7
| wget http://apache.fayea.com/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar xf zookeeper-3.4.10.tar.gz -C /usr/local cd /usr/local/zookeeper-3.4.10/conf cp -pv zoo_sample.cfg zoo.cfg vim /usr/local/zookeeper/conf/zoo.cfg mkdir -p /data/zookeeper
|
安装 kafka
1 2 3 4 5 6 7
| wget http://www-eu.apache.org/dist/kafka/0.10.2.1/kafka_2.12-0.10.2.1.tgz tar xf kafka_2.12-0.10.2.1.tgz -C /usr/local cd /usr/local && ln -s kafka_2.12-0.10.2.1 kafka
vim /usr/local/kafka/config/server.properties
nohup bin/kafka-server-start.sh config/server.properties &
|
安装 supervisor 守护进程
1 2 3 4 5 6 7 8 9 10
| python get-pip.py pip install setuptools pip install -U setuptools pip install supervisor echo_supervisord_conf > /etc/supervisord.conf mkdir /etc/supervisor sed -i 's#\;\[include\]#\[include\]#' /etc/supervisord.conf sed -i '/relative\/directory/a\files = /etc/supervisor/*.ini' /etc/supervisord.conf mkdir /data/httplogs supervisord -c /etc/supervisord.conf
|
kafka 启动
1 2
| ./kafka-console-producer.sh --broker-list 10.10.32.92:9092 --topic log ./kafka-topics.sh --create --zookeeper 10.10.32.92:2181 --replication-factor 1 --partitions 1 --topic log
|
swap 关闭
1 2 3
| echo "vm.swappiness = 1" >> /etc/sysctl.conf sysctl vm.swappiness=1 swapoff -a && swapon -a
|
安装 elasticsearch
1 2 3 4 5 6 7 8 9
| wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - sudo apt-get install apt-transport-http echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list sudo apt-get update && sudo apt-get install elasticsearch cp -pv /etc/elasticsearch/elasticsearch.yml{,.default} vim /etc/elasticsearch/elasticsearch.yml mkdir -m 755 -p /data/elasticsearch/{elasticsearch_logs,elasticsearch_data} chown -R elasticsearch:elasticsearch /data/elasticsearch /etc/init.d/elasticsearch start
|
安装 node
1 2 3 4 5
| wget https://nodejs.org/dist/v6.11.2/node-v6.11.2-linux-x64.tar.xz tar xvf node-v6.11.2-linux-x64.tar.xz mv node-v6.11.2-linux-x64 /usr/local/ cd /usr/local/ && ln -s node-v6.11.2-linux-x64/ node chown root:root -R node-v6.11.2-linux-x64/
|