作者:过往记忆 | 新浪微博:左手牵右手TEL | 
能够转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
博客地址:http://www.iteblog.com/
文章标题:《Apache Kafka-0.8.1.1源代码编译》
本文链接:http://www.iteblog.com/archives/1044
Hadoop、Hive、Hbase、Flume等QQ交流群:138615359(已满),请增加新群:149892483
本博客的微信公共帐号为:iteblog_hadoop。欢迎大家关注。
假设你认为本文对你有帮助,最好还是分享一次,你的每次支持,都是对我最大的鼓舞

v=7314c5f6.png); background-position: 0px -52px; background-repeat: no-repeat;">

v=7314c5f6.png); background-position: 0px -104px; background-repeat: no-repeat;">

v=7314c5f6.png); background-position: 0px -2756px; background-repeat: no-repeat;">

v=7314c5f6.png); background-position: 0px -2080px; background-repeat: no-repeat;">

v=7314c5f6.png); background-position: 0px -3016px; background-repeat: no-repeat;">


    欢迎关注微信公共帐号

  经过近一个月时间。最终几乎相同将之前在Flume 0.9.4上面编写的source、sink等插件迁移到Flume-ng 1.5.0,包含了将Flume 0.9.4上面的TailSource、TailDirSource等插件的迁移(当然,我们增加了很多新的功能,比方故障恢复、日志的断点续传、按块发送日志以及每一个一定的时间轮询发送日志而不是等一个日志发送完才发送另外一个日志)。

如今我们须要将Flume-ng 1.5.0和最新的Kafka-0.8.1.1进行整合。今天这篇文章主要是说怎样编译Kafka-0.8.1.1源代码。
  在讲述怎样编译Kafka-0.8.1.1源代码之前,我们先来了解一下什么是Kafka:
  Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.(Kafka是一个分布式的、可分区的(partitioned)、基于备份的(replicated)和commit-log存储的服务.。它提供了相似于messaging system的特性,可是在设计实现上全然不同)。

kafka是一种高吞吐量的分布式公布订阅消息系统,它有例如以下特性:
  (1)、通过O(1)的磁盘数据结构提供消息的持久化。这样的结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。

  (2)、高吞吐量:即使是非常普通的硬件kafka也能够支持每秒数十万的消息。
  (3)、支持通过kafkaserver和消费机集群来分区消息。
  (4)、支持Hadoop并行数据载入。
  官方文档中关于kafka分布式订阅架构例如以下图:

欢迎关注微信公共帐号

  好了。很多其它关于Kafka的介绍能够去http://kafka.apache.org/里面查看。如今我们正入正题。说说怎样编译 Kafka-0.8.1.1,我们能够用Kafka里面自带的脚本进行编译;我们也能够用sbt进行编译。sbt编译有点麻烦,我将在文章的后面进行介绍。

一、用Kafka里面自带的脚本进行编译

  下载好了Kafka源代码,里面自带了一个gradlew的脚本。我们能够利用这个编译Kafka源代码:

1 # wget http://mirror.bit.edu.cn/apache/kafka/0.8.1.1/kafka-0.8.1.1-src.tgz
2 # tar -zxf kafka-0.8.1.1-src.tgz
3 # cd kafka-0.8.1.1-src
4 # ./gradlew releaseTarGz

执行上面的命令进行编译将会出现下面的异常信息:

01 :core:signArchives FAILED
02  
03 FAILURE: Build failed with an exception.
04  
05 * What went wrong:
06 Execution failed for task ':core:signArchives'.
07 > Cannot perform signing task ':core:signArchives' because it
08  has no configured signatory
09  
10 * Try:
11 Run with --stacktrace option to get the stack trace. Run with
12 --info or --debug option to get more log output.
13  
14 BUILD FAILED

这是一个bug(https://issues.apache.org/jira/browse/KAFKA-1297)。能够用下面的命令进行编译

1 ./gradlew releaseTarGzAll -x signArchives

这时候将会编译成功(在编译的过程中将会出现非常多的)。

在编译的过程中,我们也能够指定相应的Scala版本号进行编译:

1 ./gradlew -PscalaVersion=2.10.3 releaseTarGz -x signArchives

编译完之后将会在core/build/distributions/里面生成kafka_2.10-0.8.1.1.tgz文件。这个和从网上下载的一样。能够直接用。

二、利用sbt进行编译

  我们相同能够用sbt来编译Kafka,过程例如以下:

01 # git clone https://git-wip-us.apache.org/repos/asf/kafka.git
02 # cd kafka
03 # git checkout -b 0.8 remotes/origin/0.8
04 # ./sbt update
05 [info]  [SUCCESSFUL ] org.eclipse.jdt#core;3.1.1!core.jar (2243ms)
06 [info] downloading http://repo1.maven.org/maven2/ant/ant/1.6.5/ant-1.6.5.jar ...
07 [info]  [SUCCESSFUL ] ant#ant;1.6.5!ant.jar (1150ms)
08 [info] Done updating.
09 [info] Resolving org.apache.hadoop#hadoop-core;0.20.2 ...
10 [info] Done updating.
11 [info] Resolving com.yammer.metrics#metrics-annotation;2.2.0 ...
12 [info] Done updating.
13 [info] Resolving com.yammer.metrics#metrics-annotation;2.2.0 ...
14 [info] Done updating.
15 [success] Total time: 168 s, completed Jun 18, 2014 6:51:38 PM
16  
17 # ./sbt package
18 [info] Set current project to Kafka (in build file:/export1/spark/kafka/)
19 Getting Scala 2.8.0 ...
20 :: retrieving :: org.scala-sbt#boot-scala
21     confs: [default]
22     3 artifacts copied, 0 already retrieved (14544kB/27ms)
23 [success] Total time: 1 s, completed Jun 18, 2014 6:52:37 PM

对于Kafka 0.8及以上版本号还须要执行下面的命令:

01 # ./sbt assembly-package-dependency
02 [info] Loading project definition from /export1/spark/kafka/project
03 [warn] Multiple resolvers having different access mechanism configured with
04 same name 'sbt-plugin-releases'. To avoid conflict, Remove duplicate project
05 resolvers (`resolvers`) or rename publishing resolver (`publishTo`).
06 [info] Set current project to Kafka (in build file:/export1/spark/kafka/)
07 [warn] Credentials file /home/wyp/.m2/.credentials does not exist
08 [info] Including slf4j-api-1.7.2.jar
09 [info] Including metrics-annotation-2.2.0.jar
10 [info] Including scala-compiler.jar
11 [info] Including scala-library.jar
12 [info] Including slf4j-simple-1.6.4.jar
13 [info] Including metrics-core-2.2.0.jar
14 [info] Including snappy-java-1.0.4.1.jar
15 [info] Including zookeeper-3.3.4.jar
16 [info] Including log4j-1.2.15.jar
17 [info] Including zkclient-0.3.jar
18 [info] Including jopt-simple-3.2.jar
19 [warn] Merging 'META-INF/NOTICE' with strategy 'rename'
20 [warn] Merging 'org/xerial/snappy/native/README' with strategy 'rename'
21 [warn] Merging 'META-INF/maven/org.xerial.snappy/snappy-java/LICENSE'
22 with strategy 'rename'
23 [warn] Merging 'LICENSE.txt' with strategy 'rename'
24 [warn] Merging 'META-INF/LICENSE' with strategy 'rename'
25 [warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
26 [warn] Strategy 'discard' was applied to a file
27 [warn] Strategy 'rename' was applied to 5 files
28 [success] Total time: 3 s, completed Jun 18, 2014 6:53:41 PM

当然,我们也能够在sbt里面指定scala的版本号:

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 Kafka-0.8.1.1源代码编译》:http://www.iteblog.com/archives/1044,过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客。大量的干货.过往记忆博客微信公共帐号:iteblog_hadoop本博客文章除特别声明,所有都是原创。

尊重原创,转载请注明: 转载自过往记忆(http://www.iteblog.com/)
本文链接地址: 《Apache Kafka-0.8.1.1源代码编译》(http://www.iteblog.com/archives/1044)
E-mail:wyphao.2007@163.com    

Apache Kafka-0.8.1.1源代码编译的更多相关文章

  1. Apache Kafka 0.11版本新功能简介

    Apache Kafka近日推出0.11版本.这是一个里程碑式的大版本,特别是Kafka从这个版本开始支持“exactly-once”语义(下称EOS, exactly-once semantics) ...

  2. Apache Kafka 0.9消费者客户端

    当Kafka最初创建时,它与Scala生产者和消费者客户端一起运送.随着时间的推移,我们开始意识到这些API的许多限制.例如,我们有一个“高级”消费者API,它支持消费者组并处理故障转移,但不支持许多 ...

  3. Kafka 0.8 sever:源代码High level分析

    本文主要介绍了Kafka High level的代码架构和主要的类. 这张图是0.8版本的架构 Boker 架构 1 network layer Kafka使用NIO自己实现了网络层的代码, 而不是采 ...

  4. 【转载】Apache Kafka监控之Kafka Web Console

    http://www.iteblog.com/archives/1084 Kafka Web Console是一款开源的系统,源码的地址在https://github.com/claudemamo/k ...

  5. Apache Kafka监控之Kafka Web Console

    Kafka Web Console:是一款开源的系统,源码的地址在https://github.com/claudemamo/kafka-web-console中.Kafka Web Console也 ...

  6. Released Mocked Streams for Apache Kafka

    Kafka Streams is a de­ploy­ment-ag­nos­tic stream pro­cess­ing li­brary writ­ten in Java. Even thoug ...

  7. Spring for Apache Kafka

    官方文档详见:http://docs.spring.io/spring-kafka/docs/1.0.2.RELEASE/reference/htmlsingle/ Authors Gary Russ ...

  8. Apache Kafka开发入门指南(2)

    Apache Kafka目标是统一离线和在线处理,与Flume和Scribe相比较,Kafka在处理活动流数据方面更具优势.但是从架构的视野来看,Kafka与传统的消息系统(例如ActiveMQ或Ra ...

  9. How To Install Apache Kafka on Ubuntu 14.04

    打算学习kafka ,接触一些新的知识.加油!!! 参考:https://www.digitalocean.com/community/tutorials/how-to-install-apache- ...

随机推荐

  1. CSS——改变浏览器滚动条样式

    https://www.cnblogs.com/sun-rain/p/5789417.html

  2. VC++代码转换为QT代码问题总结

    一边开发一边总结......  QQ937113547

  3. CAD控件:COM接口实现自定义实体

    1. 实现步骤: 3 1. 实现步骤: 参考例子 :Src\MxDraw5.2\samples\ie\iedemoTest.htm 1) 增加自定义实体对象 调用DrawCustomEntity函数, ...

  4. 梦想CAD控件安卓参数绘图

    在CAD绘图中,参数化绘图可以帮助我们极大缩短设计时间,用户可以按照设计意图控制绘图对象,这样即使对象发生了变化,具体的关系和测量数据仍将保持不变,能够对几何图形和标注进行控制,可以帮助用户应对耗时的 ...

  5. Java基础(七)--Exception异常处理

    发现错误的理想时机是程序运行之前(编译期),然后不太现实,很多异常无法被发现(特别是业务上的数据),需要在运行时解决. 错误恢复机制保证代码健壮性的方式,异常处理在程序中很常见,也是必须的,必须考虑有 ...

  6. 第二节:1_C#中的委托的使用和讲解(转)

    C# 中的委托 引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容 ...

  7. 【LeetCode】7、Reverse Integer(整数反转)

    题目等级:Easy 题目描述: Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 O ...

  8. Navicat for MySQL(Ubuntu)过期解决方法

    推荐购买正版软件,尊重版权  [官网在这里] Navicat for MySQL(Ubuntu系统)免费版试用过期解决方法: Step1. 直接删除 /home目录下的  .navicat文件夹(64 ...

  9. TestNG忽略测试

    用@Test(enabled = false) 声明需要被忽略执行的测试方法 package com.janson; import org.testng.annotations.Test; publi ...

  10. Sublime 添加右键快捷(其他软件同样方法)

    1.进入注册表 开始-->运行-->regedit(或直接win+r,输入regedit)-->回车 2.进入shell目录 [HKEY_CLASSES_ROOT\*\shell] ...