Apache Kafka-0.8.1.1源码编译
2015-12-09 16:43
531 查看
经过近一个月时间,终于差不多将之前在Flume0.9.4上面编写的source、sink等插件迁移到Flume-ng1.5.0,包括了将Flume
0.9.4上面的TailSource、TailDirSource等插件的迁移(当然,我们加入了许多新的功能,比如故障恢复、日志的断点续传、按块发送日志以及每个一定的时间轮询发送日志而不是等一个日志发送完才发送另外一个日志)。现在我们需要将Flume-ng1.5.0和最新的Kafka-0.8.1.1进行整合,今天这篇文章主要是说如何编译Kafka-0.8.1.1源码。
在讲述如何编译Kafka-0.8.1.1源码之前,我们先来了解一下什么是Kafka:
Kafkaisadistributed,partitioned,replicatedcommitlogservice.Itprovidesthefunctionalityofamessagingsystem,butwithauniquedesign.(Kafka是一个分布式的、可分区的(partitioned)、基于备份的(replicated)和commit-log存储的服务.。它提供了类似于messagingsystem的特性,但是在设计实现上完全不同)。kafka是一种高吞吐量的分布式发布订阅消息系统,它有如下特性:
(1)、通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
(2)、高吞吐量:即使是非常普通的硬件kafka也可以支持每秒数十万的消息。
(3)、支持通过kafka服务器和消费机集群来分区消息。
(4)、支持Hadoop并行数据加载。
官方文档中关于kafka分布式订阅架构如下图:
好了,更多关于Kafka的介绍可以去http://kafka.apache.org/里面查看。现在我们正入正题,说说如何编译Kafka-0.8.1.1,我们可以用Kafka里面自带的脚本进行编译;我们也可以用sbt进行编译,sbt编译有点麻烦,我将在文章的后面进行介绍。
一、用Kafka里面自带的脚本进行编译
下载好了Kafka源码,里面自带了一个gradlew的脚本,我们可以利用这个编译Kafka源码:
运行上面的命令进行编译将会出现以下的异常信息:
这是一个bug(https://issues.apache.org/jira/browse/KAFKA-1297),可以用下面的命令进行编译
这时候将会编译成功(在编译的过程中将会出现很多的)。在编译的过程中,我们也可以指定对应的Scala版本进行编译:
编译完之后将会在core/build/distributions/里面生成kafka_2.10-0.8.1.1.tgz文件,这个和从网上下载的一样,可以直接用。
二、利用sbt进行编译
我们同样可以用sbt来编译Kafka,步骤如下:
对于Kafka0.8及以上版本还需要运行以下的命令:
当然,我们也可以在sbt里面指定scala的版本:
尊重原创,转载请注明:转载自过往记忆(http://www.iteblog.com/)
本文链接地址:《ApacheKafka-0.8.1.1源码编译》(http://www.iteblog.com/archives/1044)
0.9.4上面的TailSource、TailDirSource等插件的迁移(当然,我们加入了许多新的功能,比如故障恢复、日志的断点续传、按块发送日志以及每个一定的时间轮询发送日志而不是等一个日志发送完才发送另外一个日志)。现在我们需要将Flume-ng1.5.0和最新的
在讲述如何编译Kafka-0.8.1.1源码之前,我们先来了解一下什么是Kafka:
Kafkaisadistributed,partitioned,replicatedcommitlogservice.Itprovidesthefunctionalityofamessagingsystem,butwithauniquedesign.(Kafka是一个分布式的、可分区的(partitioned)、基于备份的(replicated)和commit-log存储的服务.。它提供了类似于messagingsystem的特性,但是在设计实现上完全不同)。kafka是一种高吞吐量的分布式发布订阅消息系统,它有如下特性:
(1)、通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
(2)、高吞吐量:即使是非常普通的硬件kafka也可以支持每秒数十万的消息。
(3)、支持通过kafka服务器和消费机集群来分区消息。
(4)、支持Hadoop并行数据加载。
官方文档中关于kafka分布式订阅架构如下图:
好了,更多关于Kafka的介绍可以去http://kafka.apache.org/里面查看。现在我们正入正题,说说如何编译Kafka-0.8.1.1,我们可以用Kafka里面自带的脚本进行编译;我们也可以用sbt进行编译,sbt编译有点麻烦,我将在文章的后面进行介绍。
一、用Kafka里面自带的脚本进行编译
下载好了Kafka源码,里面自带了一个gradlew的脚本,我们可以利用这个编译Kafka源码:
1 | # wgethttp: //mirror.bit.edu.cn/apache/kafka/0.8.1.1/kafka-0.8.1.1-src.tgz |
2 | # tar-zxfkafka- 0.8 . 1.1 -src.tgz |
3 | # cdkafka- 0.8 . 1.1 -src |
4 | # ./gradlewreleaseTarGz |
01 | :core:signArchives FAILED |
02 |
03 | FAILURE: Buildfailedwithanexception. |
04 |
05 | * Whatwentwrong: |
06 | Execution failed for task ':core:signArchives' . |
07 | > ':core:signArchives' because it |
08 | has |
09 |
10 | * Try: |
11 | Run |
12 | --info |
13 |
14 | BUILD FAILED |
1 | ./gradlew |
1 | ./gradlew -PscalaVersion= 2.10 . 3 releaseTarGz |
二、利用sbt进行编译
我们同样可以用sbt来编译Kafka,步骤如下:
01 | # //git-wip-us.apache.org/repos/asf/kafka.git |
02 | # |
03 | # 0.8 remotes/origin/ 0.8 |
04 | # |
05 | [info] 3.1 . 1 !core.jar (2243ms) |
06 | [info] //repo1.maven.org/maven2/ant/ant/1.6.5/ant-1.6.5.jar ... |
07 | [info] 1.6 . 5 !ant.jar (1150ms) |
08 | [info] |
09 | [info] 0.20 . 2 ... |
10 | [info] |
11 | [info] 2.2 . 0 ... |
12 | [info] |
13 | [info] 2.2 . 0 ... |
14 | [info] |
15 | [success] 168 s, 18 , 2014 6 : 51 : 38 PM |
16 |
17 | # package |
18 | [info] |
19 | Getting 2.8 . 0 ... |
20 | :: |
21 | confs: [ default ] |
22 | 3 artifacts 0 already |
23 | [success] 1 s, 18 , 2014 6 : 52 : 37 PM |
01 | # package -dependency |
02 | [info] |
03 | [warn] |
04 | same 'sbt-plugin-releases' . |
05 | resolvers |
06 | [info] |
07 | [warn] |
08 | [info] 1.7 . 2 .jar |
09 | [info] 2.2 . 0 .jar |
10 | [info] |
11 | [info] |
12 | [info] 1.6 . 4 .jar |
13 | [info] 2.2 . 0 .jar |
14 | [info] 1.0 . 4.1 .jar |
15 | [info] 3.3 . 4 .jar |
16 | [info] 1.2 . 15 .jar |
17 | [info] 0.3 .jar |
18 | [info] 3.2 .jar |
19 | [warn] 'META-INF/NOTICE' with 'rename' |
20 | [warn] 'org/xerial/snappy/native/README' with 'rename' |
21 | [warn] 'META-INF/maven/org.xerial.snappy/snappy-java/LICENSE' |
22 | with 'rename' |
23 | [warn] 'LICENSE.txt' with 'rename' |
24 | [warn] 'META-INF/LICENSE' with 'rename' |
25 | [warn] 'META-INF/MANIFEST.MF' with 'discard' |
26 | [warn] 'discard' was |
27 | [warn] 'rename' was 5 files |
28 | [success] 3 s, 18 , 2014 6 : 53 : 41 PM |
01 | <!-- |
02 | User: 过往记忆 |
03 | Date: 14 - 6 - 18 |
04 | Time: 20 : 20 |
05 | bolg: http: //www.iteblog.com |
06 | 本文地址:http: //www.iteblog.com/archives/1044 |
07 | 过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货 |
08 | 过往记忆博客微信公共帐号:iteblog_hadoop |
09 | --> |
10 | sbt "++2.10.3 update" |
11 | sbt "++2.10.3 package" |
12 | sbt "++2.10.3 assembly-package-dependency" |
本文链接地址:
相关文章推荐
- apache 实现备份服务器-热备份(hot standby)
- How To Install Apache Kafka on Ubuntu 14.04
- ubuntu apache 执行 cgi
- Apache禁止目录列表
- org.apache.storm.shade.org.apache.zookeeper.KeeperException$NodeExistsException
- CentOS yum安装Apache+php+Mysql+phpMyAdmin
- Django项目用mod_wsgi部署到Apache2, Ubuntu 14.04
- LAMP(Apache MySQL PHP)一键安装包教程(CentOS 5 32bit)
- linux下手动安装apache详解
- 解决“org.apache.hadoop.security.AccessControlException”
- Windows XP下 安装和配置Apache2.2.22服务器+PHP5+Mysql5
- Apache JMeter中正则表达式提取器的使用方法
- Windows下搭建php7+Apache2.4
- 看我学习Apache+php+wordpress+phpMyAdmin的搭配配置
- LAMP 2.4 Apache访问控制
- apache+weblogic虚拟主机配置
- LAMP 2.3 Apache配置防盗链
- LAMP 2.2 Apache配置静态缓存
- LAMP 2.1Apache不记录指定文件类型日志
- Ubuntu上apache多端口配置虚拟主机的方法